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