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