2a4d62aaf8bbb9c864042eabbc65c23a1eba911c
[WebKit-https.git] / Source / WebInspectorUI / UserInterface / Models / CSSKeywordCompletions.js
1 /*
2  * Copyright (C) 2011 Google Inc. All rights reserved.
3  * Copyright (C) 2013 Apple Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  *     * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *     * Redistributions in binary form must reproduce the above
12  * copyright notice, this list of conditions and the following disclaimer
13  * in the documentation and/or other materials provided with the
14  * distribution.
15  *     * Neither the name of Google Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31
32 WI.CSSKeywordCompletions = {};
33
34 WI.CSSKeywordCompletions.forProperty = function(propertyName)
35 {
36     let acceptedKeywords = ["initial", "unset", "revert", "var()", "env()"];
37
38     function addKeywordsForName(name) {
39         let isNotPrefixed = name.charAt(0) !== "-";
40
41         if (name in WI.CSSKeywordCompletions._propertyKeywordMap)
42             acceptedKeywords = acceptedKeywords.concat(WI.CSSKeywordCompletions._propertyKeywordMap[name]);
43         else if (isNotPrefixed && ("-webkit-" + name) in WI.CSSKeywordCompletions._propertyKeywordMap)
44             acceptedKeywords = acceptedKeywords.concat(WI.CSSKeywordCompletions._propertyKeywordMap["-webkit-" + name]);
45
46         if (WI.CSSKeywordCompletions.isColorAwareProperty(name))
47             acceptedKeywords = acceptedKeywords.concat(WI.CSSKeywordCompletions._colors);
48
49         // Only suggest "inherit" on inheritable properties even though it is valid on all properties.
50         if (WI.CSSKeywordCompletions.InheritedProperties.has(name))
51             acceptedKeywords.push("inherit");
52         else if (isNotPrefixed && WI.CSSKeywordCompletions.InheritedProperties.has("-webkit-" + name))
53             acceptedKeywords.push("inherit");
54     }
55
56     addKeywordsForName(propertyName);
57
58     let unaliasedName = WI.CSSKeywordCompletions.PropertyNameForAlias.get(propertyName);
59     if (unaliasedName)
60         addKeywordsForName(unaliasedName);
61
62     let longhandNames = WI.CSSKeywordCompletions.LonghandNamesForShorthandProperty.get(propertyName);
63     if (longhandNames) {
64         for (let longhandName of longhandNames)
65             addKeywordsForName(longhandName);
66     }
67
68     if (acceptedKeywords.includes(WI.CSSKeywordCompletions.AllPropertyNamesPlaceholder) && WI.CSSCompletions.cssNameCompletions) {
69         acceptedKeywords.remove(WI.CSSKeywordCompletions.AllPropertyNamesPlaceholder);
70         acceptedKeywords = acceptedKeywords.concat(WI.CSSCompletions.cssNameCompletions.values);
71     }
72
73     return new WI.CSSCompletions(Array.from(new Set(acceptedKeywords)), true);
74 };
75
76 WI.CSSKeywordCompletions.isColorAwareProperty = function(name)
77 {
78     if (name in WI.CSSKeywordCompletions._colorAwareProperties)
79         return true;
80
81     let isNotPrefixed = name.charAt(0) !== "-";
82     if (isNotPrefixed && ("-webkit-" + name) in WI.CSSKeywordCompletions._colorAwareProperties)
83         return true;
84
85     if (name.endsWith("color"))
86         return true;
87
88     return false;
89 };
90
91 WI.CSSKeywordCompletions.forFunction = function(functionName)
92 {
93     let suggestions = ["var()"];
94
95     if (functionName === "var")
96         suggestions = [];
97     else if (functionName === "calc" || functionName === "min" || functionName === "max")
98         suggestions = suggestions.concat(["calc()", "min()", "max()"]);
99     else if (functionName === "env")
100         suggestions = suggestions.concat(["safe-area-inset-top", "safe-area-inset-right", "safe-area-inset-bottom", "safe-area-inset-left"]);
101     else if (functionName === "image-set")
102         suggestions.push("url()");
103     else if (functionName === "repeat")
104         suggestions = suggestions.concat(["auto", "auto-fill", "auto-fit", "min-content", "max-content"]);
105     else if (functionName.endsWith("gradient")) {
106         suggestions = suggestions.concat(["to", "left", "right", "top", "bottom"]);
107         suggestions = suggestions.concat(WI.CSSKeywordCompletions._colors);
108     }
109
110     return new WI.CSSCompletions(suggestions, true);
111 };
112
113 WI.CSSKeywordCompletions.addCustomCompletions = function(properties)
114 {
115     for (var property of properties) {
116         if (property.aliases) {
117             for (let alias of property.aliases)
118                 WI.CSSKeywordCompletions.PropertyNameForAlias.set(alias, property.name);
119         }
120
121         if (property.values)
122             WI.CSSKeywordCompletions.addPropertyCompletionValues(property.name, property.values);
123
124         if (property.inherited)
125             WI.CSSKeywordCompletions.InheritedProperties.add(property.name);
126
127         if (property.longhands)
128             WI.CSSKeywordCompletions.LonghandNamesForShorthandProperty.set(property.name, property.longhands);
129     }
130 };
131
132 WI.CSSKeywordCompletions.addPropertyCompletionValues = function(propertyName, newValues)
133 {
134     var existingValues = WI.CSSKeywordCompletions._propertyKeywordMap[propertyName];
135     if (!existingValues) {
136         WI.CSSKeywordCompletions._propertyKeywordMap[propertyName] = newValues;
137         return;
138     }
139
140     var union = new Set;
141     for (var value of existingValues)
142         union.add(value);
143     for (var value of newValues)
144         union.add(value);
145
146     WI.CSSKeywordCompletions._propertyKeywordMap[propertyName] = [...union.values()];
147 };
148
149 WI.CSSKeywordCompletions.AllPropertyNamesPlaceholder = "__all-properties__";
150
151 // Populated by CSS.getSupportedCSSProperties.
152 WI.CSSKeywordCompletions.PropertyNameForAlias = new Map;
153 WI.CSSKeywordCompletions.LonghandNamesForShorthandProperty = new Map;
154
155 WI.CSSKeywordCompletions.InheritedProperties = new Set([
156     // Compatibility (iOS 12): `inherited` didn't exist on `CSSPropertyInfo`
157     "-apple-color-filter",
158     "-webkit-animation-trigger",
159     "-webkit-aspect-ratio",
160     "-webkit-border-horizontal-spacing",
161     "-webkit-border-vertical-spacing",
162     "-webkit-box-direction",
163     "-webkit-cursor-visibility",
164     "-webkit-font-kerning",
165     "-webkit-font-smoothing",
166     "-webkit-hyphenate-character",
167     "-webkit-hyphenate-limit-after",
168     "-webkit-hyphenate-limit-before",
169     "-webkit-hyphenate-limit-lines",
170     "-webkit-hyphens",
171     "-webkit-line-align",
172     "-webkit-line-break",
173     "-webkit-line-box-contain",
174     "-webkit-line-grid",
175     "-webkit-line-snap",
176     "-webkit-locale",
177     "-webkit-nbsp-mode",
178     "-webkit-overflow-scrolling",
179     "-webkit-print-color-adjust",
180     "-webkit-rtl-ordering",
181     "-webkit-ruby-position",
182     "-webkit-text-align-last",
183     "-webkit-text-combine",
184     "-webkit-text-decoration-skip",
185     "-webkit-text-decorations-in-effect",
186     "-webkit-text-emphasis",
187     "-webkit-text-emphasis-color",
188     "-webkit-text-emphasis-position",
189     "-webkit-text-emphasis-style",
190     "-webkit-text-fill-color",
191     "-webkit-text-justify",
192     "-webkit-text-orientation",
193     "-webkit-text-security",
194     "-webkit-text-size-adjust",
195     "-webkit-text-stroke",
196     "-webkit-text-stroke-color",
197     "-webkit-text-stroke-width",
198     "-webkit-text-underline-position",
199     "-webkit-text-zoom",
200     "-webkit-touch-callout",
201     "-webkit-user-modify",
202     "-webkit-user-select",
203     "border-collapse",
204     "border-spacing",
205     "caption-side",
206     "caret-color",
207     "clip-rule",
208     "color",
209     "color-interpolation",
210     "color-interpolation-filters",
211     "color-rendering",
212     "cursor",
213     "direction",
214     "empty-cells",
215     "fill",
216     "fill-opacity",
217     "fill-rule",
218     "font",
219     "font-family",
220     "font-feature-settings",
221     "font-optical-sizing",
222     "font-size",
223     "font-stretch",
224     "font-style",
225     "font-synthesis",
226     "font-variant",
227     "font-variant-alternates",
228     "font-variant-caps",
229     "font-variant-east-asian",
230     "font-variant-ligatures",
231     "font-variant-numeric",
232     "font-variant-position",
233     "font-variation-settings",
234     "font-weight",
235     "glyph-orientation-horizontal",
236     "glyph-orientation-vertical",
237     "hanging-punctuation",
238     "image-orientation",
239     "image-rendering",
240     "image-resolution",
241     "kerning",
242     "letter-spacing",
243     "line-break",
244     "line-height",
245     "list-style",
246     "list-style-image",
247     "list-style-position",
248     "list-style-type",
249     "marker",
250     "marker-end",
251     "marker-mid",
252     "marker-start",
253     "orphans",
254     "pointer-events",
255     "quotes",
256     "resize",
257     "shape-rendering",
258     "speak-as",
259     "stroke",
260     "stroke-color",
261     "stroke-dasharray",
262     "stroke-dashoffset",
263     "stroke-linecap",
264     "stroke-linejoin",
265     "stroke-miterlimit",
266     "stroke-opacity",
267     "stroke-width",
268     "tab-size",
269     "text-align",
270     "text-anchor",
271     "text-indent",
272     "text-rendering",
273     "text-shadow",
274     "text-transform",
275     "visibility",
276     "white-space",
277     "widows",
278     "word-break",
279     "word-spacing",
280     "word-wrap",
281     "writing-mode",
282 ]);
283
284 WI.CSSKeywordCompletions._colors = [
285     "aqua", "black", "blue", "fuchsia", "gray", "green", "lime", "maroon", "navy", "olive", "orange", "purple", "red",
286     "silver", "teal", "white", "yellow", "transparent", "currentcolor", "grey", "aliceblue", "antiquewhite",
287     "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blueviolet", "brown", "burlywood", "cadetblue",
288     "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan",
289     "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange",
290     "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey",
291     "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick",
292     "floralwhite", "forestgreen", "gainsboro", "ghostwhite", "gold", "goldenrod", "greenyellow", "honeydew", "hotpink",
293     "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue",
294     "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink",
295     "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow",
296     "limegreen", "linen", "magenta", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen",
297     "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream",
298     "mistyrose", "moccasin", "navajowhite", "oldlace", "olivedrab", "orangered", "orchid", "palegoldenrod", "palegreen",
299     "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "rebeccapurple", "rosybrown",
300     "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "skyblue", "slateblue",
301     "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "thistle", "tomato", "turquoise", "violet",
302     "wheat", "whitesmoke", "yellowgreen", "rgb()", "rgba()", "hsl()", "hsla()"
303 ];
304
305 WI.CSSKeywordCompletions._colorAwareProperties = [
306     "background", "background-color", "background-image", "border", "border-color", "border-top", "border-right", "border-bottom",
307     "border-left", "border-top-color", "border-right-color", "border-bottom-color", "border-left-color", "box-shadow", "color",
308     "fill", "outline", "outline-color", "stroke", "text-line-through", "text-line-through-color", "text-overline", "text-overline-color",
309     "text-shadow", "text-underline", "text-underline-color", "-webkit-box-shadow", "-webkit-column-rule", "-webkit-column-rule-color",
310     "-webkit-text-emphasis", "-webkit-text-emphasis-color", "-webkit-text-fill-color", "-webkit-text-stroke", "-webkit-text-stroke-color",
311     "-webkit-text-decoration-color",
312
313     // iOS Properties
314     "-webkit-tap-highlight-color"
315 ].keySet();
316
317 WI.CSSKeywordCompletions._propertyKeywordMap = {
318     "content": [
319         "list-item", "close-quote", "no-close-quote", "no-open-quote", "open-quote", "attr()", "counter()", "counters()", "url()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "-webkit-canvas()", "cross-fade()", "image-set()"
320     ],
321     "list-style-image": [
322         "none", "url()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "-webkit-canvas()", "cross-fade()", "image-set()"
323     ],
324     "baseline-shift": [
325         "baseline", "sub", "super"
326     ],
327     "border-bottom-width": [
328         "medium", "thick", "thin", "calc()"
329     ],
330     "font-stretch": [
331         "normal", "wider", "narrower", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed",
332         "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"
333     ],
334     "border-left-width": [
335         "medium", "thick", "thin", "calc()"
336     ],
337     "border-top-width": [
338         "medium", "thick", "thin", "calc()"
339     ],
340     "outline-color": [
341         "invert", "-webkit-focus-ring-color"
342     ],
343     "cursor": [
344         "auto", "default", "none", "context-menu", "help", "pointer", "progress", "wait", "cell", "crosshair", "text", "vertical-text",
345         "alias", "copy", "move", "no-drop", "not-allowed", "grab", "grabbing",
346         "e-resize", "n-resize", "ne-resize", "nw-resize", "s-resize", "se-resize", "sw-resize", "w-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize",
347         "col-resize", "row-resize", "all-scroll", "zoom-in", "zoom-out",
348         "-webkit-grab", "-webkit-grabbing", "-webkit-zoom-in", "-webkit-zoom-out",
349         "url()", "image-set()"
350     ],
351     "border-width": [
352         "medium", "thick", "thin", "calc()"
353     ],
354     "size": [
355         "a3", "a4", "a5", "b4", "b5", "landscape", "ledger", "legal", "letter", "portrait"
356     ],
357     "background": [
358         "none", "url()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "-webkit-canvas()", "cross-fade()", "image-set()",
359         "repeat", "repeat-x", "repeat-y", "no-repeat", "space", "round",
360         "scroll", "fixed", "local",
361         "auto", "contain", "cover",
362         "top", "right", "left", "bottom", "center",
363         "border-box", "padding-box", "content-box"
364     ],
365     "background-image": [
366         "none", "url()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "-webkit-canvas()", "cross-fade()", "image-set()"
367     ],
368     "background-size": [
369         "auto", "contain", "cover"
370     ],
371     "background-attachment": [
372         "scroll", "fixed", "local"
373     ],
374     "background-repeat": [
375         "repeat", "repeat-x", "repeat-y", "no-repeat", "space", "round"
376     ],
377     "background-blend-mode": [
378         "normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"
379     ],
380     "background-position": [
381         "top", "right", "left", "bottom", "center"
382     ],
383     "background-origin": [
384         "border-box", "padding-box", "content-box"
385     ],
386     "background-clip": [
387         "border-box", "padding-box", "content-box"
388     ],
389     "enable-background": [
390         "accumulate", "new"
391     ],
392     "hanging-punctuation": [
393         "none", "first", "last", "allow-end", "force-end"
394     ],
395     "overflow": [
396         "hidden", "auto", "visible", "scroll", "marquee", "-webkit-paged-x", "-webkit-paged-y"
397     ],
398     "-webkit-box-reflect": [
399         "none", "left", "right", "above", "below"
400     ],
401     "margin-bottom": [
402         "auto"
403     ],
404     "font-weight": [
405         "normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900"
406     ],
407     "font-synthesis": [
408         "none", "weight", "style"
409     ],
410     "font-style": [
411         "italic", "oblique", "normal"
412     ],
413     "outline": [
414         "none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double"
415     ],
416     "font": [
417         "caption", "icon", "menu", "message-box", "small-caption", "-webkit-mini-control", "-webkit-small-control",
418         "-webkit-control", "status-bar", "italic", "oblique", "small-caps", "normal", "bold", "bolder", "lighter",
419         "100", "200", "300", "400", "500", "600", "700", "800", "900", "xx-small", "x-small", "small", "medium",
420         "large", "x-large", "xx-large", "-webkit-xxx-large", "smaller", "larger", "serif", "sans-serif", "cursive",
421         "fantasy", "monospace", "-webkit-body", "-webkit-pictograph", "-apple-system",
422         "-apple-system-headline", "-apple-system-body", "-apple-system-subheadline", "-apple-system-footnote",
423         "-apple-system-caption1", "-apple-system-caption2", "-apple-system-short-headline", "-apple-system-short-body",
424         "-apple-system-short-subheadline", "-apple-system-short-footnote", "-apple-system-short-caption1",
425         "-apple-system-tall-body", "-apple-system-title0", "-apple-system-title1", "-apple-system-title2", "-apple-system-title3", "-apple-system-title4", "system-ui"
426     ],
427     "outline-width": [
428         "medium", "thick", "thin", "calc()"
429     ],
430     "box-shadow": [
431         "none"
432     ],
433     "text-shadow": [
434         "none"
435     ],
436     "-webkit-box-shadow": [
437         "none"
438     ],
439     "border-right-width": [
440         "medium", "thick", "thin"
441     ],
442     "line-height": [
443         "normal"
444     ],
445     "counter-increment": [
446         "none"
447     ],
448     "counter-reset": [
449         "none"
450     ],
451     "page-break-after": [
452         "left", "right", "auto", "always", "avoid"
453     ],
454     "page-break-before": [
455         "left", "right", "auto", "always", "avoid"
456     ],
457     "page-break-inside": [
458         "auto", "avoid"
459     ],
460     "-webkit-column-break-after": [
461         "left", "right", "auto", "always", "avoid"
462     ],
463     "-webkit-column-break-before": [
464         "left", "right", "auto", "always", "avoid"
465     ],
466     "-webkit-column-break-inside": [
467         "auto", "avoid"
468     ],
469     "border-image": [
470         "repeat", "stretch", "url()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "-webkit-canvas()", "cross-fade()", "image-set()"
471     ],
472     "border-image-repeat": [
473         "repeat", "stretch", "space", "round"
474     ],
475     "-webkit-mask-box-image-repeat": [
476         "repeat", "stretch", "space", "round"
477     ],
478     "font-family": [
479         "serif", "sans-serif", "cursive", "fantasy", "monospace", "-webkit-body", "-webkit-pictograph",
480         "-apple-system", "-apple-system-headline", "-apple-system-body",
481         "-apple-system-subheadline", "-apple-system-footnote", "-apple-system-caption1", "-apple-system-caption2",
482         "-apple-system-short-headline", "-apple-system-short-body", "-apple-system-short-subheadline",
483         "-apple-system-short-footnote", "-apple-system-short-caption1", "-apple-system-tall-body",
484         "-apple-system-title0", "-apple-system-title1", "-apple-system-title2", "-apple-system-title3", "-apple-system-title4", "system-ui"
485     ],
486     "margin-left": [
487         "auto"
488     ],
489     "margin-top": [
490         "auto"
491     ],
492     "zoom": [
493         "normal", "document", "reset"
494     ],
495     "z-index": [
496         "auto"
497     ],
498     "width": [
499         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "calc()"
500     ],
501     "height": [
502         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "calc()"
503     ],
504     "max-width": [
505         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "none", "calc()"
506     ],
507     "min-width": [
508         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "calc()"
509     ],
510     "max-height": [
511         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "none", "calc()"
512     ],
513     "min-height": [
514         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "calc()"
515     ],
516     "letter-spacing": [
517         "normal", "calc()"
518     ],
519     "word-spacing": [
520         "normal", "calc()"
521     ],
522     "border": [
523         "none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double"
524     ],
525     "font-size": [
526         "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "-webkit-xxx-large", "smaller", "larger"
527     ],
528     "font-variant": [
529         "small-caps", "normal"
530     ],
531     "font-variant-numeric": [
532         "normal", "ordinal", "slashed-zero", "lining-nums", "oldstyle-nums", "proportional-nums", "tabular-nums",
533         "diagonal-fractions", "stacked-fractions"
534     ],
535     "vertical-align": [
536         "baseline", "middle", "sub", "super", "text-top", "text-bottom", "top", "bottom", "-webkit-baseline-middle"
537     ],
538     "text-indent": [
539         "-webkit-each-line", "-webkit-hanging"
540     ],
541     "clip": [
542         "auto", "rect()"
543     ],
544     "clip-path": [
545         "none", "url()", "circle()", "ellipse()", "inset()", "polygon()", "margin-box", "border-box", "padding-box", "content-box"
546     ],
547     "shape-outside": [
548         "none", "url()", "circle()", "ellipse()", "inset()", "polygon()", "margin-box", "border-box", "padding-box", "content-box"
549     ],
550     "orphans": [
551         "auto"
552     ],
553     "widows": [
554         "auto"
555     ],
556     "margin": [
557         "auto"
558     ],
559     "page": [
560         "auto"
561     ],
562     "perspective": [
563         "none"
564     ],
565     "perspective-origin": [
566         "none", "left", "right", "bottom", "top", "center"
567     ],
568     "-webkit-marquee-increment": [
569         "small", "large", "medium"
570     ],
571     "-webkit-marquee-repetition": [
572         "infinite"
573     ],
574     "-webkit-marquee-speed": [
575         "normal", "slow", "fast"
576     ],
577     "margin-right": [
578         "auto"
579     ],
580     "-webkit-text-emphasis": [
581         "circle", "filled", "open", "dot", "double-circle", "triangle", "sesame"
582     ],
583     "-webkit-text-emphasis-style": [
584         "circle", "filled", "open", "dot", "double-circle", "triangle", "sesame"
585     ],
586     "-webkit-text-emphasis-position": [
587         "over", "under", "left", "right"
588     ],
589     "transform": [
590         "none",
591         "scale()", "scaleX()", "scaleY()", "scale3d()", "rotate()", "rotateX()", "rotateY()", "rotateZ()", "rotate3d()", "skew()", "skewX()", "skewY()",
592         "translate()", "translateX()", "translateY()", "translateZ()", "translate3d()", "matrix()", "matrix3d()", "perspective()"
593     ],
594     "text-decoration": [
595         "none", "underline", "overline", "line-through", "blink"
596     ],
597     "-webkit-text-decorations-in-effect": [
598         "none", "underline", "overline", "line-through", "blink"
599     ],
600     "-webkit-text-decoration-line": [
601         "none", "underline", "overline", "line-through", "blink"
602     ],
603     "-webkit-text-decoration-skip": [
604         "auto", "none", "objects", "ink"
605     ],
606     "-webkit-text-underline-position": [
607         "auto", "alphabetic", "under"
608     ],
609     "transition": [
610         "none", "ease", "linear", "ease-in", "ease-out", "ease-in-out", "step-start", "step-end", "steps()", "cubic-bezier()", "spring()", "all", WI.CSSKeywordCompletions.AllPropertyNamesPlaceholder
611     ],
612     "transition-timing-function": [
613         "ease", "linear", "ease-in", "ease-out", "ease-in-out", "step-start", "step-end", "steps()", "cubic-bezier()", "spring()"
614     ],
615     "transition-property": [
616         "all", "none", WI.CSSKeywordCompletions.AllPropertyNamesPlaceholder
617     ],
618     "animation-direction": [
619         "normal", "alternate", "reverse", "alternate-reverse"
620     ],
621     "animation-fill-mode": [
622         "none", "forwards", "backwards", "both"
623     ],
624     "animation-iteration-count": [
625         "infinite"
626     ],
627     "animation-play-state": [
628         "paused", "running"
629     ],
630     "animation-timing-function": [
631         "ease", "linear", "ease-in", "ease-out", "ease-in-out", "step-start", "step-end", "steps()", "cubic-bezier()", "spring()"
632     ],
633     "align-content": [
634         "auto",
635         "baseline", "last-baseline",
636         "space-between", "space-around", "space-evenly", "stretch",
637         "center", "start", "end", "flex-start", "flex-end", "left", "right",
638         "true", "safe"
639     ],
640     "justify-content": [
641         "auto",
642         "baseline", "last-baseline", "space-between", "space-around", "space-evenly", "stretch",
643         "center", "start", "end", "flex-start", "flex-end", "left", "right",
644         "true", "safe"
645     ],
646     "align-items": [
647         "auto", "stretch",
648         "baseline", "last-baseline",
649         "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "left", "right",
650         "true", "safe"
651     ],
652     "align-self": [
653         "auto", "stretch",
654         "baseline", "last-baseline",
655         "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "left", "right",
656         "true", "safe"
657     ],
658     "justify-items": [
659         "auto", "stretch",
660         "baseline", "last-baseline",
661         "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "left", "right",
662         "true", "safe"
663     ],
664     "justify-self": [
665         "auto", "stretch",
666         "baseline", "last-baseline",
667         "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "left", "right",
668         "true", "safe"
669     ],
670     "flex-flow": [
671         "row", "row-reverse", "column", "column-reverse",
672         "nowrap", "wrap", "wrap-reverse"
673     ],
674     "flex": [
675         "none"
676     ],
677     "flex-basis": [
678         "auto"
679     ],
680     "grid": [
681         "none"
682     ],
683     "grid-area": [
684         "auto"
685     ],
686     "grid-auto-columns": [
687         "auto", "max-content", "-webkit-max-content", "min-content", "-webkit-min-content", "minmax()",
688     ],
689     "grid-auto-flow": [
690         "row", "column", "dense"
691     ],
692     "grid-auto-rows": [
693         "auto", "max-content", "-webkit-max-content", "min-content", "-webkit-min-content", "minmax()",
694     ],
695     "grid-column": [
696         "auto"
697     ],
698     "grid-column-start": [
699         "auto"
700     ],
701     "grid-column-end": [
702         "auto"
703     ],
704     "grid-row": [
705         "auto"
706     ],
707     "grid-row-start": [
708         "auto"
709     ],
710     "grid-row-end": [
711         "auto"
712     ],
713     "grid-template": [
714         "none"
715     ],
716     "grid-template-areas": [
717         "none"
718     ],
719     "grid-template-columns": [
720         "none", "auto", "max-content", "-webkit-max-content", "min-content", "-webkit-min-content", "minmax()", "repeat()"
721     ],
722     "grid-template-rows": [
723         "none", "auto", "max-content", "-webkit-max-content", "min-content", "-webkit-min-content", "minmax()", "repeat()"
724     ],
725     "scroll-snap-align": [
726         "none", "start", "center", "end"
727     ],
728     "scroll-snap-type": [
729         "none", "mandatory", "proximity", "x", "y", "inline", "block", "both"
730     ],
731     "-webkit-background-composite": [
732         "clear", "copy", "source-over", "source-in", "source-out", "source-atop", "destination-over", "destination-in", "destination-out", "destination-atop", "xor", "plus-darker", "plus-lighter"
733     ],
734     "-webkit-mask-composite": [
735         "clear", "copy", "source-over", "source-in", "source-out", "source-atop", "destination-over", "destination-in", "destination-out", "destination-atop", "xor", "plus-darker", "plus-lighter"
736     ],
737     "-webkit-text-stroke-width": [
738         "medium", "thick", "thin", "calc()"
739     ],
740     "-webkit-aspect-ratio": [
741         "auto", "from-dimensions", "from-intrinsic", "/"
742     ],
743     "filter": [
744         "none", "grayscale()", "sepia()", "saturate()", "hue-rotate()", "invert()", "opacity()", "brightness()", "contrast()", "blur()", "drop-shadow()", "custom()"
745     ],
746     "-webkit-backdrop-filter": [
747         "none", "grayscale()", "sepia()", "saturate()", "hue-rotate()", "invert()", "opacity()", "brightness()", "contrast()", "blur()", "drop-shadow()", "custom()"
748     ],
749     "-webkit-hyphenate-character": [
750         "none"
751     ],
752     "-webkit-hyphenate-limit-after": [
753         "auto"
754     ],
755     "-webkit-hyphenate-limit-before": [
756         "auto"
757     ],
758     "-webkit-hyphenate-limit-lines": [
759         "no-limit"
760     ],
761     "-webkit-line-grid": [
762         "none"
763     ],
764     "-webkit-locale": [
765         "auto"
766     ],
767     "-webkit-line-box-contain": [
768         "block", "inline", "font", "glyphs", "replaced", "inline-box", "none"
769     ],
770     "font-feature-settings": [
771         "normal"
772     ],
773     "-webkit-animation-trigger": [
774         "auto", "container-scroll()"
775     ],
776
777     // iOS Properties
778     "-webkit-text-size-adjust": [
779         "none", "auto"
780     ],
781
782     // Compatibility (iOS 12): `inherited` didn't exist on `CSSPropertyInfo`
783     "-apple-pay-button-style": [
784         "black", "white", "white-outline",
785     ],
786     "-apple-pay-button-type": [
787         "plain", "buy", "set-up", "donate", "check-out", "book", "subscribe",
788     ],
789     "-webkit-alt": [
790         "attr()",
791     ],
792     "-webkit-animation-direction": [
793         "normal", "alternate", "reverse", "alternate-reverse",
794     ],
795     "-webkit-animation-fill-mode": [
796         "none", "forwards", "backwards", "both",
797     ],
798     "-webkit-animation-iteration-count": [
799         "infinite",
800     ],
801     "-webkit-animation-play-state": [
802         "paused", "running",
803     ],
804     "-webkit-animation-timing-function": [
805         "ease", "linear", "ease-in", "ease-out", "ease-in-out", "step-start", "step-end", "steps()", "cubic-bezier()", "spring()",
806     ],
807     "-webkit-appearance": [
808         "none", "checkbox", "radio", "push-button", "square-button", "button", "button-bevel", "default-button", "inner-spin-button", "listbox", "listitem", "media-controls-background", "media-controls-dark-bar-background", "media-controls-fullscreen-background", "media-controls-light-bar-background", "media-current-time-display", "media-enter-fullscreen-button", "media-exit-fullscreen-button", "media-fullscreen-volume-slider", "media-fullscreen-volume-slider-thumb", "media-mute-button", "media-overlay-play-button", "media-play-button", "media-return-to-realtime-button", "media-rewind-button", "media-seek-back-button", "media-seek-forward-button", "media-slider", "media-sliderthumb", "media-time-remaining-display", "media-toggle-closed-captions-button", "media-volume-slider", "media-volume-slider-container", "media-volume-slider-mute-button", "media-volume-sliderthumb", "menulist", "menulist-button", "menulist-text", "menulist-textfield", "meter", "progress-bar", "progress-bar-value", "slider-horizontal", "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "caret", "searchfield", "searchfield-decoration", "searchfield-results-decoration", "searchfield-results-button", "searchfield-cancel-button", "snapshotted-plugin-overlay", "textfield", "relevancy-level-indicator", "continuous-capacity-level-indicator", "discrete-capacity-level-indicator", "rating-level-indicator", "image-controls-button", "-apple-pay-button", "textarea", "attachment", "borderless-attachment", "caps-lock-indicator",
809     ],
810     "-webkit-backface-visibility": [
811         "hidden", "visible",
812     ],
813     "-webkit-border-after-width": [
814         "medium", "thick", "thin", "calc()",
815     ],
816     "-webkit-border-before-width": [
817         "medium", "thick", "thin", "calc()",
818     ],
819     "-webkit-border-end-width": [
820         "medium", "thick", "thin", "calc()",
821     ],
822     "-webkit-border-fit": [
823         "border", "lines",
824     ],
825     "-webkit-border-start-width": [
826         "medium", "thick", "thin", "calc()",
827     ],
828     "-webkit-box-align": [
829         "baseline", "center", "stretch", "start", "end",
830     ],
831     "-webkit-box-decoration-break": [
832         "clone", "slice",
833     ],
834     "-webkit-box-direction": [
835         "normal", "reverse",
836     ],
837     "-webkit-box-lines": [
838         "single", "multiple",
839     ],
840     "-webkit-box-orient": [
841         "horizontal", "vertical", "inline-axis", "block-axis",
842     ],
843     "-webkit-box-pack": [
844         "center", "justify", "start", "end",
845     ],
846     "-webkit-column-axis": [
847         "auto", "horizontal", "vertical",
848     ],
849     "-webkit-column-count": [
850         "auto", "calc()",
851     ],
852     "-webkit-column-fill": [
853         "auto", "balance",
854     ],
855     "-webkit-column-gap": [
856         "normal", "calc()",
857     ],
858     "-webkit-column-progression": [
859         "normal", "reverse",
860     ],
861     "-webkit-column-rule-width": [
862         "medium", "thick", "thin", "calc()",
863     ],
864     "-webkit-column-span": [
865         "all", "none", "calc()",
866     ],
867     "-webkit-column-width": [
868         "auto", "calc()",
869     ],
870     "-webkit-cursor-visibility": [
871         "auto", "auto-hide",
872     ],
873     "-webkit-font-kerning": [
874         "none", "normal", "auto",
875     ],
876     "-webkit-font-smoothing": [
877         "none", "auto", "antialiased", "subpixel-antialiased",
878     ],
879     "-webkit-hyphens": [
880         "none", "auto", "manual",
881     ],
882     "-webkit-line-align": [
883         "none", "edges",
884     ],
885     "-webkit-line-break": [
886         "auto", "loose", "normal", "strict", "after-white-space",
887     ],
888     "-webkit-line-snap": [
889         "none", "baseline", "contain",
890     ],
891     "-webkit-logical-height": [
892         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "calc()"
893     ],
894     "-webkit-logical-width": [
895         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "calc()"
896     ],
897     "-webkit-margin-after-collapse": [
898         "collapse", "separate", "discard",
899     ],
900     "-webkit-margin-before-collapse": [
901         "collapse", "separate", "discard",
902     ],
903     "-webkit-margin-bottom-collapse": [
904         "collapse", "separate", "discard",
905     ],
906     "-webkit-margin-top-collapse": [
907         "collapse", "separate", "discard",
908     ],
909     "-webkit-marquee-direction": [
910         "left", "right", "auto", "reverse", "forwards", "backwards", "ahead", "up", "down",
911     ],
912     "-webkit-marquee-style": [
913         "none", "scroll", "slide", "alternate",
914     ],
915     "-webkit-max-logical-height": [
916         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "none", "calc()"
917     ],
918     "-webkit-max-logical-width": [
919         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "none", "calc()"
920     ],
921     "-webkit-min-logical-height": [
922         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "calc()"
923     ],
924     "-webkit-min-logical-width": [
925         "auto", "intrinsic", "min-intrinsic", "min-content", "-webkit-min-content", "max-content", "-webkit-max-content", "-webkit-fill-available", "fit-content", "-webkit-fit-content", "calc()"
926     ],
927     "-webkit-nbsp-mode": [
928         "normal", "space",
929     ],
930     "-webkit-overflow-scrolling": [
931         "auto", "touch",
932     ],
933     "-webkit-print-color-adjust": [
934         "economy", "exact",
935     ],
936     "-webkit-rtl-ordering": [
937         "logical", "visual",
938     ],
939     "-webkit-ruby-position": [
940         "after", "before", "inter-character",
941     ],
942     "-webkit-text-align-last": [
943         "auto", "start", "end", "left", "right", "center", "justify",
944     ],
945     "-webkit-text-combine": [
946         "none", "horizontal",
947     ],
948     "-webkit-text-decoration-style": [
949         "dotted", "dashed", "solid", "double", "wavy",
950     ],
951     "-webkit-text-justify": [
952         "auto", "none", "inter-word", "inter-ideograph", "inter-cluster", "distribute", "kashida",
953     ],
954     "-webkit-text-orientation": [
955         "sideways", "sideways-right", "upright", "mixed",
956     ],
957     "-webkit-text-security": [
958         "none", "disc", "circle", "square",
959     ],
960     "-webkit-text-zoom": [
961         "normal", "reset",
962     ],
963     "-webkit-transform-style": [
964         "flat", "preserve-3d",
965     ],
966     "-webkit-user-drag": [
967         "none", "auto", "element",
968     ],
969     "-webkit-user-modify": [
970         "read-only", "read-write", "read-write-plaintext-only",
971     ],
972     "-webkit-user-select": [
973         "none", "all", "auto", "text",
974     ],
975     "-webkit-writing-mode": [
976         "lr", "rl", "tb", "lr-tb", "rl-tb", "tb-rl", "horizontal-tb", "vertical-rl", "vertical-lr", "horizontal-bt",
977     ],
978     "alignment-baseline": [
979         "baseline", "middle", "auto", "alphabetic", "before-edge", "after-edge", "central", "text-before-edge", "text-after-edge", "ideographic", "hanging", "mathematical",
980     ],
981     "border-block-end-style": [
982         "none", "hidden", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double",
983     ],
984     "border-block-start-style": [
985         "none", "hidden", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double",
986     ],
987     "border-bottom-style": [
988         "none", "hidden", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double",
989     ],
990     "border-collapse": [
991         "collapse", "separate",
992     ],
993     "border-inline-end-style": [
994         "none", "hidden", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double",
995     ],
996     "border-inline-start-style": [
997         "none", "hidden", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double",
998     ],
999     "border-left-style": [
1000         "none", "hidden", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double",
1001     ],
1002     "border-right-style": [
1003         "none", "hidden", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double",
1004     ],
1005     "border-top-style": [
1006         "none", "hidden", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double",
1007     ],
1008     "box-sizing": [
1009         "border-box", "content-box",
1010     ],
1011     "break-after": [
1012         "left", "right", "auto", "avoid", "column", "avoid-column", "avoid-page", "page", "recto", "verso",
1013     ],
1014     "break-before": [
1015         "left", "right", "auto", "avoid", "column", "avoid-column", "avoid-page", "page", "recto", "verso",
1016     ],
1017     "break-inside": [
1018         "auto", "avoid", "avoid-column", "avoid-page",
1019     ],
1020     "buffered-rendering": [
1021         "auto", "static", "dynamic",
1022     ],
1023     "caption-side": [
1024         "top", "bottom", "left", "right",
1025     ],
1026     "clear": [
1027         "none", "left", "right", "both",
1028     ],
1029     "clip-rule": [
1030         "nonzero", "evenodd",
1031     ],
1032     "color-interpolation": [
1033         "auto", "sRGB", "linearRGB",
1034     ],
1035     "color-interpolation-filters": [
1036         "auto", "sRGB", "linearRGB",
1037     ],
1038     "color-rendering": [
1039         "auto", "optimizeSpeed", "optimizeQuality",
1040     ],
1041     "column-fill": [
1042         "auto", "balance",
1043     ],
1044     "column-rule-style": [
1045         "none", "hidden", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double",
1046     ],
1047     "direction": [
1048         "ltr", "rtl",
1049     ],
1050     "display": [
1051         "none", "inline", "block", "list-item", "compact", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "-webkit-box", "-webkit-inline-box", "flex", "-webkit-flex", "inline-flex", "-webkit-inline-flex", "contents", "grid", "inline-grid",
1052     ],
1053     "dominant-baseline": [
1054         "middle", "auto", "alphabetic", "central", "text-before-edge", "text-after-edge", "ideographic", "hanging", "mathematical", "use-script", "no-change", "reset-size",
1055     ],
1056     "empty-cells": [
1057         "hide", "show",
1058     ],
1059     "fill-rule": [
1060         "nonzero", "evenodd",
1061     ],
1062     "flex-direction": [
1063         "row", "row-reverse", "column", "column-reverse",
1064     ],
1065     "flex-wrap": [
1066         "nowrap", "wrap-reverse", "wrap",
1067     ],
1068     "float": [
1069         "none", "left", "right",
1070     ],
1071     "font-optical-sizing": [
1072         "none", "auto",
1073     ],
1074     "font-variant-alternates": [
1075         "historical-forms", "normal",
1076     ],
1077     "font-variant-caps": [
1078         "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "unicase", "titling-caps", "normal",
1079     ],
1080     "font-variant-position": [
1081         "normal", "sub", "super",
1082     ],
1083     "image-rendering": [
1084         "auto", "optimizeSpeed", "optimizeQuality", "crisp-edges", "pixelated", "-webkit-crisp-edges", "-webkit-optimize-contrast",
1085     ],
1086     "image-resolution": [
1087         "from-image", "snap",
1088     ],
1089     "isolation": [
1090         "auto", "isolate",
1091     ],
1092     "line-break": [
1093         "normal", "auto", "loose", "strict", "after-white-space",
1094     ],
1095     "list-style-position": [
1096         "outside", "inside",
1097     ],
1098     "list-style-type": [
1099         "none", "disc", "circle", "square", "decimal", "decimal-leading-zero", "arabic-indic", "binary", "bengali", "cambodian", "khmer", "devanagari", "gujarati", "gurmukhi", "kannada", "lower-hexadecimal", "lao", "malayalam", "mongolian", "myanmar", "octal", "oriya", "persian", "urdu", "telugu", "tibetan", "thai", "upper-hexadecimal", "lower-roman", "upper-roman", "lower-greek", "lower-alpha", "lower-latin", "upper-alpha", "upper-latin", "afar", "ethiopic-halehame-aa-et", "ethiopic-halehame-aa-er", "amharic", "ethiopic-halehame-am-et", "amharic-abegede", "ethiopic-abegede-am-et", "cjk-earthly-branch", "cjk-heavenly-stem", "ethiopic", "ethiopic-halehame-gez", "ethiopic-abegede", "ethiopic-abegede-gez", "hangul-consonant", "hangul", "lower-norwegian", "oromo", "ethiopic-halehame-om-et", "sidama", "ethiopic-halehame-sid-et", "somali", "ethiopic-halehame-so-et", "tigre", "ethiopic-halehame-tig", "tigrinya-er", "ethiopic-halehame-ti-er", "tigrinya-er-abegede", "ethiopic-abegede-ti-er", "tigrinya-et", "ethiopic-halehame-ti-et", "tigrinya-et-abegede", "ethiopic-abegede-ti-et", "upper-greek", "upper-norwegian", "asterisks", "footnotes", "hebrew", "armenian", "lower-armenian", "upper-armenian", "georgian", "cjk-ideographic", "hiragana", "katakana", "hiragana-iroha", "katakana-iroha",
1100     ],
1101     "mask-type": [
1102         "alpha", "luminance",
1103     ],
1104     "max-zoom": [
1105         "auto",
1106     ],
1107     "min-zoom": [
1108         "auto",
1109     ],
1110     "mix-blend-mode": [
1111         "normal", "plus-darker", "plus-lighter", "overlay", "multiply", "screen", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity",
1112     ],
1113     "object-fit": [
1114         "none", "contain", "cover", "fill", "scale-down",
1115     ],
1116     "orientation": [
1117         "auto", "portait", "landscape",
1118     ],
1119     "outline-style": [
1120         "none", "inset", "groove", "outset", "ridge", "dotted", "dashed", "solid", "double", "auto",
1121     ],
1122     "overflow-wrap": [
1123         "normal", "break-word",
1124     ],
1125     "overflow-x": [
1126         "hidden", "auto", "visible", "scroll",
1127     ],
1128     "overflow-y": [
1129         "hidden", "auto", "visible", "scroll", "-webkit-paged-x", "-webkit-paged-y",
1130     ],
1131     "pointer-events": [
1132         "none", "all", "auto", "visible", "visiblePainted", "visibleFill", "visibleStroke", "painted", "fill", "stroke",
1133     ],
1134     "position": [
1135         "absolute", "fixed", "relative", "static", "sticky", "-webkit-sticky",
1136     ],
1137     "resize": [
1138         "none", "auto", "both", "horizontal", "vertical",
1139     ],
1140     "shape-rendering": [
1141         "auto", "optimizeSpeed", "geometricPrecision", "crispedges",
1142     ],
1143     "stroke-linecap": [
1144         "square", "round", "butt",
1145     ],
1146     "stroke-linejoin": [
1147         "round", "miter", "bevel",
1148     ],
1149     "table-layout": [
1150         "auto", "fixed",
1151     ],
1152     "text-align": [
1153         "-webkit-auto", "left", "right", "center", "justify", "-webkit-left", "-webkit-right", "-webkit-center", "-webkit-match-parent", "start", "end",
1154     ],
1155     "text-anchor": [
1156         "middle", "start", "end",
1157     ],
1158     "text-line-through": [
1159         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave", "continuous", "skip-white-space",
1160     ],
1161     "text-line-through-mode": [
1162         "continuous", "skip-white-space",
1163     ],
1164     "text-line-through-style": [
1165         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave",
1166     ],
1167     "text-line-through-width": [
1168         "normal", "medium", "auto", "thick", "thin",
1169     ],
1170     "text-overflow": [
1171         "clip", "ellipsis",
1172     ],
1173     "text-overline-mode": [
1174         "continuous", "skip-white-space",
1175     ],
1176     "text-overline-style": [
1177         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave",
1178     ],
1179     "text-overline-width": [
1180         "normal", "medium", "auto", "thick", "thin", "calc()",
1181     ],
1182     "text-rendering": [
1183         "auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision",
1184     ],
1185     "text-transform": [
1186         "none", "capitalize", "uppercase", "lowercase",
1187     ],
1188     "text-underline": [
1189         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave",
1190     ],
1191     "text-underline-mode": [
1192         "continuous", "skip-white-space",
1193     ],
1194     "text-underline-style": [
1195         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave",
1196     ],
1197     "text-underline-width": [
1198         "normal", "medium", "auto", "thick", "thin", "calc()",
1199     ],
1200     "transform-style": [
1201         "flat", "preserve-3d",
1202     ],
1203     "unicode-bidi": [
1204         "normal", "bidi-override", "embed", "isolate-override", "plaintext", "-webkit-isolate", "-webkit-isolate-override", "-webkit-plaintext", "isolate",
1205     ],
1206     "user-zoom": [
1207         "zoom", "fixed",
1208     ],
1209     "vector-effect": [
1210         "none",
1211     ],
1212     "visibility": [
1213         "hidden", "visible", "collapse",
1214     ],
1215     "white-space": [
1216         "normal", "nowrap", "pre", "pre-line", "pre-wrap",
1217     ],
1218     "word-break": [
1219         "normal", "break-all", "keep-all", "break-word",
1220     ],
1221     "word-wrap": [
1222         "normal", "break-word",
1223     ],
1224     "writing-mode": [
1225         "lr", "rl", "tb", "lr-tb", "rl-tb", "tb-rl", "horizontal-tb", "vertical-rl", "vertical-lr", "horizontal-bt",
1226     ],
1227 };