Web Inspector: CSS var() function should be syntax highlighted
[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 WebInspector.CSSKeywordCompletions = {};
33
34 WebInspector.CSSKeywordCompletions.forProperty = function(propertyName)
35 {
36     let acceptedKeywords = ["initial", "unset", "revert", "var()"];
37     let isNotPrefixed = propertyName.charAt(0) !== "-";
38
39     if (propertyName in WebInspector.CSSKeywordCompletions._propertyKeywordMap)
40         acceptedKeywords = acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._propertyKeywordMap[propertyName]);
41     else if (isNotPrefixed && ("-webkit-" + propertyName) in WebInspector.CSSKeywordCompletions._propertyKeywordMap)
42         acceptedKeywords = acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._propertyKeywordMap["-webkit-" + propertyName]);
43
44     if (propertyName in WebInspector.CSSKeywordCompletions._colorAwareProperties)
45         acceptedKeywords = acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._colors);
46     else if (isNotPrefixed && ("-webkit-" + propertyName) in WebInspector.CSSKeywordCompletions._colorAwareProperties)
47         acceptedKeywords = acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._colors);
48     else if (propertyName.endsWith("color"))
49         acceptedKeywords = acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._colors);
50
51     // Only suggest "inherit" on inheritable properties even though it is valid on all properties.
52     if (propertyName in WebInspector.CSSKeywordCompletions.InheritedProperties)
53         acceptedKeywords.push("inherit");
54     else if (isNotPrefixed && ("-webkit-" + propertyName) in WebInspector.CSSKeywordCompletions.InheritedProperties)
55         acceptedKeywords.push("inherit");
56
57     if (acceptedKeywords.includes(WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder) && WebInspector.CSSCompletions.cssNameCompletions) {
58         acceptedKeywords.remove(WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder);
59         acceptedKeywords = acceptedKeywords.concat(WebInspector.CSSCompletions.cssNameCompletions.values);
60     }
61
62     return new WebInspector.CSSCompletions(acceptedKeywords, true);
63 };
64
65 WebInspector.CSSKeywordCompletions.addCustomCompletions = function(properties)
66 {
67     for (var property of properties) {
68         if (property.values)
69             WebInspector.CSSKeywordCompletions.addPropertyCompletionValues(property.name, property.values);
70     }
71 };
72
73 WebInspector.CSSKeywordCompletions.addPropertyCompletionValues = function(propertyName, newValues)
74 {
75     var existingValues = WebInspector.CSSKeywordCompletions._propertyKeywordMap[propertyName];
76     if (!existingValues) {
77         WebInspector.CSSKeywordCompletions._propertyKeywordMap[propertyName] = newValues;
78         return;
79     }
80
81     var union = new Set;
82     for (var value of existingValues)
83         union.add(value);
84     for (var value of newValues)
85         union.add(value);
86
87     WebInspector.CSSKeywordCompletions._propertyKeywordMap[propertyName] = [...union.values()];
88 };
89
90 WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder = "__all-properties__";
91
92 WebInspector.CSSKeywordCompletions.InheritedProperties = [
93     "azimuth", "border-collapse", "border-spacing", "caption-side", "clip-rule", "color", "color-interpolation",
94     "color-interpolation-filters", "color-rendering", "cursor", "direction", "elevation", "empty-cells", "fill",
95     "fill-opacity", "fill-rule", "font", "font-family", "font-size", "font-style", "font-variant", "font-weight",
96     "glyph-orientation-horizontal", "glyph-orientation-vertical", "hanging-punctuation", "image-rendering", "kerning", "letter-spacing",
97     "line-height", "list-style", "list-style-image", "list-style-position", "list-style-type", "marker", "marker-end",
98     "marker-mid", "marker-start", "orphans", "pitch", "pitch-range", "pointer-events", "quotes", "resize", "richness",
99     "shape-rendering", "speak", "speak-header", "speak-numeral", "speak-punctuation", "speech-rate", "stress", "stroke",
100     "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity",
101     "stroke-width", "tab-size", "text-align", "text-anchor", "text-decoration", "text-indent", "text-rendering",
102     "text-shadow", "text-transform", "visibility", "voice-family", "volume", "white-space", "widows", "word-break",
103     "word-spacing", "word-wrap", "writing-mode", "-webkit-aspect-ratio", "-webkit-border-horizontal-spacing",
104     "-webkit-border-vertical-spacing", "-webkit-box-direction", "-webkit-color-correction", "font-feature-settings",
105     "-webkit-font-kerning", "-webkit-font-smoothing", "-webkit-font-variant-ligatures",
106     "-webkit-hyphenate-character", "-webkit-hyphenate-limit-after", "-webkit-hyphenate-limit-before",
107     "-webkit-hyphenate-limit-lines", "-webkit-hyphens", "-webkit-line-align", "-webkit-line-box-contain",
108     "-webkit-line-break", "-webkit-line-grid", "-webkit-line-snap", "-webkit-locale", "-webkit-nbsp-mode",
109     "-webkit-print-color-adjust", "-webkit-rtl-ordering", "-webkit-text-combine", "-webkit-text-decorations-in-effect",
110     "-webkit-text-emphasis", "-webkit-text-emphasis-color", "-webkit-text-emphasis-position", "-webkit-text-emphasis-style",
111     "-webkit-text-fill-color", "-webkit-text-orientation", "-webkit-text-security", "-webkit-text-size-adjust",
112     "-webkit-text-stroke", "-webkit-text-stroke-color", "-webkit-text-stroke-width", "-webkit-user-modify",
113     "-webkit-user-select", "-webkit-writing-mode", "-webkit-cursor-visibility", "image-orientation", "image-resolution",
114     "overflow-wrap", "-webkit-text-align-last", "-webkit-text-justify", "-webkit-ruby-position", "-webkit-text-decoration-line",
115     "font-synthesis",
116
117     // iOS Properties
118     "-webkit-overflow-scrolling", "-webkit-touch-callout", "-webkit-tap-highlight-color"
119 ].keySet();
120
121 WebInspector.CSSKeywordCompletions._colors = [
122     "aqua", "black", "blue", "fuchsia", "gray", "green", "lime", "maroon", "navy", "olive", "orange", "purple", "red",
123     "silver", "teal", "white", "yellow", "transparent", "currentcolor", "grey", "aliceblue", "antiquewhite",
124     "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blueviolet", "brown", "burlywood", "cadetblue",
125     "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan",
126     "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange",
127     "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey",
128     "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick",
129     "floralwhite", "forestgreen", "gainsboro", "ghostwhite", "gold", "goldenrod", "greenyellow", "honeydew", "hotpink",
130     "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue",
131     "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink",
132     "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow",
133     "limegreen", "linen", "magenta", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen",
134     "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream",
135     "mistyrose", "moccasin", "navajowhite", "oldlace", "olivedrab", "orangered", "orchid", "palegoldenrod", "palegreen",
136     "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "rebeccapurple", "rosybrown",
137     "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "skyblue", "slateblue",
138     "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "thistle", "tomato", "turquoise", "violet",
139     "wheat", "whitesmoke", "yellowgreen", "rgb()", "rgba()", "hsl()", "hsla()"
140 ];
141
142 WebInspector.CSSKeywordCompletions._colorAwareProperties = [
143     "background", "background-color", "background-image", "border", "border-color", "border-top", "border-right", "border-bottom",
144     "border-left", "border-top-color", "border-right-color", "border-bottom-color", "border-left-color", "box-shadow", "color",
145     "fill", "outline", "outline-color", "stroke", "text-line-through", "text-line-through-color", "text-overline", "text-overline-color",
146     "text-shadow", "text-underline", "text-underline-color", "-webkit-box-shadow", "-webkit-column-rule", "-webkit-column-rule-color",
147     "-webkit-text-emphasis", "-webkit-text-emphasis-color", "-webkit-text-fill-color", "-webkit-text-stroke", "-webkit-text-stroke-color",
148     "-webkit-text-decoration-color",
149
150     // iOS Properties
151     "-webkit-tap-highlight-color"
152 ].keySet();
153
154 WebInspector.CSSKeywordCompletions._propertyKeywordMap = {
155     "table-layout": [
156         "auto", "fixed"
157     ],
158     "visibility": [
159         "hidden", "visible", "collapse"
160     ],
161     "text-underline": [
162         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave"
163     ],
164     "content": [
165         "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()", "-webkit-cross-fade()", "-webkit-image-set()"
166     ],
167     "list-style-image": [
168         "none", "url()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "-webkit-canvas()", "-webkit-cross-fade()", "-webkit-image-set()"
169     ],
170     "clear": [
171         "none", "left", "right", "both"
172     ],
173     "stroke-linejoin": [
174         "round", "miter", "bevel"
175     ],
176     "baseline-shift": [
177         "baseline", "sub", "super"
178     ],
179     "border-bottom-width": [
180         "medium", "thick", "thin", "calc()", "-webkit-calc()"
181     ],
182     "margin-top-collapse": [
183         "collapse", "separate", "discard"
184     ],
185     "-webkit-box-orient": [
186         "horizontal", "vertical", "inline-axis", "block-axis"
187     ],
188     "font-stretch": [
189         "normal", "wider", "narrower", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed",
190         "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"
191     ],
192     "-webkit-color-correction": [
193         "default", "srgb"
194     ],
195     "border-left-width": [
196         "medium", "thick", "thin", "calc()", "-webkit-calc()"
197     ],
198     "-webkit-writing-mode": [
199         "lr", "rl", "tb", "lr-tb", "rl-tb", "tb-rl", "horizontal-tb", "vertical-rl", "vertical-lr", "horizontal-bt"
200     ],
201     "text-line-through-mode": [
202         "continuous", "skip-white-space"
203     ],
204     "text-overline-mode": [
205         "continuous", "skip-white-space"
206     ],
207     "text-underline-mode": [
208         "continuous", "skip-white-space"
209     ],
210     "text-line-through-style": [
211         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave"
212     ],
213     "text-overline-style": [
214         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave"
215     ],
216     "text-underline-style": [
217         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave"
218     ],
219     "border-collapse": [
220         "collapse", "separate"
221     ],
222     "border-top-width": [
223         "medium", "thick", "thin", "calc()", "-webkit-calc()"
224     ],
225     "outline-color": [
226         "invert", "-webkit-focus-ring-color"
227     ],
228     "outline-style": [
229         "none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double", "auto"
230     ],
231     "cursor": [
232         "none", "copy", "auto", "crosshair", "default", "pointer", "move", "vertical-text", "cell", "context-menu",
233         "alias", "progress", "no-drop", "not-allowed", "zoom-in", "zoom-out", "e-resize", "ne-resize",
234         "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "ew-resize", "ns-resize",
235         "nesw-resize", "nwse-resize", "col-resize", "row-resize", "text", "wait", "help", "all-scroll", "-webkit-grab",
236         "-webkit-zoom-in", "-webkit-zoom-out",
237         "-webkit-grabbing", "url()", "-webkit-image-set()"
238     ],
239     "border-width": [
240         "medium", "thick", "thin", "calc()", "-webkit-calc()"
241     ],
242     "size": [
243         "a3", "a4", "a5", "b4", "b5", "landscape", "ledger", "legal", "letter", "portrait"
244     ],
245     "background": [
246         "none", "url()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "-webkit-canvas()", "-webkit-cross-fade()", "-webkit-image-set()",
247         "repeat", "repeat-x", "repeat-y", "no-repeat", "space", "round",
248         "scroll", "fixed", "local",
249         "auto", "contain", "cover",
250         "top", "right", "left", "bottom", "center",
251         "border-box", "padding-box", "content-box"
252     ],
253     "background-image": [
254         "none", "url()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "-webkit-canvas()", "-webkit-cross-fade()", "-webkit-image-set()"
255     ],
256     "background-size": [
257         "auto", "contain", "cover"
258     ],
259     "background-attachment": [
260         "scroll", "fixed", "local"
261     ],
262     "background-repeat": [
263         "repeat", "repeat-x", "repeat-y", "no-repeat", "space", "round"
264     ],
265     "background-blend-mode": [
266         "normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"
267     ],
268     "background-position": [
269         "top", "right", "left", "bottom", "center"
270     ],
271     "background-origin": [
272         "border-box", "padding-box", "content-box"
273     ],
274     "background-clip": [
275         "border-box", "padding-box", "content-box"
276     ],
277     "direction": [
278         "ltr", "rtl"
279     ],
280     "enable-background": [
281         "accumulate", "new"
282     ],
283     "float": [
284         "none", "left", "right"
285     ],
286     "hanging-punctuation": [
287         "none", "first", "last", "allow-end", "force-end"
288     ],
289     "overflow-x": [
290         "hidden", "auto", "visible", "overlay", "scroll", "marquee"
291     ],
292     "overflow-y": [
293         "hidden", "auto", "visible", "overlay", "scroll", "marquee", "-webkit-paged-x", "-webkit-paged-y"
294     ],
295     "overflow": [
296         "hidden", "auto", "visible", "overlay", "scroll", "marquee", "-webkit-paged-x", "-webkit-paged-y"
297     ],
298     "margin-bottom-collapse": [
299         "collapse",  "separate", "discard"
300     ],
301     "-webkit-box-reflect": [
302         "none", "left", "right", "above", "below"
303     ],
304     "text-rendering": [
305         "auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision"
306     ],
307     "text-align": [
308         "-webkit-auto", "left", "right", "center", "justify", "-webkit-left", "-webkit-right", "-webkit-center", "-webkit-match-parent", "start", "end"
309     ],
310     "list-style-position": [
311         "outside", "inside"
312     ],
313     "margin-bottom": [
314         "auto"
315     ],
316     "color-interpolation": [
317         "linearrgb"
318     ],
319     "word-wrap": [
320         "normal", "break-word"
321     ],
322     "font-weight": [
323         "normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900"
324     ],
325     "font-synthesis": [
326         "none", "weight", "style"
327     ],
328     "margin-before-collapse": [
329         "collapse", "separate", "discard"
330     ],
331     "text-overline-width": [
332         "normal", "medium", "auto", "thick", "thin", "calc()", "-webkit-calc()"
333     ],
334     "text-transform": [
335         "none", "capitalize", "uppercase", "lowercase"
336     ],
337     "border-right-style": [
338         "none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double"
339     ],
340     "border-left-style": [
341         "none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double"
342     ],
343     "font-style": [
344         "italic", "oblique", "normal"
345     ],
346     "speak": [
347         "none", "normal", "spell-out", "digits", "literal-punctuation", "no-punctuation"
348     ],
349     "text-line-through": [
350         "none", "dotted", "dashed", "solid", "double", "dot-dash", "dot-dot-dash", "wave", "continuous", "skip-white-space"
351     ],
352     "color-rendering": [
353         "auto", "optimizeSpeed", "optimizeQuality"
354     ],
355     "list-style-type": [
356         "none", "disc", "circle", "square", "decimal", "decimal-leading-zero", "arabic-indic", "binary", "bengali",
357         "cambodian", "khmer", "devanagari", "gujarati", "gurmukhi", "kannada", "lower-hexadecimal", "lao", "malayalam",
358         "mongolian", "myanmar", "octal", "oriya", "persian", "urdu", "telugu", "tibetan", "thai", "upper-hexadecimal",
359         "lower-roman", "upper-roman", "lower-greek", "lower-alpha", "lower-latin", "upper-alpha", "upper-latin", "afar",
360         "ethiopic-halehame-aa-et", "ethiopic-halehame-aa-er", "amharic", "ethiopic-halehame-am-et", "amharic-abegede",
361         "ethiopic-abegede-am-et", "cjk-earthly-branch", "cjk-heavenly-stem", "ethiopic", "ethiopic-halehame-gez",
362         "ethiopic-abegede", "ethiopic-abegede-gez", "hangul-consonant", "hangul", "lower-norwegian", "oromo",
363         "ethiopic-halehame-om-et", "sidama", "ethiopic-halehame-sid-et", "somali", "ethiopic-halehame-so-et", "tigre",
364         "ethiopic-halehame-tig", "tigrinya-er", "ethiopic-halehame-ti-er", "tigrinya-er-abegede",
365         "ethiopic-abegede-ti-er", "tigrinya-et", "ethiopic-halehame-ti-et", "tigrinya-et-abegede",
366         "ethiopic-abegede-ti-et", "upper-greek", "upper-norwegian", "asterisks", "footnotes", "hebrew", "armenian",
367         "lower-armenian", "upper-armenian", "georgian", "cjk-ideographic", "hiragana", "katakana", "hiragana-iroha",
368         "katakana-iroha"
369     ],
370     "-webkit-text-combine": [
371         "none", "horizontal"
372     ],
373     "outline": [
374         "none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double"
375     ],
376     "font": [
377         "caption", "icon", "menu", "message-box", "small-caption", "-webkit-mini-control", "-webkit-small-control",
378         "-webkit-control", "status-bar", "italic", "oblique", "small-caps", "normal", "bold", "bolder", "lighter",
379         "100", "200", "300", "400", "500", "600", "700", "800", "900", "xx-small", "x-small", "small", "medium",
380         "large", "x-large", "xx-large", "-webkit-xxx-large", "smaller", "larger", "serif", "sans-serif", "cursive",
381         "fantasy", "monospace", "-webkit-body", "-webkit-pictograph", "-apple-system", "-apple-system-monospaced-numbers",
382         "-apple-system-headline", "-apple-system-body", "-apple-system-subheadline", "-apple-system-footnote",
383         "-apple-system-caption1", "-apple-system-caption2", "-apple-system-short-headline", "-apple-system-short-body",
384         "-apple-system-short-subheadline", "-apple-system-short-footnote", "-apple-system-short-caption1",
385         "-apple-system-tall-body", "-apple-system-title1", "-apple-system-title2", "-apple-system-title3"
386     ],
387     "dominant-baseline": [
388         "middle", "auto", "central", "text-before-edge", "text-after-edge", "ideographic", "alphabetic", "hanging",
389         "mathematical", "use-script", "no-change", "reset-size"
390     ],
391     "display": [
392         "none", "inline", "block", "list-item", "compact", "inline-block", "table", "inline-table",
393         "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group",
394         "table-column", "table-cell", "table-caption", "-webkit-box", "-webkit-inline-box", "-wap-marquee",
395         "flex", "inline-flex", "-webkit-grid", "-webkit-inline-grid"
396     ],
397     "image-rendering": [
398         "auto", "optimizeSpeed", "optimizeQuality", "-webkit-crisp-edges", "-webkit-optimize-contrast", "crisp-edges", "pixelated"
399     ],
400     "alignment-baseline": [
401         "baseline", "middle", "auto", "before-edge", "after-edge", "central", "text-before-edge", "text-after-edge",
402         "ideographic", "alphabetic", "hanging", "mathematical"
403     ],
404     "outline-width": [
405         "medium", "thick", "thin", "calc()", "-webkit-calc()"
406     ],
407     "text-line-through-width": [
408         "normal", "medium", "auto", "thick", "thin"
409     ],
410     "box-align": [
411         "baseline", "center", "stretch", "start", "end"
412     ],
413     "box-shadow": [
414         "none"
415     ],
416     "text-shadow": [
417         "none"
418     ],
419     "-webkit-box-shadow": [
420         "none"
421     ],
422     "border-right-width": [
423         "medium", "thick", "thin"
424     ],
425     "border-top-style": [
426         "none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double"
427     ],
428     "line-height": [
429         "normal"
430     ],
431     "counter-increment": [
432         "none"
433     ],
434     "counter-reset": [
435         "none"
436     ],
437     "text-overflow": [
438         "clip", "ellipsis"
439     ],
440     "-webkit-box-direction": [
441         "normal", "reverse"
442     ],
443     "margin-after-collapse": [
444         "collapse", "separate", "discard"
445     ],
446     "break-after": [
447          "left", "right", "recto", "verso", "auto", "avoid", "page", "column", "region", "avoid-page", "avoid-column", "avoid-region"
448     ],
449     "break-before": [
450           "left", "right", "recto", "verso", "auto", "avoid", "page", "column", "region", "avoid-page", "avoid-column", "avoid-region"
451     ],
452     "break-inside": [
453           "auto", "avoid", "avoid-page", "avoid-column", "avoid-region"
454     ],
455     "page-break-after": [
456         "left", "right", "auto", "always", "avoid"
457     ],
458     "page-break-before": [
459         "left", "right", "auto", "always", "avoid"
460     ],
461     "page-break-inside": [
462         "auto", "avoid"
463     ],
464     "-webkit-column-break-after": [
465         "left", "right", "auto", "always", "avoid"
466     ],
467     "-webkit-column-break-before": [
468         "left", "right", "auto", "always", "avoid"
469     ],
470     "-webkit-column-break-inside": [
471         "auto", "avoid"
472     ],
473     "-webkit-hyphens": [
474         "none", "auto", "manual"
475     ],
476     "border-image": [
477         "repeat", "stretch", "url()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "-webkit-canvas()", "-webkit-cross-fade()", "-webkit-image-set()"
478     ],
479     "border-image-repeat": [
480         "repeat", "stretch", "space", "round"
481     ],
482     "-webkit-mask-box-image-repeat": [
483         "repeat", "stretch", "space", "round"
484     ],
485     "position": [
486         "absolute", "fixed", "relative", "static", "-webkit-sticky"
487     ],
488     "font-family": [
489         "serif", "sans-serif", "cursive", "fantasy", "monospace", "-webkit-body", "-webkit-pictograph",
490         "-apple-system", "-apple-system-monospaced-numbers", "-apple-system-headline", "-apple-system-body",
491         "-apple-system-subheadline", "-apple-system-footnote", "-apple-system-caption1", "-apple-system-caption2",
492         "-apple-system-short-headline", "-apple-system-short-body", "-apple-system-short-subheadline",
493         "-apple-system-short-footnote", "-apple-system-short-caption1", "-apple-system-tall-body",
494         "-apple-system-title1", "-apple-system-title2", "-apple-system-title3"
495     ],
496     "text-overflow-mode": [
497         "clip", "ellipsis"
498     ],
499     "border-bottom-style": [
500         "none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double"
501     ],
502     "unicode-bidi": [
503         "normal", "bidi-override", "embed", "-webkit-plaintext", "-webkit-isolate", "-webkit-isolate-override"
504     ],
505     "clip-rule": [
506         "nonzero", "evenodd"
507     ],
508     "margin-left": [
509         "auto"
510     ],
511     "margin-top": [
512         "auto"
513     ],
514     "zoom": [
515         "normal", "document", "reset"
516     ],
517     "z-index": [
518         "auto"
519     ],
520     "width": [
521         "intrinsic", "min-intrinsic", "-webkit-min-content", "-webkit-max-content", "-webkit-fill-available", "-webkit-fit-content", "calc()", "-webkit-calc()"
522     ],
523     "height": [
524         "intrinsic", "min-intrinsic", "calc()", "-webkit-calc()"
525     ],
526     "max-width": [
527         "none", "intrinsic", "min-intrinsic", "-webkit-min-content", "-webkit-max-content", "-webkit-fill-available", "-webkit-fit-content", "calc()", "-webkit-calc()"
528     ],
529     "min-width": [
530         "intrinsic", "min-intrinsic", "-webkit-min-content", "-webkit-max-content", "-webkit-fill-available", "-webkit-fit-content", "calc()", "-webkit-calc()"
531     ],
532     "max-height": [
533         "none", "intrinsic", "min-intrinsic", "calc()", "-webkit-calc()"
534     ],
535     "min-height": [
536         "intrinsic", "min-intrinsic", "calc()", "-webkit-calc()"
537     ],
538     "-webkit-logical-width": [
539         "intrinsic", "min-intrinsic", "-webkit-min-content", "-webkit-max-content", "-webkit-fill-available", "-webkit-fit-content", "calc()", "-webkit-calc()"
540     ],
541     "-webkit-logical-height": [
542         "intrinsic", "min-intrinsic", "calc()", "-webkit-calc()"
543     ],
544     "-webkit-max-logical-width": [
545         "none", "intrinsic", "min-intrinsic", "-webkit-min-content", "-webkit-max-content", "-webkit-fill-available", "-webkit-fit-content", "calc()", "-webkit-calc()"
546     ],
547     "-webkit-min-logical-width": [
548         "intrinsic", "min-intrinsic", "-webkit-min-content", "-webkit-max-content", "-webkit-fill-available", "-webkit-fit-content", "calc()", "-webkit-calc()"
549     ],
550     "-webkit-max-logical-height": [
551         "none", "intrinsic", "min-intrinsic", "calc()", "-webkit-calc()"
552     ],
553     "-webkit-min-logical-height": [
554         "intrinsic", "min-intrinsic", "calc()", "-webkit-calc()"
555     ],
556     "empty-cells": [
557         "hide", "show"
558     ],
559     "pointer-events": [
560         "none", "all", "auto", "visible", "visiblepainted", "visiblefill", "visiblestroke", "painted", "fill", "stroke"
561     ],
562     "letter-spacing": [
563         "normal", "calc()", "-webkit-calc()"
564     ],
565     "word-spacing": [
566         "normal", "calc()", "-webkit-calc()"
567     ],
568     "-webkit-font-kerning": [
569         "auto", "normal", "none"
570     ],
571     "-webkit-font-smoothing": [
572         "none", "auto", "antialiased", "subpixel-antialiased"
573     ],
574     "border": [
575         "none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double"
576     ],
577     "font-size": [
578         "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "-webkit-xxx-large", "smaller", "larger"
579     ],
580     "font-variant": [
581         "small-caps", "normal"
582     ],
583     "vertical-align": [
584         "baseline", "middle", "sub", "super", "text-top", "text-bottom", "top", "bottom", "-webkit-baseline-middle"
585     ],
586     "white-space": [
587         "normal", "nowrap", "pre", "pre-line", "pre-wrap"
588     ],
589     "word-break": [
590         "normal", "break-all", "break-word"
591     ],
592     "text-underline-width": [
593         "normal", "medium", "auto", "thick", "thin", "calc()", "-webkit-calc()"
594     ],
595     "text-indent": [
596         "-webkit-each-line", "-webkit-hanging"
597     ],
598     "-webkit-box-lines": [
599         "single", "multiple"
600     ],
601     "clip": [
602         "auto", "rect()"
603     ],
604     "clip-path": [
605         "none", "url()", "circle()", "ellipse()", "inset()", "polygon()", "margin-box", "border-box", "padding-box", "content-box"
606     ],
607     "-webkit-shape-outside": [
608         "none", "url()", "circle()", "ellipse()", "inset()", "polygon()", "margin-box", "border-box", "padding-box", "content-box"
609     ],
610     "orphans": [
611         "auto"
612     ],
613     "widows": [
614         "auto"
615     ],
616     "margin": [
617         "auto"
618     ],
619     "page": [
620         "auto"
621     ],
622     "perspective": [
623         "none"
624     ],
625     "perspective-origin": [
626         "none", "left", "right", "bottom", "top", "center"
627     ],
628     "-webkit-marquee-increment": [
629         "small", "large", "medium"
630     ],
631     "-webkit-marquee-direction": [
632         "left", "right", "auto", "reverse", "forwards", "backwards", "ahead", "up", "down"
633     ],
634     "-webkit-marquee-style": [
635         "none", "scroll", "slide", "alternate"
636     ],
637     "-webkit-marquee-repetition": [
638         "infinite"
639     ],
640     "-webkit-marquee-speed": [
641         "normal", "slow", "fast"
642     ],
643     "margin-right": [
644         "auto"
645     ],
646     "marquee-speed": [
647         "normal", "slow", "fast"
648     ],
649     "-webkit-text-emphasis": [
650         "circle", "filled", "open", "dot", "double-circle", "triangle", "sesame"
651     ],
652     "-webkit-text-emphasis-style": [
653         "circle", "filled", "open", "dot", "double-circle", "triangle", "sesame"
654     ],
655     "-webkit-text-emphasis-position": [
656         "over", "under", "left", "right"
657     ],
658     "transform": [
659         "none",
660         "scale()", "scaleX()", "scaleY()", "scale3d()", "rotate()", "rotateX()", "rotateY()", "rotateZ()", "rotate3d()", "skew()", "skewX()", "skewY()",
661         "translate()", "translateX()", "translateY()", "translateZ()", "translate3d()", "matrix()", "matrix3d()", "perspective()"
662     ],
663     "transform-style": [
664         "flat", "preserve-3d"
665     ],
666     "-webkit-cursor-visibility": [
667         "auto", "auto-hide"
668     ],
669     "text-decoration": [
670         "none", "underline", "overline", "line-through", "blink"
671     ],
672     "-webkit-text-decorations-in-effect": [
673         "none", "underline", "overline", "line-through", "blink"
674     ],
675     "-webkit-text-decoration-line": [
676         "none", "underline", "overline", "line-through", "blink"
677     ],
678     "-webkit-text-decoration-style": [
679         "solid", "double", "dotted", "dashed", "wavy"
680     ],
681     "-webkit-text-decoration-skip": [
682         "auto", "none", "objects", "ink"
683     ],
684     "-webkit-text-underline-position": [
685         "auto", "alphabetic", "under"
686     ],
687     "image-resolution": [
688         "from-image", "snap"
689     ],
690     "-webkit-blend-mode": [
691         "normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "plus-darker", "plus-lighter", "hue", "saturation", "color", "luminosity",
692     ],
693     "mix-blend-mode": [
694         "normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "plus-darker", "plus-lighter", "hue", "saturation", "color", "luminosity",
695     ],
696     "mix": [
697         "auto",
698         "normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "plus-darker", "plus-lighter", "hue", "saturation", "color", "luminosity",
699         "clear", "copy", "destination", "source-over", "destination-over", "source-in", "destination-in", "source-out", "destination-out", "source-atop", "destination-atop", "xor"
700     ],
701     "geometry": [
702         "detached", "attached", "grid()"
703     ],
704     "overflow-wrap": [
705         "normal", "break-word"
706     ],
707     "transition": [
708         "none", "ease", "linear", "ease-in", "ease-out", "ease-in-out", "step-start", "step-end", "steps()", "cubic-bezier()", "all", WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder
709     ],
710     "transition-timing-function": [
711         "ease", "linear", "ease-in", "ease-out", "ease-in-out", "step-start", "step-end", "steps()", "cubic-bezier()"
712     ],
713     "transition-property": [
714         "all", "none", WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder
715     ],
716     "-webkit-column-progression": [
717         "normal", "reverse"
718     ],
719     "-webkit-box-decoration-break": [
720         "slice", "clone"
721     ],
722     "align-content": [
723         "auto",
724         "baseline", "last-baseline",
725         "space-between", "space-around", "space-evenly", "stretch",
726         "center", "start", "end", "flex-start", "flex-end", "left", "right",
727         "true", "safe"
728     ],
729     "justify-content": [
730         "auto",
731         "baseline", "last-baseline", "space-between", "space-around", "space-evenly", "stretch",
732         "center", "start", "end", "flex-start", "flex-end", "left", "right",
733         "true", "safe"
734     ],
735     "align-items": [
736         "auto", "stretch",
737         "baseline", "last-baseline",
738         "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "left", "right",
739         "true", "safe"
740     ],
741     "align-self": [
742         "auto", "stretch",
743         "baseline", "last-baseline",
744         "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "left", "right",
745         "true", "safe"
746     ],
747     "justify-items": [
748         "auto", "stretch",
749         "baseline", "last-baseline",
750         "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "left", "right",
751         "true", "safe"
752     ],
753     "justify-self": [
754         "auto", "stretch",
755         "baseline", "last-baseline",
756         "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "left", "right",
757         "true", "safe"
758     ],
759     "flex-direction": [
760         "row", "row-reverse", "column", "column-reverse"
761     ],
762     "flex-wrap": [
763         "nowrap", "wrap", "wrap-reverse"
764     ],
765     "flex-flow": [
766         "row", "row-reverse", "column", "column-reverse",
767         "nowrap", "wrap", "wrap-reverse"
768     ],
769     "flex": [
770         "none"
771     ],
772     "flex-basis": [
773         "auto"
774     ],
775     "-webkit-grid-after": [
776         "auto"
777     ],
778     "-webkit-grid-before": [
779         "auto"
780     ],
781     "-webkit-grid-end": [
782         "auto"
783     ],
784     "-webkit-grid-start": [
785         "auto"
786     ],
787     "-webkit-grid-auto-flow": [
788         "row", "column", "dense"
789     ],
790     "-webkit-grid-column": [
791         "auto"
792     ],
793     "-webkit-grid-row": [
794         "auto"
795     ],
796     "-webkit-grid-columns": [
797         "auto", "-webkit-max-content", "-webkit-min-content"
798     ],
799     "-webkit-grid-rows": [
800         "auto", "-webkit-max-content", "-webkit-min-content"
801     ],
802     "-webkit-ruby-position": [
803         "after", "before", "inter-character"
804     ],
805     "-webkit-text-align-last": [
806         "auto", "start", "end", "left", "right", "center", "justify"
807     ],
808     "-webkit-text-justify": [
809         "auto", "none", "inter-word", "inter-ideograph", "inter-cluster", "distribute", "kashida"
810     ],
811     "max-zoom": [
812         "auto"
813     ],
814     "min-zoom": [
815         "auto"
816     ],
817     "orientation": [
818         "auto", "portait", "landscape"
819     ],
820     "user-zoom": [
821         "zoom", "fixed"
822     ],
823     "-webkit-app-region": [
824         "drag", "no-drag"
825     ],
826     "-webkit-line-break": [
827         "auto", "loose", "normal", "strict", "after-white-space"
828     ],
829     "-webkit-background-composite": [
830         "clear", "copy", "source-over", "source-in", "source-out", "source-atop", "destination-over", "destination-in", "destination-out", "destination-atop", "xor", "plus-darker", "plus-lighter"
831     ],
832     "-webkit-mask-composite": [
833         "clear", "copy", "source-over", "source-in", "source-out", "source-atop", "destination-over", "destination-in", "destination-out", "destination-atop", "xor", "plus-darker", "plus-lighter"
834     ],
835     "-webkit-animation-direction": [
836         "normal", "alternate", "reverse", "alternate-reverse"
837     ],
838     "-webkit-animation-fill-mode": [
839         "none", "forwards", "backwards", "both"
840     ],
841     "-webkit-animation-iteration-count": [
842         "infinite"
843     ],
844     "-webkit-animation-play-state": [
845         "paused", "running"
846     ],
847     "-webkit-animation-timing-function": [
848         "ease", "linear", "ease-in", "ease-out", "ease-in-out", "step-start", "step-end", "steps()", "cubic-bezier()"
849     ],
850     "-webkit-column-span": [
851         "all", "none", "calc()", "-webkit-calc()"
852     ],
853     "-webkit-region-break-after": [
854         "auto", "always", "avoid", "left", "right"
855     ],
856     "-webkit-region-break-before": [
857         "auto", "always", "avoid", "left", "right"
858     ],
859     "-webkit-region-break-inside": [
860         "auto", "avoid"
861     ],
862     "-webkit-region-overflow": [
863         "auto", "break"
864     ],
865     "-webkit-backface-visibility": [
866         "visible", "hidden"
867     ],
868     "resize": [
869         "none", "both", "horizontal", "vertical", "auto"
870     ],
871     "caption-side": [
872         "top", "bottom", "left", "right"
873     ],
874     "box-sizing": [
875         "border-box", "content-box"
876     ],
877     "-webkit-alt": [
878         "attr()"
879     ],
880     "-webkit-border-fit": [
881         "border", "lines"
882     ],
883     "-webkit-line-align": [
884         "none", "edges"
885     ],
886     "-webkit-line-snap": [
887         "none", "baseline", "contain"
888     ],
889     "-webkit-nbsp-mode": [
890         "normal", "space"
891     ],
892     "-webkit-print-color-adjust": [
893         "exact", "economy"
894     ],
895     "-webkit-rtl-ordering": [
896         "logical", "visual"
897     ],
898     "-webkit-text-security": [
899         "disc", "circle", "square", "none"
900     ],
901     "-webkit-user-drag": [
902         "auto", "none", "element"
903     ],
904     "-webkit-user-modify": [
905         "read-only", "read-write", "read-write-plaintext-only"
906     ],
907     "-webkit-text-stroke-width": [
908         "medium", "thick", "thin", "calc()", "-webkit-calc()"
909     ],
910     "-webkit-border-start-width": [
911         "medium", "thick", "thin", "calc()", "-webkit-calc()"
912     ],
913     "-webkit-border-end-width": [
914         "medium", "thick", "thin", "calc()", "-webkit-calc()"
915     ],
916     "-webkit-border-before-width": [
917         "medium", "thick", "thin", "calc()", "-webkit-calc()"
918     ],
919     "-webkit-border-after-width": [
920         "medium", "thick", "thin", "calc()", "-webkit-calc()"
921     ],
922     "-webkit-column-rule-width": [
923         "medium", "thick", "thin", "calc()", "-webkit-calc()"
924     ],
925     "-webkit-aspect-ratio": [
926         "auto", "from-dimensions", "from-intrinsic", "/"
927     ],
928     "filter": [
929         "none", "grayscale()", "sepia()", "saturate()", "hue-rotate()", "invert()", "opacity()", "brightness()", "contrast()", "blur()", "drop-shadow()", "custom()"
930     ],
931     "-webkit-backdrop-filter": [
932         "none", "grayscale()", "sepia()", "saturate()", "hue-rotate()", "invert()", "opacity()", "brightness()", "contrast()", "blur()", "drop-shadow()", "custom()"
933     ],
934     "-webkit-column-count": [
935         "auto", "calc()", "-webkit-calc()"
936     ],
937     "-webkit-column-gap": [
938         "normal", "calc()", "-webkit-calc()"
939     ],
940     "-webkit-column-axis": [
941         "horizontal", "vertical", "auto"
942     ],
943     "-webkit-column-width": [
944         "auto", "calc()", "-webkit-calc()"
945     ],
946     "-webkit-column-fill": [
947         "auto", "balance"
948     ],
949     "-webkit-hyphenate-character": [
950         "none"
951     ],
952     "-webkit-hyphenate-limit-after": [
953         "auto"
954     ],
955     "-webkit-hyphenate-limit-before": [
956         "auto"
957     ],
958     "-webkit-hyphenate-limit-lines": [
959         "no-limit"
960     ],
961     "-webkit-line-grid": [
962         "none"
963     ],
964     "-webkit-locale": [
965         "auto"
966     ],
967     "-webkit-text-orientation": [
968         "sideways", "sideways-right", "vertical-right", "upright"
969     ],
970     "-webkit-line-box-contain": [
971         "block", "inline", "font", "glyphs", "replaced", "inline-box", "none"
972     ],
973     "font-feature-settings": [
974         "normal"
975     ],
976     "-webkit-font-variant-ligatures": [
977         "normal", "common-ligatures", "no-common-ligatures", "discretionary-ligatures", "no-discretionary-ligatures", "historical-ligatures", "no-historical-ligatures"
978     ],
979     /*
980     "-webkit-appearance": [
981         "none", "checkbox", "radio", "push-button", "square-button", "button", "button-bevel", "default-button", "inner-spin-button", "listbox", "listitem", "media-enter-fullscreen-button", "media-exit-fullscreen-button", "media-fullscreen-volume-slider", "media-fullscreen-volume-slider-thumb", "media-mute-button", "media-play-button", "media-overlay-play-button", "media-seek-back-button", "media-seek-forward-button", "media-rewind-button", "media-return-to-realtime-button", "media-toggle-closed-captions-button", "media-slider", "media-sliderthumb", "media-volume-slider-container", "media-volume-slider", "media-volume-sliderthumb", "media-volume-slider-mute-button", "media-controls-background", "media-controls-fullscreen-background", "media-current-time-display", "media-time-remaining-display", "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", "textarea", "attachment", "caps-lock-indicator"
982     ],
983     */
984     "-webkit-animation-trigger": [
985         "auto", "container-scroll()"
986     ],
987     "-webkit-scroll-snap-type": [
988         "none", "mandatory", "proximity"
989     ],
990     "-webkit-scroll-snap-points-x": [
991         "elements", "repeat()"
992     ],
993     "-webkit-scroll-snap-points-y": [
994         "elements", "repeat()"
995     ],
996     "-webkit-scroll-snap-destination": [
997         "none", "left", "right", "bottom", "top", "center"
998     ],
999     "-webkit-scroll-snap-coordinate": [
1000         "none", "left", "right", "bottom", "top", "center"
1001     ],
1002
1003     // iOS Properties
1004     "-webkit-text-size-adjust": [
1005         "none", "auto"
1006     ],
1007     "-webkit-touch-callout": [
1008         "default", "none"
1009     ],
1010     "-webkit-overflow-scrolling": [
1011         "auto", "touch"
1012     ]
1013 };