diff --git a/devtools/client/inspector/layout/layout.js b/devtools/client/inspector/layout/layout.js index 4aa31d14592b..f421e564a954 100644 --- a/devtools/client/inspector/layout/layout.js +++ b/devtools/client/inspector/layout/layout.js @@ -199,6 +199,7 @@ function LayoutView(inspector, document) { this.sizeLabel = this.doc.querySelector(".layout-size > span"); this.sizeHeadingLabel = this.doc.getElementById("layout-element-size"); this._geometryEditorHighlighter = null; + this._cssProperties = getCssProperties(inspector.toolbox); this.init(); } @@ -419,7 +420,8 @@ LayoutView.prototype = { session.destroy(); }, e => console.error(e)); } - } + }, + cssProperties: this._cssProperties }, event); }, diff --git a/devtools/client/inspector/markup/markup.js b/devtools/client/inspector/markup/markup.js index 0550bee6466f..4f50dda76a39 100644 --- a/devtools/client/inspector/markup/markup.js +++ b/devtools/client/inspector/markup/markup.js @@ -59,6 +59,7 @@ const nodeFilterConstants = require("devtools/shared/dom-node-filter-constants") /* eslint-disable mozilla/reject-some-requires */ const {XPCOMUtils} = require("resource://gre/modules/XPCOMUtils.jsm"); /* eslint-enable mozilla/reject-some-requires */ +const {getCssProperties} = require("devtools/shared/fronts/css-properties"); loader.lazyRequireGetter(this, "CSS", "CSS"); loader.lazyGetter(this, "AutocompletePopup", () => { @@ -2927,7 +2928,8 @@ function TextEditor(container, node, templateId) { }); }); }); - } + }, + cssProperties: getCssProperties(this.markup._inspector.toolbox) }); this.update(); @@ -2981,6 +2983,7 @@ function ElementEditor(container, node) { this.markup = this.container.markup; this.template = this.markup.template.bind(this.markup); this.doc = this.markup.doc; + this._cssProperties = getCssProperties(this.markup._inspector.toolbox); this.attrElements = new Map(); this.animationTimers = {}; @@ -3006,6 +3009,7 @@ function ElementEditor(container, node) { trigger: "dblclick", stopOnReturn: true, done: this.onTagEdit.bind(this), + cssProperties: this._cssProperties }); } @@ -3029,7 +3033,8 @@ function ElementEditor(container, node) { }, function () { undoMods.apply(); }); - } + }, + cssProperties: this._cssProperties }); let displayName = this.node.displayName; @@ -3267,7 +3272,8 @@ ElementEditor.prototype = { }, () => { undoMods.apply(); }); - } + }, + cssProperties: this._cssProperties }); // Figure out where we should place the attribute. diff --git a/devtools/client/inspector/rules/rules.js b/devtools/client/inspector/rules/rules.js index f08b32a34875..b4c63d148979 100644 --- a/devtools/client/inspector/rules/rules.js +++ b/devtools/client/inspector/rules/rules.js @@ -25,7 +25,7 @@ const {PrefObserver, PREF_ORIG_SOURCES} = require("devtools/client/styleeditor/u const {ElementStyle} = require("devtools/client/inspector/rules/models/element-style"); const {Rule} = require("devtools/client/inspector/rules/models/rule"); const {RuleEditor} = require("devtools/client/inspector/rules/views/rule-editor"); -const {createChild, promiseWarn} = require("devtools/client/inspector/shared/utils"); +const {createChild, promiseWarn, throttle} = require("devtools/client/inspector/shared/utils"); const {gDevTools} = require("devtools/client/framework/devtools"); const {getCssProperties} = require("devtools/shared/fronts/css-properties"); @@ -163,6 +163,9 @@ function CssRuleView(inspector, document, store, pageStyle) { this.store = store || {}; this.pageStyle = pageStyle; + // Allow tests to override throttling behavior, as this can cause intermittents. + this.throttle = throttle; + this.cssProperties = getCssProperties(inspector.toolbox); this._outputParser = new OutputParser(document, this.cssProperties.supportsType); diff --git a/devtools/client/inspector/rules/test/browser_rules_multiple-properties-unfinished_02.js b/devtools/client/inspector/rules/test/browser_rules_multiple-properties-unfinished_02.js index 8d5e09616baf..dd1360b96cdb 100644 --- a/devtools/client/inspector/rules/test/browser_rules_multiple-properties-unfinished_02.js +++ b/devtools/client/inspector/rules/test/browser_rules_multiple-properties-unfinished_02.js @@ -12,6 +12,11 @@ const TEST_URI = "
Test Element
"; add_task(function* () { yield addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI)); let {inspector, view} = yield openRuleView(); + + // Turn off throttling, which can cause intermittents. Throttling is used by + // the TextPropertyEditor. + view.throttle = () => {}; + yield selectNode("div", inspector); let ruleEditor = getRuleViewRuleEditor(view, 0); diff --git a/devtools/client/inspector/rules/views/rule-editor.js b/devtools/client/inspector/rules/views/rule-editor.js index 375f066682a4..b558657b0a76 100644 --- a/devtools/client/inspector/rules/views/rule-editor.js +++ b/devtools/client/inspector/rules/views/rule-editor.js @@ -149,6 +149,7 @@ RuleEditor.prototype = { editableField({ element: this.selectorText, done: this._onSelectorDone, + cssProperties: this.rule.cssProperties }); } @@ -449,7 +450,8 @@ RuleEditor.prototype = { destroy: this._newPropertyDestroy, advanceChars: ":", contentType: InplaceEditor.CONTENT_TYPES.CSS_PROPERTY, - popup: this.ruleView.popup + popup: this.ruleView.popup, + cssProperties: this.rule.cssProperties }); // Auto-close the input if multiple rules get pasted into new property. diff --git a/devtools/client/inspector/rules/views/text-property-editor.js b/devtools/client/inspector/rules/views/text-property-editor.js index 0d3cb50fa564..4c9acd315955 100644 --- a/devtools/client/inspector/rules/views/text-property-editor.js +++ b/devtools/client/inspector/rules/views/text-property-editor.js @@ -12,8 +12,7 @@ const { createChild, appendText, advanceValidate, - blurOnMultipleProperties, - throttle + blurOnMultipleProperties } = require("devtools/client/inspector/shared/utils"); const { parseDeclarations, @@ -76,7 +75,7 @@ function TextPropertyEditor(ruleEditor, property) { this._onSwatchCommit = this._onSwatchCommit.bind(this); this._onSwatchPreview = this._onSwatchPreview.bind(this); this._onSwatchRevert = this._onSwatchRevert.bind(this); - this._onValidate = throttle(this._previewValue, 10, this); + this._onValidate = this.ruleView.throttle(this._previewValue, 10, this); this.update = this.update.bind(this); this.updatePropertyState = this.updatePropertyState.bind(this); @@ -219,7 +218,8 @@ TextPropertyEditor.prototype = { destroy: this.updatePropertyState, advanceChars: ":", contentType: InplaceEditor.CONTENT_TYPES.CSS_PROPERTY, - popup: this.popup + popup: this.popup, + cssProperties: this.cssProperties }); // Auto blur name field on multiple CSS rules get pasted in. @@ -288,7 +288,8 @@ TextPropertyEditor.prototype = { property: this.prop, popup: this.popup, multiline: true, - maxWidth: () => this.container.getBoundingClientRect().width + maxWidth: () => this.container.getBoundingClientRect().width, + cssProperties: this.cssProperties }); } }, diff --git a/devtools/client/shared/inplace-editor.js b/devtools/client/shared/inplace-editor.js index 78f324a6262a..adf9abce4cac 100644 --- a/devtools/client/shared/inplace-editor.js +++ b/devtools/client/shared/inplace-editor.js @@ -120,6 +120,7 @@ function isKeyIn(key, ...keys) { * {Boolean} preserveTextStyles: If true, do not copy text-related styles * from `element` to the new input. * defaults to false + * {Object} cssProperties: An instance of CSSProperties. */ function editableField(options) { return editableItem(options, function (element, event) { @@ -219,7 +220,7 @@ function InplaceEditor(options, event) { let doc = this.elt.ownerDocument; this.doc = doc; this.elt.inplaceEditor = this; - + this.cssProperties = options.cssProperties; this.change = options.change; this.done = options.done; this.destroy = options.destroy; @@ -1477,7 +1478,7 @@ InplaceEditor.prototype = { * @return {Array} array of CSS property values (Strings) */ _getCSSValuesForPropertyName: function (propertyName) { - return domUtils.getCSSValuesForProperty(propertyName); + return this.cssProperties.getValues(propertyName); }, }; diff --git a/devtools/server/actors/css-properties.js b/devtools/server/actors/css-properties.js index 1f834d68e38e..ba21aec0a720 100644 --- a/devtools/server/actors/css-properties.js +++ b/devtools/server/actors/css-properties.js @@ -10,10 +10,15 @@ loader.lazyGetter(this, "DOMUtils", () => { return Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils); }); +loader.lazyGetter(this, "appInfo", () => { + return Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo); +}); + const protocol = require("devtools/shared/protocol"); const { ActorClassWithSpec, Actor } = protocol; const { cssPropertiesSpec } = require("devtools/shared/specs/css-properties"); const { CSS_PROPERTIES, CSS_TYPES } = require("devtools/shared/css-properties-db"); +const { cssColors } = require("devtools/shared/css-color-db"); exports.CssPropertiesActor = ActorClassWithSpec(cssPropertiesSpec, { typeName: "cssProperties", @@ -27,7 +32,15 @@ exports.CssPropertiesActor = ActorClassWithSpec(cssPropertiesSpec, { Actor.prototype.destroy.call(this); }, - getCSSDatabase() { + getCSSDatabase(clientBrowserVersion) { + // If the client and server are both the same version of Firefox, do not return a + // database, use the client-side css-properties-db.js. + const serverBrowserVersion = appInfo.platformVersion.match(/^\d+/)[0]; + + if (clientBrowserVersion !== 0 && clientBrowserVersion === serverBrowserVersion) { + return {}; + } + const properties = generateCssProperties(); const pseudoElements = DOMUtils.getCSSPseudoElementNames(); @@ -44,6 +57,7 @@ exports.CssPropertiesActor = ActorClassWithSpec(cssPropertiesSpec, { function generateCssProperties() { const properties = {}; const propertyNames = DOMUtils.getCSSPropertyNames(DOMUtils.INCLUDE_ALIASES); + const colors = Object.keys(cssColors); propertyNames.forEach(name => { // Get the list of CSS types this property supports. @@ -54,12 +68,20 @@ function generateCssProperties() { } } + // Don't send colors over RDP, these will be re-attached by the front. + let values = DOMUtils.getCSSValuesForProperty(name); + if (values.includes("aliceblue")) { + values = values.filter(x => !colors.includes(x)); + values.unshift("COLOR"); + } + // In order to maintain any backwards compatible changes when debugging older // clients, take the definition from the static CSS properties database, and fill it // in with the most recent property definition from the server. const clientDefinition = CSS_PROPERTIES[name] || {}; const serverDefinition = { isInherited: DOMUtils.isInheritedProperty(name), + values, supports }; properties[name] = Object.assign(clientDefinition, serverDefinition); diff --git a/devtools/server/tests/mochitest/chrome.ini b/devtools/server/tests/mochitest/chrome.ini index 98691e45e140..68da673be772 100644 --- a/devtools/server/tests/mochitest/chrome.ini +++ b/devtools/server/tests/mochitest/chrome.ini @@ -32,7 +32,8 @@ skip-if = buildapp == 'mulet' [test_css-logic.html] [test_css-logic-media-queries.html] [test_css-logic-specificity.html] -[test_css-properties.html] +[test_css-properties_01.html] +[test_css-properties_02.html] [test_Debugger.Source.prototype.introductionScript.html] [test_Debugger.Source.prototype.introductionType.html] [test_Debugger.Source.prototype.element.html] diff --git a/devtools/server/tests/mochitest/test_css-properties.html b/devtools/server/tests/mochitest/test_css-properties_01.html similarity index 78% rename from devtools/server/tests/mochitest/test_css-properties.html rename to devtools/server/tests/mochitest/test_css-properties_01.html index 1fc933c99095..e2e2f51c57b0 100644 --- a/devtools/server/tests/mochitest/test_css-properties.html +++ b/devtools/server/tests/mochitest/test_css-properties_01.html @@ -25,8 +25,12 @@ window.onload = function() { }) } + function toSortedString(array) { + return JSON.stringify(array.sort()); + } + const runCssPropertiesTests = Task.async(function* (url, useActor) { - info("Opening two tabs."); + info(`Opening two tabs ${useActor ? "with" : "without"} CssPropertiesActor support.`); let attachmentA = yield promiseAttachUrl(url); let attachmentB = yield promiseAttachUrl(url); @@ -73,6 +77,20 @@ window.onload = function() { "A CSS variable unicode properly evaluates."); ok(!cssProperties.isKnown("--foo bar"), "A CSS variable with spaces fails"); + + is(toSortedString(cssProperties.getValues('margin')), + toSortedString(["-moz-calc","auto","calc","inherit","initial","unset"]), + "Can get values for the CSS margin."); + is(cssProperties.getValues('foobar').length, 0, + "Unknown values return an empty array."); + + const bgColorValues = cssProperties.getValues('background-color'); + ok(bgColorValues.includes("blanchedalmond"), + "A property with color values includes blanchedalmond."); + ok(bgColorValues.includes("papayawhip"), + "A property with color values includes papayawhip."); + ok(bgColorValues.includes("rgb"), + "A property with color values includes non-colors."); }); addAsyncTest(function* setup() { diff --git a/devtools/server/tests/mochitest/test_css-properties_02.html b/devtools/server/tests/mochitest/test_css-properties_02.html new file mode 100644 index 000000000000..65262e171131 --- /dev/null +++ b/devtools/server/tests/mochitest/test_css-properties_02.html @@ -0,0 +1,98 @@ + + + + + + Test CSS Properties Actor + + + + + + + Mozilla Bug 1265798 + Test Document + + diff --git a/devtools/shared/css-properties-db.js b/devtools/shared/css-properties-db.js index eb7f12a6a087..855a6cbfb1a8 100644 --- a/devtools/shared/css-properties-db.js +++ b/devtools/shared/css-properties-db.js @@ -94,7 +94,7 @@ console.log("The CSS_PROPERTIES have been copied to your clipboard."); */ /*eslint-disable */ -exports.CSS_PROPERTIES = {"align-content":{"isInherited":false,"supports":[]},"align-items":{"isInherited":false,"supports":[]},"align-self":{"isInherited":false,"supports":[]},"animation-delay":{"isInherited":false,"supports":[9]},"animation-direction":{"isInherited":false,"supports":[]},"animation-duration":{"isInherited":false,"supports":[9]},"animation-fill-mode":{"isInherited":false,"supports":[]},"animation-iteration-count":{"isInherited":false,"supports":[7]},"animation-name":{"isInherited":false,"supports":[]},"animation-play-state":{"isInherited":false,"supports":[]},"animation-timing-function":{"isInherited":false,"supports":[10]},"-moz-appearance":{"isInherited":false,"supports":[]},"backface-visibility":{"isInherited":false,"supports":[]},"background-attachment":{"isInherited":false,"supports":[]},"background-blend-mode":{"isInherited":false,"supports":[]},"background-clip":{"isInherited":false,"supports":[]},"background-color":{"isInherited":false,"supports":[2]},"background-image":{"isInherited":false,"supports":[4,5,11]},"background-origin":{"isInherited":false,"supports":[]},"background-position-x":{"isInherited":false,"supports":[6,8]},"background-position-y":{"isInherited":false,"supports":[6,8]},"background-repeat":{"isInherited":false,"supports":[]},"background-size":{"isInherited":false,"supports":[6,8]},"-moz-binding":{"isInherited":false,"supports":[11]},"block-size":{"isInherited":false,"supports":[6,8]},"border-block-end-color":{"isInherited":false,"supports":[2]},"border-block-end-style":{"isInherited":false,"supports":[]},"border-block-end-width":{"isInherited":false,"supports":[6]},"border-block-start-color":{"isInherited":false,"supports":[2]},"border-block-start-style":{"isInherited":false,"supports":[]},"border-block-start-width":{"isInherited":false,"supports":[6]},"border-bottom-color":{"isInherited":false,"supports":[2]},"-moz-border-bottom-colors":{"isInherited":false,"supports":[2]},"border-bottom-left-radius":{"isInherited":false,"supports":[6,8]},"border-bottom-right-radius":{"isInherited":false,"supports":[6,8]},"border-bottom-style":{"isInherited":false,"supports":[]},"border-bottom-width":{"isInherited":false,"supports":[6]},"border-collapse":{"isInherited":true,"supports":[]},"border-image-outset":{"isInherited":false,"supports":[6,7]},"border-image-repeat":{"isInherited":false,"supports":[]},"border-image-slice":{"isInherited":false,"supports":[7,8]},"border-image-source":{"isInherited":false,"supports":[4,5,11]},"border-image-width":{"isInherited":false,"supports":[6,7,8]},"border-inline-end-color":{"isInherited":false,"supports":[2]},"border-inline-end-style":{"isInherited":false,"supports":[]},"border-inline-end-width":{"isInherited":false,"supports":[6]},"border-inline-start-color":{"isInherited":false,"supports":[2]},"border-inline-start-style":{"isInherited":false,"supports":[]},"border-inline-start-width":{"isInherited":false,"supports":[6]},"border-left-color":{"isInherited":false,"supports":[2]},"-moz-border-left-colors":{"isInherited":false,"supports":[2]},"border-left-style":{"isInherited":false,"supports":[]},"border-left-width":{"isInherited":false,"supports":[6]},"border-right-color":{"isInherited":false,"supports":[2]},"-moz-border-right-colors":{"isInherited":false,"supports":[2]},"border-right-style":{"isInherited":false,"supports":[]},"border-right-width":{"isInherited":false,"supports":[6]},"border-spacing":{"isInherited":true,"supports":[6]},"border-top-color":{"isInherited":false,"supports":[2]},"-moz-border-top-colors":{"isInherited":false,"supports":[2]},"border-top-left-radius":{"isInherited":false,"supports":[6,8]},"border-top-right-radius":{"isInherited":false,"supports":[6,8]},"border-top-style":{"isInherited":false,"supports":[]},"border-top-width":{"isInherited":false,"supports":[6]},"bottom":{"isInherited":false,"supports":[6,8]},"-moz-box-align":{"isInherited":false,"supports":[]},"box-decoration-break":{"isInherited":false,"supports":[]},"-moz-box-direction":{"isInherited":false,"supports":[]},"-moz-box-flex":{"isInherited":false,"supports":[7]},"-moz-box-ordinal-group":{"isInherited":false,"supports":[7]},"-moz-box-orient":{"isInherited":false,"supports":[]},"-moz-box-pack":{"isInherited":false,"supports":[]},"box-shadow":{"isInherited":false,"supports":[2,6]},"box-sizing":{"isInherited":false,"supports":[]},"caption-side":{"isInherited":true,"supports":[]},"clear":{"isInherited":false,"supports":[]},"clip":{"isInherited":false,"supports":[]},"clip-path":{"isInherited":false,"supports":[11]},"clip-rule":{"isInherited":true,"supports":[]},"color":{"isInherited":true,"supports":[2]},"color-adjust":{"isInherited":true,"supports":[]},"color-interpolation":{"isInherited":true,"supports":[]},"color-interpolation-filters":{"isInherited":true,"supports":[]},"-moz-column-count":{"isInherited":false,"supports":[7]},"-moz-column-fill":{"isInherited":false,"supports":[]},"-moz-column-gap":{"isInherited":false,"supports":[6]},"-moz-column-rule-color":{"isInherited":false,"supports":[2]},"-moz-column-rule-style":{"isInherited":false,"supports":[]},"-moz-column-rule-width":{"isInherited":false,"supports":[6]},"-moz-column-width":{"isInherited":false,"supports":[6]},"content":{"isInherited":false,"supports":[11]},"-moz-control-character-visibility":{"isInherited":true,"supports":[]},"counter-increment":{"isInherited":false,"supports":[]},"counter-reset":{"isInherited":false,"supports":[]},"cursor":{"isInherited":true,"supports":[11]},"direction":{"isInherited":true,"supports":[]},"display":{"isInherited":false,"supports":[]},"dominant-baseline":{"isInherited":false,"supports":[]},"empty-cells":{"isInherited":true,"supports":[]},"fill":{"isInherited":true,"supports":[2,11]},"fill-opacity":{"isInherited":true,"supports":[7]},"fill-rule":{"isInherited":true,"supports":[]},"filter":{"isInherited":false,"supports":[11]},"flex-basis":{"isInherited":false,"supports":[6,8]},"flex-direction":{"isInherited":false,"supports":[]},"flex-grow":{"isInherited":false,"supports":[7]},"flex-shrink":{"isInherited":false,"supports":[7]},"flex-wrap":{"isInherited":false,"supports":[]},"float":{"isInherited":false,"supports":[]},"-moz-float-edge":{"isInherited":false,"supports":[]},"flood-color":{"isInherited":false,"supports":[2]},"flood-opacity":{"isInherited":false,"supports":[7]},"font-family":{"isInherited":true,"supports":[]},"font-feature-settings":{"isInherited":true,"supports":[]},"font-kerning":{"isInherited":true,"supports":[]},"font-language-override":{"isInherited":true,"supports":[]},"font-size":{"isInherited":true,"supports":[6,8]},"font-size-adjust":{"isInherited":true,"supports":[7]},"font-stretch":{"isInherited":true,"supports":[]},"font-style":{"isInherited":true,"supports":[]},"font-synthesis":{"isInherited":true,"supports":[]},"font-variant-alternates":{"isInherited":true,"supports":[]},"font-variant-caps":{"isInherited":true,"supports":[]},"font-variant-east-asian":{"isInherited":true,"supports":[]},"font-variant-ligatures":{"isInherited":true,"supports":[]},"font-variant-numeric":{"isInherited":true,"supports":[]},"font-variant-position":{"isInherited":true,"supports":[]},"font-weight":{"isInherited":true,"supports":[7]},"-moz-force-broken-image-icon":{"isInherited":false,"supports":[7]},"grid-auto-columns":{"isInherited":false,"supports":[6,8]},"grid-auto-flow":{"isInherited":false,"supports":[]},"grid-auto-rows":{"isInherited":false,"supports":[6,8]},"grid-column-end":{"isInherited":false,"supports":[7]},"grid-column-gap":{"isInherited":false,"supports":[6,8]},"grid-column-start":{"isInherited":false,"supports":[7]},"grid-row-end":{"isInherited":false,"supports":[7]},"grid-row-gap":{"isInherited":false,"supports":[6,8]},"grid-row-start":{"isInherited":false,"supports":[7]},"grid-template-areas":{"isInherited":false,"supports":[]},"grid-template-columns":{"isInherited":false,"supports":[6,8]},"grid-template-rows":{"isInherited":false,"supports":[6,8]},"height":{"isInherited":false,"supports":[6,8]},"hyphens":{"isInherited":true,"supports":[]},"image-orientation":{"isInherited":true,"supports":[1]},"-moz-image-region":{"isInherited":true,"supports":[]},"image-rendering":{"isInherited":true,"supports":[]},"ime-mode":{"isInherited":false,"supports":[]},"inline-size":{"isInherited":false,"supports":[6,8]},"isolation":{"isInherited":false,"supports":[]},"justify-content":{"isInherited":false,"supports":[]},"justify-items":{"isInherited":false,"supports":[]},"justify-self":{"isInherited":false,"supports":[]},"left":{"isInherited":false,"supports":[6,8]},"letter-spacing":{"isInherited":true,"supports":[6]},"lighting-color":{"isInherited":false,"supports":[2]},"line-height":{"isInherited":true,"supports":[6,7,8]},"list-style-image":{"isInherited":true,"supports":[11]},"list-style-position":{"isInherited":true,"supports":[]},"list-style-type":{"isInherited":true,"supports":[]},"margin-block-end":{"isInherited":false,"supports":[6,8]},"margin-block-start":{"isInherited":false,"supports":[6,8]},"margin-bottom":{"isInherited":false,"supports":[6,8]},"margin-inline-end":{"isInherited":false,"supports":[6,8]},"margin-inline-start":{"isInherited":false,"supports":[6,8]},"margin-left":{"isInherited":false,"supports":[6,8]},"margin-right":{"isInherited":false,"supports":[6,8]},"margin-top":{"isInherited":false,"supports":[6,8]},"marker-end":{"isInherited":true,"supports":[11]},"marker-mid":{"isInherited":true,"supports":[11]},"marker-offset":{"isInherited":false,"supports":[6]},"marker-start":{"isInherited":true,"supports":[11]},"mask":{"isInherited":false,"supports":[11]},"mask-type":{"isInherited":false,"supports":[]},"max-block-size":{"isInherited":false,"supports":[6,8]},"max-height":{"isInherited":false,"supports":[6,8]},"max-inline-size":{"isInherited":false,"supports":[6,8]},"max-width":{"isInherited":false,"supports":[6,8]},"min-block-size":{"isInherited":false,"supports":[6,8]},"min-height":{"isInherited":false,"supports":[6,8]},"min-inline-size":{"isInherited":false,"supports":[6,8]},"min-width":{"isInherited":false,"supports":[6,8]},"mix-blend-mode":{"isInherited":false,"supports":[]},"object-fit":{"isInherited":false,"supports":[]},"object-position":{"isInherited":false,"supports":[6,8]},"offset-block-end":{"isInherited":false,"supports":[6,8]},"offset-block-start":{"isInherited":false,"supports":[6,8]},"offset-inline-end":{"isInherited":false,"supports":[6,8]},"offset-inline-start":{"isInherited":false,"supports":[6,8]},"opacity":{"isInherited":false,"supports":[7]},"order":{"isInherited":false,"supports":[7]},"-moz-orient":{"isInherited":false,"supports":[]},"outline-color":{"isInherited":false,"supports":[2]},"outline-offset":{"isInherited":false,"supports":[6]},"-moz-outline-radius-bottomleft":{"isInherited":false,"supports":[6,8]},"-moz-outline-radius-bottomright":{"isInherited":false,"supports":[6,8]},"-moz-outline-radius-topleft":{"isInherited":false,"supports":[6,8]},"-moz-outline-radius-topright":{"isInherited":false,"supports":[6,8]},"outline-style":{"isInherited":false,"supports":[]},"outline-width":{"isInherited":false,"supports":[6]},"overflow-x":{"isInherited":false,"supports":[]},"overflow-y":{"isInherited":false,"supports":[]},"padding-block-end":{"isInherited":false,"supports":[6,8]},"padding-block-start":{"isInherited":false,"supports":[6,8]},"padding-bottom":{"isInherited":false,"supports":[6,8]},"padding-inline-end":{"isInherited":false,"supports":[6,8]},"padding-inline-start":{"isInherited":false,"supports":[6,8]},"padding-left":{"isInherited":false,"supports":[6,8]},"padding-right":{"isInherited":false,"supports":[6,8]},"padding-top":{"isInherited":false,"supports":[6,8]},"page-break-after":{"isInherited":false,"supports":[]},"page-break-before":{"isInherited":false,"supports":[]},"page-break-inside":{"isInherited":false,"supports":[]},"paint-order":{"isInherited":true,"supports":[]},"perspective":{"isInherited":false,"supports":[6]},"perspective-origin":{"isInherited":false,"supports":[6,8]},"pointer-events":{"isInherited":true,"supports":[]},"position":{"isInherited":false,"supports":[]},"quotes":{"isInherited":true,"supports":[]},"resize":{"isInherited":false,"supports":[]},"right":{"isInherited":false,"supports":[6,8]},"ruby-align":{"isInherited":true,"supports":[]},"ruby-position":{"isInherited":true,"supports":[]},"scroll-behavior":{"isInherited":false,"supports":[]},"scroll-snap-coordinate":{"isInherited":false,"supports":[6,8]},"scroll-snap-destination":{"isInherited":false,"supports":[6,8]},"scroll-snap-points-x":{"isInherited":false,"supports":[]},"scroll-snap-points-y":{"isInherited":false,"supports":[]},"scroll-snap-type-x":{"isInherited":false,"supports":[]},"scroll-snap-type-y":{"isInherited":false,"supports":[]},"shape-rendering":{"isInherited":true,"supports":[]},"-moz-stack-sizing":{"isInherited":false,"supports":[]},"stop-color":{"isInherited":false,"supports":[2]},"stop-opacity":{"isInherited":false,"supports":[7]},"stroke":{"isInherited":true,"supports":[2,11]},"stroke-dasharray":{"isInherited":true,"supports":[6,7,8]},"stroke-dashoffset":{"isInherited":true,"supports":[6,7,8]},"stroke-linecap":{"isInherited":true,"supports":[]},"stroke-linejoin":{"isInherited":true,"supports":[]},"stroke-miterlimit":{"isInherited":true,"supports":[7]},"stroke-opacity":{"isInherited":true,"supports":[7]},"stroke-width":{"isInherited":true,"supports":[6,7,8]},"-moz-tab-size":{"isInherited":true,"supports":[7]},"table-layout":{"isInherited":false,"supports":[]},"text-align":{"isInherited":true,"supports":[]},"text-align-last":{"isInherited":true,"supports":[]},"text-anchor":{"isInherited":true,"supports":[]},"text-combine-upright":{"isInherited":true,"supports":[]},"text-decoration-color":{"isInherited":false,"supports":[2]},"text-decoration-line":{"isInherited":false,"supports":[]},"text-decoration-style":{"isInherited":false,"supports":[]},"text-emphasis-color":{"isInherited":true,"supports":[2]},"text-emphasis-position":{"isInherited":true,"supports":[]},"text-emphasis-style":{"isInherited":true,"supports":[]},"-webkit-text-fill-color":{"isInherited":true,"supports":[2]},"text-indent":{"isInherited":true,"supports":[6,8]},"text-orientation":{"isInherited":true,"supports":[]},"text-overflow":{"isInherited":false,"supports":[]},"text-rendering":{"isInherited":true,"supports":[]},"text-shadow":{"isInherited":true,"supports":[2,6]},"-moz-text-size-adjust":{"isInherited":true,"supports":[]},"-webkit-text-stroke-color":{"isInherited":true,"supports":[2]},"-webkit-text-stroke-width":{"isInherited":true,"supports":[6]},"text-transform":{"isInherited":true,"supports":[]},"top":{"isInherited":false,"supports":[6,8]},"touch-action":{"isInherited":false,"supports":[]},"transform":{"isInherited":false,"supports":[]},"transform-box":{"isInherited":false,"supports":[]},"transform-origin":{"isInherited":false,"supports":[6,8]},"transform-style":{"isInherited":false,"supports":[]},"transition-delay":{"isInherited":false,"supports":[9]},"transition-duration":{"isInherited":false,"supports":[9]},"transition-property":{"isInherited":false,"supports":[]},"transition-timing-function":{"isInherited":false,"supports":[10]},"unicode-bidi":{"isInherited":false,"supports":[]},"-moz-user-focus":{"isInherited":true,"supports":[]},"-moz-user-input":{"isInherited":true,"supports":[]},"-moz-user-modify":{"isInherited":true,"supports":[]},"-moz-user-select":{"isInherited":false,"supports":[]},"vector-effect":{"isInherited":false,"supports":[]},"vertical-align":{"isInherited":false,"supports":[6,8]},"visibility":{"isInherited":true,"supports":[]},"white-space":{"isInherited":true,"supports":[]},"width":{"isInherited":false,"supports":[6,8]},"will-change":{"isInherited":false,"supports":[]},"-moz-window-dragging":{"isInherited":false,"supports":[]},"word-break":{"isInherited":true,"supports":[]},"word-spacing":{"isInherited":true,"supports":[6,8]},"overflow-wrap":{"isInherited":true,"supports":[]},"writing-mode":{"isInherited":true,"supports":[]},"z-index":{"isInherited":false,"supports":[7]},"all":{"isInherited":false,"supports":[1,2,4,5,6,7,8,9,10,11]},"animation":{"isInherited":false,"supports":[7,9,10]},"background":{"isInherited":false,"supports":[2,4,5,6,8,11]},"background-position":{"isInherited":false,"supports":[6,8]},"border":{"isInherited":false,"supports":[2,6]},"border-block-end":{"isInherited":false,"supports":[2,6]},"border-block-start":{"isInherited":false,"supports":[2,6]},"border-bottom":{"isInherited":false,"supports":[2,6]},"border-color":{"isInherited":false,"supports":[2]},"border-image":{"isInherited":false,"supports":[4,5,6,7,8,11]},"border-inline-end":{"isInherited":false,"supports":[2,6]},"border-inline-start":{"isInherited":false,"supports":[2,6]},"border-left":{"isInherited":false,"supports":[2,6]},"border-radius":{"isInherited":false,"supports":[6,8]},"border-right":{"isInherited":false,"supports":[2,6]},"border-style":{"isInherited":false,"supports":[]},"border-top":{"isInherited":false,"supports":[2,6]},"border-width":{"isInherited":false,"supports":[6]},"-moz-column-rule":{"isInherited":false,"supports":[2,6]},"-moz-columns":{"isInherited":false,"supports":[6,7]},"flex":{"isInherited":false,"supports":[6,7,8]},"flex-flow":{"isInherited":false,"supports":[]},"font":{"isInherited":true,"supports":[6,7,8]},"font-variant":{"isInherited":true,"supports":[]},"grid":{"isInherited":false,"supports":[6,8]},"grid-area":{"isInherited":false,"supports":[7]},"grid-column":{"isInherited":false,"supports":[7]},"grid-gap":{"isInherited":false,"supports":[6,8]},"grid-row":{"isInherited":false,"supports":[7]},"grid-template":{"isInherited":false,"supports":[6,8]},"list-style":{"isInherited":true,"supports":[11]},"margin":{"isInherited":false,"supports":[6,8]},"marker":{"isInherited":true,"supports":[11]},"outline":{"isInherited":false,"supports":[2,6]},"-moz-outline-radius":{"isInherited":false,"supports":[6,8]},"overflow":{"isInherited":false,"supports":[]},"padding":{"isInherited":false,"supports":[6,8]},"scroll-snap-type":{"isInherited":false,"supports":[]},"text-decoration":{"isInherited":false,"supports":[2]},"text-emphasis":{"isInherited":true,"supports":[2]},"-webkit-text-stroke":{"isInherited":true,"supports":[2,6]},"-moz-transform":{"isInherited":false,"supports":[]},"transition":{"isInherited":false,"supports":[9,10]},"word-wrap":{"isInherited":true,"supports":[]},"-moz-transform-origin":{"isInherited":false,"supports":[6,8]},"-moz-perspective-origin":{"isInherited":false,"supports":[6,8]},"-moz-perspective":{"isInherited":false,"supports":[6]},"-moz-transform-style":{"isInherited":false,"supports":[]},"-moz-backface-visibility":{"isInherited":false,"supports":[]},"-moz-border-image":{"isInherited":false,"supports":[4,5,6,7,8,11]},"-moz-transition":{"isInherited":false,"supports":[9,10]},"-moz-transition-delay":{"isInherited":false,"supports":[9]},"-moz-transition-duration":{"isInherited":false,"supports":[9]},"-moz-transition-property":{"isInherited":false,"supports":[]},"-moz-transition-timing-function":{"isInherited":false,"supports":[10]},"-moz-animation":{"isInherited":false,"supports":[7,9,10]},"-moz-animation-delay":{"isInherited":false,"supports":[9]},"-moz-animation-direction":{"isInherited":false,"supports":[]},"-moz-animation-duration":{"isInherited":false,"supports":[9]},"-moz-animation-fill-mode":{"isInherited":false,"supports":[]},"-moz-animation-iteration-count":{"isInherited":false,"supports":[7]},"-moz-animation-name":{"isInherited":false,"supports":[]},"-moz-animation-play-state":{"isInherited":false,"supports":[]},"-moz-animation-timing-function":{"isInherited":false,"supports":[10]},"-moz-box-sizing":{"isInherited":false,"supports":[]},"-moz-font-feature-settings":{"isInherited":true,"supports":[]},"-moz-font-language-override":{"isInherited":true,"supports":[]},"-moz-padding-end":{"isInherited":false,"supports":[6,8]},"-moz-padding-start":{"isInherited":false,"supports":[6,8]},"-moz-margin-end":{"isInherited":false,"supports":[6,8]},"-moz-margin-start":{"isInherited":false,"supports":[6,8]},"-moz-border-end":{"isInherited":false,"supports":[2,6]},"-moz-border-end-color":{"isInherited":false,"supports":[2]},"-moz-border-end-style":{"isInherited":false,"supports":[]},"-moz-border-end-width":{"isInherited":false,"supports":[6]},"-moz-border-start":{"isInherited":false,"supports":[2,6]},"-moz-border-start-color":{"isInherited":false,"supports":[2]},"-moz-border-start-style":{"isInherited":false,"supports":[]},"-moz-border-start-width":{"isInherited":false,"supports":[6]},"-moz-hyphens":{"isInherited":true,"supports":[]},"-moz-text-align-last":{"isInherited":true,"supports":[]},"-webkit-animation":{"isInherited":false,"supports":[7,9,10]},"-webkit-animation-delay":{"isInherited":false,"supports":[9]},"-webkit-animation-direction":{"isInherited":false,"supports":[]},"-webkit-animation-duration":{"isInherited":false,"supports":[9]},"-webkit-animation-fill-mode":{"isInherited":false,"supports":[]},"-webkit-animation-iteration-count":{"isInherited":false,"supports":[7]},"-webkit-animation-name":{"isInherited":false,"supports":[]},"-webkit-animation-play-state":{"isInherited":false,"supports":[]},"-webkit-animation-timing-function":{"isInherited":false,"supports":[10]},"-webkit-filter":{"isInherited":false,"supports":[11]},"-webkit-text-size-adjust":{"isInherited":true,"supports":[]},"-webkit-transform":{"isInherited":false,"supports":[]},"-webkit-transform-origin":{"isInherited":false,"supports":[6,8]},"-webkit-transform-style":{"isInherited":false,"supports":[]},"-webkit-backface-visibility":{"isInherited":false,"supports":[]},"-webkit-perspective":{"isInherited":false,"supports":[6]},"-webkit-perspective-origin":{"isInherited":false,"supports":[6,8]},"-webkit-transition":{"isInherited":false,"supports":[9,10]},"-webkit-transition-delay":{"isInherited":false,"supports":[9]},"-webkit-transition-duration":{"isInherited":false,"supports":[9]},"-webkit-transition-property":{"isInherited":false,"supports":[]},"-webkit-transition-timing-function":{"isInherited":false,"supports":[10]},"-webkit-border-radius":{"isInherited":false,"supports":[6,8]},"-webkit-border-top-left-radius":{"isInherited":false,"supports":[6,8]},"-webkit-border-top-right-radius":{"isInherited":false,"supports":[6,8]},"-webkit-border-bottom-left-radius":{"isInherited":false,"supports":[6,8]},"-webkit-border-bottom-right-radius":{"isInherited":false,"supports":[6,8]},"-webkit-background-clip":{"isInherited":false,"supports":[]},"-webkit-background-origin":{"isInherited":false,"supports":[]},"-webkit-background-size":{"isInherited":false,"supports":[6,8]},"-webkit-border-image":{"isInherited":false,"supports":[4,5,6,7,8,11]},"-webkit-box-shadow":{"isInherited":false,"supports":[2,6]},"-webkit-box-sizing":{"isInherited":false,"supports":[]},"-webkit-box-flex":{"isInherited":false,"supports":[7]},"-webkit-box-ordinal-group":{"isInherited":false,"supports":[7]},"-webkit-box-orient":{"isInherited":false,"supports":[]},"-webkit-box-direction":{"isInherited":false,"supports":[]},"-webkit-box-align":{"isInherited":false,"supports":[]},"-webkit-box-pack":{"isInherited":false,"supports":[]},"-webkit-flex-direction":{"isInherited":false,"supports":[]},"-webkit-flex-wrap":{"isInherited":false,"supports":[]},"-webkit-flex-flow":{"isInherited":false,"supports":[]},"-webkit-order":{"isInherited":false,"supports":[7]},"-webkit-flex":{"isInherited":false,"supports":[6,7,8]},"-webkit-flex-grow":{"isInherited":false,"supports":[7]},"-webkit-flex-shrink":{"isInherited":false,"supports":[7]},"-webkit-flex-basis":{"isInherited":false,"supports":[6,8]},"-webkit-justify-content":{"isInherited":false,"supports":[]},"-webkit-align-items":{"isInherited":false,"supports":[]},"-webkit-align-self":{"isInherited":false,"supports":[]},"-webkit-align-content":{"isInherited":false,"supports":[]},"-webkit-user-select":{"isInherited":false,"supports":[]}}; +exports.CSS_PROPERTIES = {"align-content":{"isInherited":false,"supports":[],"values":["baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","space-around","space-between","space-evenly","start","stretch","unset"]},"align-items":{"isInherited":false,"supports":[],"values":["baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","self-end","self-start","start","stretch","unset"]},"align-self":{"isInherited":false,"supports":[],"values":["auto","baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","self-end","self-start","start","stretch","unset"]},"animation-delay":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"animation-direction":{"isInherited":false,"supports":[],"values":["alternate","alternate-reverse","inherit","initial","normal","reverse","unset"]},"animation-duration":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"animation-fill-mode":{"isInherited":false,"supports":[],"values":["backwards","both","forwards","inherit","initial","none","unset"]},"animation-iteration-count":{"isInherited":false,"supports":[7],"values":["infinite","inherit","initial","unset"]},"animation-name":{"isInherited":false,"supports":[],"values":["inherit","initial","none","unset"]},"animation-play-state":{"isInherited":false,"supports":[],"values":["inherit","initial","paused","running","unset"]},"animation-timing-function":{"isInherited":false,"supports":[10],"values":["cubic-bezier","ease","ease-in","ease-in-out","ease-out","inherit","initial","linear","step-end","step-start","steps","unset"]},"-moz-appearance":{"isInherited":false,"supports":[],"values":["-moz-gtk-info-bar","-moz-mac-disclosure-button-closed","-moz-mac-disclosure-button-open","-moz-mac-fullscreen-button","-moz-mac-help-button","-moz-mac-source-list","-moz-mac-vibrancy-dark","-moz-mac-vibrancy-light","-moz-win-borderless-glass","-moz-win-browsertabbar-toolbox","-moz-win-communications-toolbox","-moz-win-exclude-glass","-moz-win-glass","-moz-win-media-toolbox","-moz-window-button-box","-moz-window-button-box-maximized","-moz-window-button-close","-moz-window-button-maximize","-moz-window-button-minimize","-moz-window-button-restore","-moz-window-frame-bottom","-moz-window-frame-left","-moz-window-frame-right","-moz-window-titlebar","-moz-window-titlebar-maximized","button","button-arrow-down","button-arrow-next","button-arrow-previous","button-arrow-up","button-bevel","button-focus","caret","checkbox","checkbox-container","checkbox-label","checkmenuitem","dialog","dualbutton","groupbox","inherit","initial","listbox","listitem","menuarrow","menubar","menucheckbox","menuimage","menuitem","menuitemtext","menulist","menulist-button","menulist-text","menulist-textfield","menupopup","menuradio","menuseparator","meterbar","meterchunk","none","number-input","progressbar","progressbar-vertical","progresschunk","progresschunk-vertical","radio","radio-container","radio-label","radiomenuitem","range","range-thumb","resizer","resizerpanel","scale-horizontal","scale-vertical","scalethumb-horizontal","scalethumb-vertical","scalethumbend","scalethumbstart","scalethumbtick","scrollbar","scrollbar-horizontal","scrollbar-small","scrollbar-vertical","scrollbarbutton-down","scrollbarbutton-left","scrollbarbutton-right","scrollbarbutton-up","scrollbarthumb-horizontal","scrollbarthumb-vertical","scrollbartrack-horizontal","scrollbartrack-vertical","searchfield","separator","spinner","spinner-downbutton","spinner-textfield","spinner-upbutton","splitter","statusbar","statusbarpanel","tab","tab-scroll-arrow-back","tab-scroll-arrow-forward","tabpanel","tabpanels","textfield","textfield-multiline","toolbar","toolbarbutton","toolbarbutton-dropdown","toolbargripper","toolbox","tooltip","treeheader","treeheadercell","treeheadersortarrow","treeitem","treeline","treetwisty","treetwistyopen","treeview","unset","window"]},"backface-visibility":{"isInherited":false,"supports":[],"values":["hidden","inherit","initial","unset","visible"]},"background-attachment":{"isInherited":false,"supports":[],"values":["fixed","inherit","initial","local","scroll","unset"]},"background-blend-mode":{"isInherited":false,"supports":[],"values":["color","color-burn","color-dodge","darken","difference","exclusion","hard-light","hue","inherit","initial","lighten","luminosity","multiply","normal","overlay","saturation","screen","soft-light","unset"]},"background-clip":{"isInherited":false,"supports":[],"values":["border-box","content-box","inherit","initial","padding-box","text","unset"]},"background-color":{"isInherited":false,"supports":[2],"values":["COLOR","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"background-image":{"isInherited":false,"supports":[4,5,11],"values":["-moz-element","-moz-image-rect","-moz-linear-gradient","-moz-radial-gradient","-moz-repeating-linear-gradient","-moz-repeating-radial-gradient","inherit","initial","linear-gradient","none","radial-gradient","repeating-linear-gradient","repeating-radial-gradient","unset","url"]},"background-origin":{"isInherited":false,"supports":[],"values":["border-box","content-box","inherit","initial","padding-box","unset"]},"background-position-x":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"background-position-y":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"background-repeat":{"isInherited":false,"supports":[],"values":["inherit","initial","no-repeat","repeat","repeat-x","repeat-y","round","space","unset"]},"background-size":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-moz-binding":{"isInherited":false,"supports":[11],"values":["inherit","initial","none","unset","url"]},"block-size":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"border-block-end-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"border-block-end-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"border-block-end-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"border-block-start-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"border-block-start-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"border-block-start-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"border-bottom-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"-moz-border-bottom-colors":{"isInherited":false,"supports":[2],"values":["inherit","initial","unset"]},"border-bottom-left-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"border-bottom-right-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"border-bottom-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"border-bottom-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"border-collapse":{"isInherited":true,"supports":[],"values":["collapse","inherit","initial","separate","unset"]},"border-image-outset":{"isInherited":false,"supports":[6,7],"values":["inherit","initial","unset"]},"border-image-repeat":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"border-image-slice":{"isInherited":false,"supports":[7,8],"values":["inherit","initial","unset"]},"border-image-source":{"isInherited":false,"supports":[4,5,11],"values":["-moz-element","-moz-image-rect","-moz-linear-gradient","-moz-radial-gradient","-moz-repeating-linear-gradient","-moz-repeating-radial-gradient","inherit","initial","linear-gradient","none","radial-gradient","repeating-linear-gradient","repeating-radial-gradient","unset","url"]},"border-image-width":{"isInherited":false,"supports":[6,7,8],"values":["inherit","initial","unset"]},"border-inline-end-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"border-inline-end-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"border-inline-end-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"border-inline-start-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"border-inline-start-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"border-inline-start-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"border-left-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"-moz-border-left-colors":{"isInherited":false,"supports":[2],"values":["inherit","initial","unset"]},"border-left-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"border-left-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"border-right-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"-moz-border-right-colors":{"isInherited":false,"supports":[2],"values":["inherit","initial","unset"]},"border-right-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"border-right-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"border-spacing":{"isInherited":true,"supports":[6],"values":["inherit","initial","unset"]},"border-top-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"-moz-border-top-colors":{"isInherited":false,"supports":[2],"values":["inherit","initial","unset"]},"border-top-left-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"border-top-right-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"border-top-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"border-top-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"bottom":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"-moz-box-align":{"isInherited":false,"supports":[],"values":["baseline","center","end","inherit","initial","start","stretch","unset"]},"box-decoration-break":{"isInherited":false,"supports":[],"values":["clone","inherit","initial","slice","unset"]},"-moz-box-direction":{"isInherited":false,"supports":[],"values":["inherit","initial","normal","reverse","unset"]},"-moz-box-flex":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"-moz-box-ordinal-group":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"-moz-box-orient":{"isInherited":false,"supports":[],"values":["block-axis","horizontal","inherit","initial","inline-axis","unset","vertical"]},"-moz-box-pack":{"isInherited":false,"supports":[],"values":["center","end","inherit","initial","justify","start","unset"]},"box-shadow":{"isInherited":false,"supports":[2,6],"values":["inherit","initial","unset"]},"box-sizing":{"isInherited":false,"supports":[],"values":["border-box","content-box","inherit","initial","unset"]},"caption-side":{"isInherited":true,"supports":[],"values":["bottom","bottom-outside","inherit","initial","left","right","top","top-outside","unset"]},"clear":{"isInherited":false,"supports":[],"values":["both","inherit","initial","inline-end","inline-start","left","none","right","unset"]},"clip":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"clip-path":{"isInherited":false,"supports":[11],"values":["inherit","initial","unset"]},"clip-rule":{"isInherited":true,"supports":[],"values":["evenodd","inherit","initial","nonzero","unset"]},"color":{"isInherited":true,"supports":[2],"values":["COLOR","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"color-adjust":{"isInherited":true,"supports":[],"values":["economy","exact","inherit","initial","unset"]},"color-interpolation":{"isInherited":true,"supports":[],"values":["auto","inherit","initial","linearrgb","srgb","unset"]},"color-interpolation-filters":{"isInherited":true,"supports":[],"values":["auto","inherit","initial","linearrgb","srgb","unset"]},"-moz-column-count":{"isInherited":false,"supports":[7],"values":["auto","inherit","initial","unset"]},"-moz-column-fill":{"isInherited":false,"supports":[],"values":["auto","balance","inherit","initial","unset"]},"-moz-column-gap":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","normal","unset"]},"-moz-column-rule-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"-moz-column-rule-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"-moz-column-rule-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"-moz-column-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"content":{"isInherited":false,"supports":[11],"values":["inherit","initial","unset"]},"-moz-control-character-visibility":{"isInherited":true,"supports":[],"values":["hidden","inherit","initial","unset","visible"]},"counter-increment":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"counter-reset":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"cursor":{"isInherited":true,"supports":[11],"values":["inherit","initial","unset"]},"direction":{"isInherited":true,"supports":[],"values":["inherit","initial","ltr","rtl","unset"]},"display":{"isInherited":false,"supports":[],"values":["-moz-box","-moz-deck","-moz-grid","-moz-grid-group","-moz-grid-line","-moz-groupbox","-moz-inline-box","-moz-inline-grid","-moz-inline-stack","-moz-popup","-moz-stack","-webkit-box","-webkit-flex","-webkit-inline-box","-webkit-inline-flex","block","contents","flex","grid","inherit","initial","inline","inline-block","inline-flex","inline-grid","inline-table","list-item","none","ruby","ruby-base","ruby-base-container","ruby-text","ruby-text-container","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","unset"]},"dominant-baseline":{"isInherited":false,"supports":[],"values":["alphabetic","auto","central","hanging","ideographic","inherit","initial","mathematical","middle","no-change","reset-size","text-after-edge","text-before-edge","unset","use-script"]},"empty-cells":{"isInherited":true,"supports":[],"values":["hide","inherit","initial","show","unset"]},"fill":{"isInherited":true,"supports":[2,11],"values":["inherit","initial","unset"]},"fill-opacity":{"isInherited":true,"supports":[7],"values":["inherit","initial","unset"]},"fill-rule":{"isInherited":true,"supports":[],"values":["evenodd","inherit","initial","nonzero","unset"]},"filter":{"isInherited":false,"supports":[11],"values":["inherit","initial","unset"]},"flex-basis":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"flex-direction":{"isInherited":false,"supports":[],"values":["column","column-reverse","inherit","initial","row","row-reverse","unset"]},"flex-grow":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"flex-shrink":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"flex-wrap":{"isInherited":false,"supports":[],"values":["inherit","initial","nowrap","unset","wrap","wrap-reverse"]},"float":{"isInherited":false,"supports":[],"values":["inherit","initial","inline-end","inline-start","left","none","right","unset"]},"-moz-float-edge":{"isInherited":false,"supports":[],"values":["content-box","inherit","initial","margin-box","unset"]},"flood-color":{"isInherited":false,"supports":[2],"values":["COLOR","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"flood-opacity":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"font-family":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"font-feature-settings":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"font-kerning":{"isInherited":true,"supports":[],"values":["auto","inherit","initial","none","normal","unset"]},"font-language-override":{"isInherited":true,"supports":[],"values":["inherit","initial","normal","unset"]},"font-size":{"isInherited":true,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","large","larger","medium","small","smaller","unset","x-large","x-small","xx-large","xx-small"]},"font-size-adjust":{"isInherited":true,"supports":[7],"values":["inherit","initial","none","unset"]},"font-stretch":{"isInherited":true,"supports":[],"values":["condensed","expanded","extra-condensed","extra-expanded","inherit","initial","normal","semi-condensed","semi-expanded","ultra-condensed","ultra-expanded","unset"]},"font-style":{"isInherited":true,"supports":[],"values":["inherit","initial","italic","normal","oblique","unset"]},"font-synthesis":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"font-variant-alternates":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"font-variant-caps":{"isInherited":true,"supports":[],"values":["all-petite-caps","all-small-caps","inherit","initial","normal","petite-caps","small-caps","titling-caps","unicase","unset"]},"font-variant-east-asian":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"font-variant-ligatures":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"font-variant-numeric":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"font-variant-position":{"isInherited":true,"supports":[],"values":["inherit","initial","normal","sub","super","unset"]},"font-weight":{"isInherited":true,"supports":[7],"values":["inherit","initial","unset"]},"-moz-force-broken-image-icon":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"grid-auto-columns":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"grid-auto-flow":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"grid-auto-rows":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"grid-column-end":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"grid-column-gap":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"grid-column-start":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"grid-row-end":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"grid-row-gap":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"grid-row-start":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"grid-template-areas":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"grid-template-columns":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"grid-template-rows":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"height":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"hyphens":{"isInherited":true,"supports":[],"values":["auto","inherit","initial","manual","none","unset"]},"image-orientation":{"isInherited":true,"supports":[1],"values":["inherit","initial","unset"]},"-moz-image-region":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"image-rendering":{"isInherited":true,"supports":[],"values":["-moz-crisp-edges","auto","inherit","initial","optimizequality","optimizespeed","unset"]},"ime-mode":{"isInherited":false,"supports":[],"values":["active","auto","disabled","inactive","inherit","initial","normal","unset"]},"inline-size":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"isolation":{"isInherited":false,"supports":[],"values":["auto","inherit","initial","isolate","unset"]},"justify-content":{"isInherited":false,"supports":[],"values":["baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","space-around","space-between","space-evenly","start","stretch","unset"]},"justify-items":{"isInherited":false,"supports":[],"values":["auto","baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","self-end","self-start","start","stretch","unset"]},"justify-self":{"isInherited":false,"supports":[],"values":["auto","baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","self-end","self-start","start","stretch","unset"]},"left":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"letter-spacing":{"isInherited":true,"supports":[6],"values":["-moz-calc","calc","inherit","initial","normal","unset"]},"lighting-color":{"isInherited":false,"supports":[2],"values":["COLOR","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"line-height":{"isInherited":true,"supports":[6,7,8],"values":["-moz-block-height","-moz-calc","calc","inherit","initial","normal","unset"]},"list-style-image":{"isInherited":true,"supports":[11],"values":["inherit","initial","none","unset","url"]},"list-style-position":{"isInherited":true,"supports":[],"values":["inherit","initial","inside","outside","unset"]},"list-style-type":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"margin-block-end":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"margin-block-start":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"margin-bottom":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"margin-inline-end":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"margin-inline-start":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"margin-left":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"margin-right":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"margin-top":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"marker-end":{"isInherited":true,"supports":[11],"values":["inherit","initial","none","unset","url"]},"marker-mid":{"isInherited":true,"supports":[11],"values":["inherit","initial","none","unset","url"]},"marker-offset":{"isInherited":false,"supports":[6],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"marker-start":{"isInherited":true,"supports":[11],"values":["inherit","initial","none","unset","url"]},"mask":{"isInherited":false,"supports":[11],"values":["inherit","initial","none","unset","url"]},"mask-type":{"isInherited":false,"supports":[],"values":["alpha","inherit","initial","luminance","unset"]},"max-block-size":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","none","unset"]},"max-height":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","calc","inherit","initial","none","unset"]},"max-inline-size":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","calc","inherit","initial","none","unset"]},"max-width":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","calc","inherit","initial","none","unset"]},"min-block-size":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"min-height":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"min-inline-size":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"min-width":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"mix-blend-mode":{"isInherited":false,"supports":[],"values":["color","color-burn","color-dodge","darken","difference","exclusion","hard-light","hue","inherit","initial","lighten","luminosity","multiply","normal","overlay","saturation","screen","soft-light","unset"]},"object-fit":{"isInherited":false,"supports":[],"values":["contain","cover","fill","inherit","initial","none","scale-down","unset"]},"object-position":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"offset-block-end":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"offset-block-start":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"offset-inline-end":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"offset-inline-start":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"opacity":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"order":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"-moz-orient":{"isInherited":false,"supports":[],"values":["block","horizontal","inherit","initial","inline","unset","vertical"]},"outline-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"outline-offset":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","unset"]},"-moz-outline-radius-bottomleft":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-moz-outline-radius-bottomright":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-moz-outline-radius-topleft":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-moz-outline-radius-topright":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"outline-style":{"isInherited":false,"supports":[],"values":["auto","dashed","dotted","double","groove","inherit","initial","inset","none","outset","ridge","solid","unset"]},"outline-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"overflow-x":{"isInherited":false,"supports":[],"values":["-moz-hidden-unscrollable","auto","hidden","inherit","initial","scroll","unset","visible"]},"overflow-y":{"isInherited":false,"supports":[],"values":["-moz-hidden-unscrollable","auto","hidden","inherit","initial","scroll","unset","visible"]},"padding-block-end":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"padding-block-start":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"padding-bottom":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"padding-inline-end":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"padding-inline-start":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"padding-left":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"padding-right":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"padding-top":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"page-break-after":{"isInherited":false,"supports":[],"values":["always","auto","avoid","inherit","initial","left","right","unset"]},"page-break-before":{"isInherited":false,"supports":[],"values":["always","auto","avoid","inherit","initial","left","right","unset"]},"page-break-inside":{"isInherited":false,"supports":[],"values":["auto","avoid","inherit","initial","unset"]},"paint-order":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"perspective":{"isInherited":false,"supports":[6],"values":["inherit","initial","none","unset"]},"perspective-origin":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"pointer-events":{"isInherited":true,"supports":[],"values":["all","auto","fill","inherit","initial","none","painted","stroke","unset","visible","visiblefill","visiblepainted","visiblestroke"]},"position":{"isInherited":false,"supports":[],"values":["absolute","fixed","inherit","initial","relative","static","sticky","unset"]},"quotes":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"resize":{"isInherited":false,"supports":[],"values":["both","horizontal","inherit","initial","none","unset","vertical"]},"right":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"ruby-align":{"isInherited":true,"supports":[],"values":["center","inherit","initial","space-around","space-between","start","unset"]},"ruby-position":{"isInherited":true,"supports":[],"values":["inherit","initial","over","under","unset"]},"scroll-behavior":{"isInherited":false,"supports":[],"values":["auto","inherit","initial","smooth","unset"]},"scroll-snap-coordinate":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"scroll-snap-destination":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"scroll-snap-points-x":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"scroll-snap-points-y":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"scroll-snap-type-x":{"isInherited":false,"supports":[],"values":["inherit","initial","mandatory","none","proximity","unset"]},"scroll-snap-type-y":{"isInherited":false,"supports":[],"values":["inherit","initial","mandatory","none","proximity","unset"]},"shape-rendering":{"isInherited":true,"supports":[],"values":["auto","crispedges","geometricprecision","inherit","initial","optimizespeed","unset"]},"-moz-stack-sizing":{"isInherited":false,"supports":[],"values":["ignore","inherit","initial","stretch-to-fit","unset"]},"stop-color":{"isInherited":false,"supports":[2],"values":["COLOR","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"stop-opacity":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"stroke":{"isInherited":true,"supports":[2,11],"values":["inherit","initial","unset"]},"stroke-dasharray":{"isInherited":true,"supports":[6,7,8],"values":["inherit","initial","unset"]},"stroke-dashoffset":{"isInherited":true,"supports":[6,7,8],"values":["inherit","initial","unset"]},"stroke-linecap":{"isInherited":true,"supports":[],"values":["butt","inherit","initial","round","square","unset"]},"stroke-linejoin":{"isInherited":true,"supports":[],"values":["bevel","inherit","initial","miter","round","unset"]},"stroke-miterlimit":{"isInherited":true,"supports":[7],"values":["inherit","initial","unset"]},"stroke-opacity":{"isInherited":true,"supports":[7],"values":["inherit","initial","unset"]},"stroke-width":{"isInherited":true,"supports":[6,7,8],"values":["inherit","initial","unset"]},"-moz-tab-size":{"isInherited":true,"supports":[7],"values":["inherit","initial","unset"]},"table-layout":{"isInherited":false,"supports":[],"values":["auto","fixed","inherit","initial","unset"]},"text-align":{"isInherited":true,"supports":[],"values":["-moz-center","-moz-left","-moz-right","center","end","inherit","initial","justify","left","right","start","unset"]},"text-align-last":{"isInherited":true,"supports":[],"values":["auto","center","end","inherit","initial","justify","left","right","start","unset"]},"text-anchor":{"isInherited":true,"supports":[],"values":["end","inherit","initial","middle","start","unset"]},"text-combine-upright":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"text-decoration-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"text-decoration-line":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"text-decoration-style":{"isInherited":false,"supports":[],"values":["-moz-none","dashed","dotted","double","inherit","initial","solid","unset","wavy"]},"text-emphasis-color":{"isInherited":true,"supports":[2],"values":["COLOR","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"text-emphasis-position":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"text-emphasis-style":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"-webkit-text-fill-color":{"isInherited":true,"supports":[2],"values":["COLOR","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"text-indent":{"isInherited":true,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"text-orientation":{"isInherited":true,"supports":[],"values":["inherit","initial","mixed","sideways","sideways-right","unset","upright"]},"text-overflow":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"text-rendering":{"isInherited":true,"supports":[],"values":["auto","geometricprecision","inherit","initial","optimizelegibility","optimizespeed","unset"]},"text-shadow":{"isInherited":true,"supports":[2,6],"values":["inherit","initial","unset"]},"-moz-text-size-adjust":{"isInherited":true,"supports":[],"values":["auto","inherit","initial","none","unset"]},"-webkit-text-stroke-color":{"isInherited":true,"supports":[2],"values":["COLOR","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"-webkit-text-stroke-width":{"isInherited":true,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"text-transform":{"isInherited":true,"supports":[],"values":["capitalize","full-width","inherit","initial","lowercase","none","unset","uppercase"]},"top":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"touch-action":{"isInherited":false,"supports":[],"values":["auto","inherit","initial","manipulation","none","pan-x","pan-y","unset"]},"transform":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"transform-box":{"isInherited":false,"supports":[],"values":["border-box","fill-box","inherit","initial","unset","view-box"]},"transform-origin":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"transform-style":{"isInherited":false,"supports":[],"values":["flat","inherit","initial","preserve-3d","unset"]},"transition-delay":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"transition-duration":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"transition-property":{"isInherited":false,"supports":[],"values":["all","inherit","initial","none","unset"]},"transition-timing-function":{"isInherited":false,"supports":[10],"values":["cubic-bezier","ease","ease-in","ease-in-out","ease-out","inherit","initial","linear","step-end","step-start","steps","unset"]},"unicode-bidi":{"isInherited":false,"supports":[],"values":["-moz-isolate","-moz-isolate-override","-moz-plaintext","bidi-override","embed","inherit","initial","isolate","isolate-override","normal","plaintext","unset"]},"-moz-user-focus":{"isInherited":true,"supports":[],"values":["ignore","inherit","initial","none","normal","select-after","select-all","select-before","select-menu","select-same","unset"]},"-moz-user-input":{"isInherited":true,"supports":[],"values":["auto","disabled","enabled","inherit","initial","none","unset"]},"-moz-user-modify":{"isInherited":true,"supports":[],"values":["inherit","initial","read-only","read-write","unset","write-only"]},"-moz-user-select":{"isInherited":false,"supports":[],"values":["-moz-all","-moz-none","-moz-text","all","auto","element","elements","inherit","initial","none","text","toggle","tri-state","unset"]},"vector-effect":{"isInherited":false,"supports":[],"values":["inherit","initial","non-scaling-stroke","none","unset"]},"vertical-align":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","-moz-middle-with-baseline","baseline","bottom","calc","inherit","initial","middle","sub","super","text-bottom","text-top","top","unset"]},"visibility":{"isInherited":true,"supports":[],"values":["collapse","hidden","inherit","initial","unset","visible"]},"white-space":{"isInherited":true,"supports":[],"values":["-moz-pre-space","inherit","initial","normal","nowrap","pre","pre-line","pre-wrap","unset"]},"width":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"will-change":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"-moz-window-dragging":{"isInherited":false,"supports":[],"values":["default","drag","inherit","initial","no-drag","unset"]},"word-break":{"isInherited":true,"supports":[],"values":["break-all","inherit","initial","keep-all","normal","unset"]},"word-spacing":{"isInherited":true,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","normal","unset"]},"overflow-wrap":{"isInherited":true,"supports":[],"values":["break-word","inherit","initial","normal","unset"]},"writing-mode":{"isInherited":true,"supports":[],"values":["horizontal-tb","inherit","initial","lr","lr-tb","rl","rl-tb","sideways-lr","sideways-rl","tb","tb-rl","unset","vertical-lr","vertical-rl"]},"z-index":{"isInherited":false,"supports":[7],"values":["auto","inherit","initial","unset"]},"all":{"isInherited":false,"supports":[1,2,4,5,6,7,8,9,10,11],"values":["COLOR","-moz-all","-moz-available","-moz-block-height","-moz-box","-moz-calc","-moz-center","-moz-crisp-edges","-moz-deck","-moz-element","-moz-fit-content","-moz-grid","-moz-grid-group","-moz-grid-line","-moz-groupbox","-moz-gtk-info-bar","-moz-hidden-unscrollable","-moz-image-rect","-moz-inline-box","-moz-inline-grid","-moz-inline-stack","-moz-left","-moz-linear-gradient","-moz-mac-disclosure-button-closed","-moz-mac-disclosure-button-open","-moz-mac-fullscreen-button","-moz-mac-help-button","-moz-mac-source-list","-moz-mac-vibrancy-dark","-moz-mac-vibrancy-light","-moz-max-content","-moz-middle-with-baseline","-moz-min-content","-moz-none","-moz-popup","-moz-pre-space","-moz-radial-gradient","-moz-repeating-linear-gradient","-moz-repeating-radial-gradient","-moz-right","-moz-stack","-moz-text","-moz-use-text-color","-moz-win-borderless-glass","-moz-win-browsertabbar-toolbox","-moz-win-communications-toolbox","-moz-win-exclude-glass","-moz-win-glass","-moz-win-media-toolbox","-moz-window-button-box","-moz-window-button-box-maximized","-moz-window-button-close","-moz-window-button-maximize","-moz-window-button-minimize","-moz-window-button-restore","-moz-window-frame-bottom","-moz-window-frame-left","-moz-window-frame-right","-moz-window-titlebar","-moz-window-titlebar-maximized","-webkit-box","-webkit-flex","-webkit-inline-box","-webkit-inline-flex","absolute","active","all","all-petite-caps","all-small-caps","alpha","alphabetic","alternate","alternate-reverse","always","auto","avoid","backwards","balance","baseline","bevel","block","block-axis","border-box","both","bottom","bottom-outside","break-all","break-word","butt","button","button-arrow-down","button-arrow-next","button-arrow-previous","button-arrow-up","button-bevel","button-focus","calc","capitalize","caret","center","central","checkbox","checkbox-container","checkbox-label","checkmenuitem","clone","collapse","color","color-burn","color-dodge","column","column-reverse","condensed","contain","content-box","contents","cover","crispedges","cubic-bezier","currentColor","darken","dashed","default","dialog","difference","disabled","dotted","double","drag","dualbutton","ease","ease-in","ease-in-out","ease-out","economy","element","elements","enabled","end","evenodd","exact","exclusion","expanded","extra-condensed","extra-expanded","fill","fill-box","fixed","flat","flex","flex-end","flex-start","forwards","full-width","geometricprecision","grayscale","grid","groove","groupbox","hanging","hard-light","hidden","hide","horizontal","horizontal-tb","hsl","hsla","hue","ideographic","ignore","inactive","infinite","inherit","initial","inline","inline-axis","inline-block","inline-end","inline-flex","inline-grid","inline-start","inline-table","inset","inside","isolate","italic","justify","keep-all","large","larger","last-baseline","left","lighten","linear","linear-gradient","linearrgb","list-item","listbox","listitem","local","lowercase","lr","lr-tb","luminance","luminosity","mandatory","manipulation","manual","margin-box","mathematical","medium","menuarrow","menubar","menucheckbox","menuimage","menuitem","menuitemtext","menulist","menulist-button","menulist-text","menulist-textfield","menupopup","menuradio","menuseparator","meterbar","meterchunk","middle","miter","mixed","multiply","no-change","no-drag","no-repeat","non-scaling-stroke","none","nonzero","normal","nowrap","number-input","oblique","optimizelegibility","optimizequality","optimizespeed","outset","outside","over","overlay","padding-box","painted","pan-x","pan-y","paused","petite-caps","pre","pre-line","pre-wrap","preserve-3d","progressbar","progressbar-vertical","progresschunk","progresschunk-vertical","proximity","radial-gradient","radio","radio-container","radio-label","radiomenuitem","range","range-thumb","read-only","read-write","relative","repeat","repeat-x","repeat-y","repeating-linear-gradient","repeating-radial-gradient","reset-size","resizer","resizerpanel","reverse","rgb","rgba","ridge","right","rl","rl-tb","round","row","row-reverse","ruby","ruby-base","ruby-base-container","ruby-text","ruby-text-container","running","saturation","scale-down","scale-horizontal","scale-vertical","scalethumb-horizontal","scalethumb-vertical","scalethumbend","scalethumbstart","scalethumbtick","screen","scroll","scrollbar","scrollbar-horizontal","scrollbar-small","scrollbar-vertical","scrollbarbutton-down","scrollbarbutton-left","scrollbarbutton-right","scrollbarbutton-up","scrollbarthumb-horizontal","scrollbarthumb-vertical","scrollbartrack-horizontal","scrollbartrack-vertical","searchfield","select-after","select-all","select-before","select-menu","select-same","self-end","self-start","semi-condensed","semi-expanded","separate","separator","show","sideways","sideways-lr","sideways-right","sideways-rl","slice","small","small-caps","smaller","smooth","soft-light","solid","space","space-around","space-between","space-evenly","spinner","spinner-downbutton","spinner-textfield","spinner-upbutton","splitter","square","srgb","start","static","statusbar","statusbarpanel","step-end","step-start","steps","sticky","stretch","stretch-to-fit","stroke","sub","super","tab","tab-scroll-arrow-back","tab-scroll-arrow-forward","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tabpanel","tabpanels","tb","tb-rl","text","text-after-edge","text-before-edge","text-bottom","text-top","textfield","textfield-multiline","thick","thin","titling-caps","toggle","toolbar","toolbarbutton","toolbarbutton-dropdown","toolbargripper","toolbox","tooltip","top","top-outside","transparent","treeheader","treeheadercell","treeheadersortarrow","treeitem","treeline","treetwisty","treetwistyopen","treeview","tri-state","ultra-condensed","ultra-expanded","under","unicase","unset","uppercase","upright","url","use-script","vertical","vertical-lr","vertical-rl","view-box","visible","visiblefill","visiblepainted","visiblestroke","wavy","window","wrap","wrap-reverse","write-only","x-large","x-small","xx-large","xx-small"]},"animation":{"isInherited":false,"supports":[7,9,10],"values":["alternate","alternate-reverse","backwards","both","cubic-bezier","ease","ease-in","ease-in-out","ease-out","forwards","infinite","inherit","initial","linear","none","normal","paused","reverse","running","step-end","step-start","steps","unset"]},"background":{"isInherited":false,"supports":[2,4,5,6,8,11],"values":["COLOR","-moz-element","-moz-image-rect","-moz-linear-gradient","-moz-radial-gradient","-moz-repeating-linear-gradient","-moz-repeating-radial-gradient","border-box","content-box","currentColor","fixed","hsl","hsla","inherit","initial","linear-gradient","local","no-repeat","none","padding-box","radial-gradient","repeat","repeat-x","repeat-y","repeating-linear-gradient","repeating-radial-gradient","rgb","rgba","round","scroll","space","text","transparent","unset","url"]},"background-position":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"border":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-element","-moz-image-rect","-moz-linear-gradient","-moz-radial-gradient","-moz-repeating-linear-gradient","-moz-repeating-radial-gradient","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","linear-gradient","medium","none","outset","radial-gradient","repeating-linear-gradient","repeating-radial-gradient","rgb","rgba","ridge","solid","thick","thin","transparent","unset","url"]},"border-block-end":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"border-block-start":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"border-bottom":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"border-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"border-image":{"isInherited":false,"supports":[4,5,6,7,8,11],"values":["-moz-element","-moz-image-rect","-moz-linear-gradient","-moz-radial-gradient","-moz-repeating-linear-gradient","-moz-repeating-radial-gradient","inherit","initial","linear-gradient","none","radial-gradient","repeating-linear-gradient","repeating-radial-gradient","unset","url"]},"border-inline-end":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"border-inline-start":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"border-left":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"border-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"border-right":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"border-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"border-top":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"border-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"-moz-column-rule":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"-moz-columns":{"isInherited":false,"supports":[6,7],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"flex":{"isInherited":false,"supports":[6,7,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"flex-flow":{"isInherited":false,"supports":[],"values":["column","column-reverse","inherit","initial","nowrap","row","row-reverse","unset","wrap","wrap-reverse"]},"font":{"isInherited":true,"supports":[6,7,8],"values":["-moz-block-height","-moz-calc","all-petite-caps","all-small-caps","auto","calc","condensed","expanded","extra-condensed","extra-expanded","inherit","initial","italic","large","larger","medium","none","normal","oblique","petite-caps","semi-condensed","semi-expanded","small","small-caps","smaller","sub","super","titling-caps","ultra-condensed","ultra-expanded","unicase","unset","x-large","x-small","xx-large","xx-small"]},"font-variant":{"isInherited":true,"supports":[],"values":["all-petite-caps","all-small-caps","inherit","initial","normal","petite-caps","small-caps","sub","super","titling-caps","unicase","unset"]},"grid":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"grid-area":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"grid-column":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"grid-gap":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"grid-row":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"grid-template":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"list-style":{"isInherited":true,"supports":[11],"values":["inherit","initial","inside","none","outside","unset","url"]},"margin":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"marker":{"isInherited":true,"supports":[11],"values":["inherit","initial","none","unset","url"]},"outline":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","auto","calc","currentColor","dashed","dotted","double","groove","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"-moz-outline-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"overflow":{"isInherited":false,"supports":[],"values":["-moz-hidden-unscrollable","auto","hidden","inherit","initial","scroll","unset","visible"]},"padding":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"scroll-snap-type":{"isInherited":false,"supports":[],"values":["inherit","initial","mandatory","none","proximity","unset"]},"text-decoration":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-none","-moz-use-text-color","currentColor","dashed","dotted","double","hsl","hsla","inherit","initial","rgb","rgba","solid","transparent","unset","wavy"]},"text-emphasis":{"isInherited":true,"supports":[2],"values":["COLOR","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"-webkit-text-stroke":{"isInherited":true,"supports":[2,6],"values":["COLOR","-moz-calc","calc","currentColor","hsl","hsla","inherit","initial","medium","rgb","rgba","thick","thin","transparent","unset"]},"-moz-transform":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"transition":{"isInherited":false,"supports":[9,10],"values":["all","cubic-bezier","ease","ease-in","ease-in-out","ease-out","inherit","initial","linear","none","step-end","step-start","steps","unset"]},"word-wrap":{"isInherited":true,"supports":[],"values":["break-word","inherit","initial","normal","unset"]},"-moz-transform-origin":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-moz-perspective-origin":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-moz-perspective":{"isInherited":false,"supports":[6],"values":["inherit","initial","none","unset"]},"-moz-transform-style":{"isInherited":false,"supports":[],"values":["flat","inherit","initial","preserve-3d","unset"]},"-moz-backface-visibility":{"isInherited":false,"supports":[],"values":["hidden","inherit","initial","unset","visible"]},"-moz-border-image":{"isInherited":false,"supports":[4,5,6,7,8,11],"values":["-moz-element","-moz-image-rect","-moz-linear-gradient","-moz-radial-gradient","-moz-repeating-linear-gradient","-moz-repeating-radial-gradient","inherit","initial","linear-gradient","none","radial-gradient","repeating-linear-gradient","repeating-radial-gradient","unset","url"]},"-moz-transition":{"isInherited":false,"supports":[9,10],"values":["all","cubic-bezier","ease","ease-in","ease-in-out","ease-out","inherit","initial","linear","none","step-end","step-start","steps","unset"]},"-moz-transition-delay":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"-moz-transition-duration":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"-moz-transition-property":{"isInherited":false,"supports":[],"values":["all","inherit","initial","none","unset"]},"-moz-transition-timing-function":{"isInherited":false,"supports":[10],"values":["cubic-bezier","ease","ease-in","ease-in-out","ease-out","inherit","initial","linear","step-end","step-start","steps","unset"]},"-moz-animation":{"isInherited":false,"supports":[7,9,10],"values":["alternate","alternate-reverse","backwards","both","cubic-bezier","ease","ease-in","ease-in-out","ease-out","forwards","infinite","inherit","initial","linear","none","normal","paused","reverse","running","step-end","step-start","steps","unset"]},"-moz-animation-delay":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"-moz-animation-direction":{"isInherited":false,"supports":[],"values":["alternate","alternate-reverse","inherit","initial","normal","reverse","unset"]},"-moz-animation-duration":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"-moz-animation-fill-mode":{"isInherited":false,"supports":[],"values":["backwards","both","forwards","inherit","initial","none","unset"]},"-moz-animation-iteration-count":{"isInherited":false,"supports":[7],"values":["infinite","inherit","initial","unset"]},"-moz-animation-name":{"isInherited":false,"supports":[],"values":["inherit","initial","none","unset"]},"-moz-animation-play-state":{"isInherited":false,"supports":[],"values":["inherit","initial","paused","running","unset"]},"-moz-animation-timing-function":{"isInherited":false,"supports":[10],"values":["cubic-bezier","ease","ease-in","ease-in-out","ease-out","inherit","initial","linear","step-end","step-start","steps","unset"]},"-moz-box-sizing":{"isInherited":false,"supports":[],"values":["border-box","content-box","inherit","initial","unset"]},"-moz-font-feature-settings":{"isInherited":true,"supports":[],"values":["inherit","initial","unset"]},"-moz-font-language-override":{"isInherited":true,"supports":[],"values":["inherit","initial","normal","unset"]},"-moz-padding-end":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"-moz-padding-start":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","calc","inherit","initial","unset"]},"-moz-margin-end":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"-moz-margin-start":{"isInherited":false,"supports":[6,8],"values":["-moz-calc","auto","calc","inherit","initial","unset"]},"-moz-border-end":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"-moz-border-end-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"-moz-border-end-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"-moz-border-end-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"-moz-border-start":{"isInherited":false,"supports":[2,6],"values":["COLOR","-moz-calc","-moz-use-text-color","calc","currentColor","dashed","dotted","double","groove","hidden","hsl","hsla","inherit","initial","inset","medium","none","outset","rgb","rgba","ridge","solid","thick","thin","transparent","unset"]},"-moz-border-start-color":{"isInherited":false,"supports":[2],"values":["COLOR","-moz-use-text-color","currentColor","hsl","hsla","inherit","initial","rgb","rgba","transparent","unset"]},"-moz-border-start-style":{"isInherited":false,"supports":[],"values":["dashed","dotted","double","groove","hidden","inherit","initial","inset","none","outset","ridge","solid","unset"]},"-moz-border-start-width":{"isInherited":false,"supports":[6],"values":["-moz-calc","calc","inherit","initial","medium","thick","thin","unset"]},"-moz-hyphens":{"isInherited":true,"supports":[],"values":["auto","inherit","initial","manual","none","unset"]},"-moz-text-align-last":{"isInherited":true,"supports":[],"values":["auto","center","end","inherit","initial","justify","left","right","start","unset"]},"-webkit-animation":{"isInherited":false,"supports":[7,9,10],"values":["alternate","alternate-reverse","backwards","both","cubic-bezier","ease","ease-in","ease-in-out","ease-out","forwards","infinite","inherit","initial","linear","none","normal","paused","reverse","running","step-end","step-start","steps","unset"]},"-webkit-animation-delay":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"-webkit-animation-direction":{"isInherited":false,"supports":[],"values":["alternate","alternate-reverse","inherit","initial","normal","reverse","unset"]},"-webkit-animation-duration":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"-webkit-animation-fill-mode":{"isInherited":false,"supports":[],"values":["backwards","both","forwards","inherit","initial","none","unset"]},"-webkit-animation-iteration-count":{"isInherited":false,"supports":[7],"values":["infinite","inherit","initial","unset"]},"-webkit-animation-name":{"isInherited":false,"supports":[],"values":["inherit","initial","none","unset"]},"-webkit-animation-play-state":{"isInherited":false,"supports":[],"values":["inherit","initial","paused","running","unset"]},"-webkit-animation-timing-function":{"isInherited":false,"supports":[10],"values":["cubic-bezier","ease","ease-in","ease-in-out","ease-out","inherit","initial","linear","step-end","step-start","steps","unset"]},"-webkit-filter":{"isInherited":false,"supports":[11],"values":["inherit","initial","unset"]},"-webkit-text-size-adjust":{"isInherited":true,"supports":[],"values":["auto","inherit","initial","none","unset"]},"-webkit-transform":{"isInherited":false,"supports":[],"values":["inherit","initial","unset"]},"-webkit-transform-origin":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-webkit-transform-style":{"isInherited":false,"supports":[],"values":["flat","inherit","initial","preserve-3d","unset"]},"-webkit-backface-visibility":{"isInherited":false,"supports":[],"values":["hidden","inherit","initial","unset","visible"]},"-webkit-perspective":{"isInherited":false,"supports":[6],"values":["inherit","initial","none","unset"]},"-webkit-perspective-origin":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-webkit-transition":{"isInherited":false,"supports":[9,10],"values":["all","cubic-bezier","ease","ease-in","ease-in-out","ease-out","inherit","initial","linear","none","step-end","step-start","steps","unset"]},"-webkit-transition-delay":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"-webkit-transition-duration":{"isInherited":false,"supports":[9],"values":["inherit","initial","unset"]},"-webkit-transition-property":{"isInherited":false,"supports":[],"values":["all","inherit","initial","none","unset"]},"-webkit-transition-timing-function":{"isInherited":false,"supports":[10],"values":["cubic-bezier","ease","ease-in","ease-in-out","ease-out","inherit","initial","linear","step-end","step-start","steps","unset"]},"-webkit-border-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-webkit-border-top-left-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-webkit-border-top-right-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-webkit-border-bottom-left-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-webkit-border-bottom-right-radius":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-webkit-background-clip":{"isInherited":false,"supports":[],"values":["border-box","content-box","inherit","initial","padding-box","text","unset"]},"-webkit-background-origin":{"isInherited":false,"supports":[],"values":["border-box","content-box","inherit","initial","padding-box","unset"]},"-webkit-background-size":{"isInherited":false,"supports":[6,8],"values":["inherit","initial","unset"]},"-webkit-border-image":{"isInherited":false,"supports":[4,5,6,7,8,11],"values":["-moz-element","-moz-image-rect","-moz-linear-gradient","-moz-radial-gradient","-moz-repeating-linear-gradient","-moz-repeating-radial-gradient","inherit","initial","linear-gradient","none","radial-gradient","repeating-linear-gradient","repeating-radial-gradient","unset","url"]},"-webkit-box-shadow":{"isInherited":false,"supports":[2,6],"values":["inherit","initial","unset"]},"-webkit-box-sizing":{"isInherited":false,"supports":[],"values":["border-box","content-box","inherit","initial","unset"]},"-webkit-box-flex":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"-webkit-box-ordinal-group":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"-webkit-box-orient":{"isInherited":false,"supports":[],"values":["block-axis","horizontal","inherit","initial","inline-axis","unset","vertical"]},"-webkit-box-direction":{"isInherited":false,"supports":[],"values":["inherit","initial","normal","reverse","unset"]},"-webkit-box-align":{"isInherited":false,"supports":[],"values":["baseline","center","end","inherit","initial","start","stretch","unset"]},"-webkit-box-pack":{"isInherited":false,"supports":[],"values":["center","end","inherit","initial","justify","start","unset"]},"-webkit-flex-direction":{"isInherited":false,"supports":[],"values":["column","column-reverse","inherit","initial","row","row-reverse","unset"]},"-webkit-flex-wrap":{"isInherited":false,"supports":[],"values":["inherit","initial","nowrap","unset","wrap","wrap-reverse"]},"-webkit-flex-flow":{"isInherited":false,"supports":[],"values":["column","column-reverse","inherit","initial","nowrap","row","row-reverse","unset","wrap","wrap-reverse"]},"-webkit-order":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"-webkit-flex":{"isInherited":false,"supports":[6,7,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"-webkit-flex-grow":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"-webkit-flex-shrink":{"isInherited":false,"supports":[7],"values":["inherit","initial","unset"]},"-webkit-flex-basis":{"isInherited":false,"supports":[6,8],"values":["-moz-available","-moz-calc","-moz-fit-content","-moz-max-content","-moz-min-content","auto","calc","inherit","initial","unset"]},"-webkit-justify-content":{"isInherited":false,"supports":[],"values":["baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","space-around","space-between","space-evenly","start","stretch","unset"]},"-webkit-align-items":{"isInherited":false,"supports":[],"values":["baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","self-end","self-start","start","stretch","unset"]},"-webkit-align-self":{"isInherited":false,"supports":[],"values":["auto","baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","self-end","self-start","start","stretch","unset"]},"-webkit-align-content":{"isInherited":false,"supports":[],"values":["baseline","center","end","flex-end","flex-start","inherit","initial","last-baseline","left","normal","right","space-around","space-between","space-evenly","start","stretch","unset"]},"-webkit-user-select":{"isInherited":false,"supports":[],"values":["-moz-all","-moz-none","-moz-text","all","auto","element","elements","inherit","initial","none","text","toggle","tri-state","unset"]}}; /*eslint-enable */ exports.CSS_PROPERTIES_DB = { diff --git a/devtools/shared/fronts/css-properties.js b/devtools/shared/fronts/css-properties.js index 9d1be6ae5571..dea1bb4c901e 100644 --- a/devtools/shared/fronts/css-properties.js +++ b/devtools/shared/fronts/css-properties.js @@ -7,6 +7,7 @@ const { FrontClassWithSpec, Front } = require("devtools/shared/protocol"); const { cssPropertiesSpec } = require("devtools/shared/specs/css-properties"); const { Task } = require("devtools/shared/task"); const { CSS_PROPERTIES_DB } = require("devtools/shared/css-properties-db"); +const { cssColors } = require("devtools/shared/css-color-db"); /** * Build up a regular expression that matches a CSS variable token. This is an @@ -45,8 +46,6 @@ const CssPropertiesFront = FrontClassWithSpec(cssPropertiesSpec, { } }); -exports.CssPropertiesFront = CssPropertiesFront; - /** * Ask questions to a CSS database. This class does not care how the database * gets loaded in, only the questions that you can ask to it. @@ -100,11 +99,19 @@ CssProperties.prototype = { */ supportsType(property, type) { return this.properties[property] && this.properties[property].supports.includes(type); + }, + + /** + * Gets the CSS values for a given property name. + * + * @param {String} property The property to use. + * @return {Array} An array of strings. + */ + getValues(property) { + return this.properties[property] ? this.properties[property].values : []; } }; -exports.CssProperties = CssProperties; - /** * Create a CssProperties object with a fully loaded CSS database. The * CssProperties interface can be queried synchronously, but the initialization @@ -116,8 +123,8 @@ exports.CssProperties = CssProperties; * @param {Toolbox} The current toolbox. * @returns {Promise} Resolves to {cssProperties, cssPropertiesFront}. */ -exports.initCssProperties = Task.async(function* (toolbox) { - let client = toolbox.target.client; +const initCssProperties = Task.async(function* (toolbox) { + const client = toolbox.target.client; if (cachedCssProperties.has(client)) { return cachedCssProperties.get(client); } @@ -127,28 +134,13 @@ exports.initCssProperties = Task.async(function* (toolbox) { // Get the list dynamically if the cssProperties actor exists. if (toolbox.target.hasActor("cssProperties")) { front = CssPropertiesFront(client, toolbox.target.form); - db = yield front.getCSSDatabase(); + const serverDB = yield front.getCSSDatabase(getClientBrowserVersion(toolbox)); - // Even if the target has the cssProperties actor, the returned data may - // not be in the same shape or have all of the data we need. The following - // code normalizes this data. - - // Firefox 49's getCSSDatabase() just returned the properties object, but - // now it returns an object with multiple types of CSS information. - if (!db.properties) { - db = { properties: db }; - } - - // Fill in any missing DB information from the static database. - db = Object.assign({}, CSS_PROPERTIES_DB, db); - - // Add "supports" information to the css properties if it's missing. - if (!db.properties.color.supports) { - for (let name in db.properties) { - if (typeof CSS_PROPERTIES_DB.properties[name] === "object") { - db.properties[name].supports = CSS_PROPERTIES_DB.properties[name].supports; - } - } + // The serverDB will be blank if the browser versions match, so use the static list. + if (!serverDB.properties && !serverDB.margin) { + db = CSS_PROPERTIES_DB; + } else { + db = normalizeCssData(serverDB); } } else { // The target does not support this actor, so require a static list of supported @@ -156,6 +148,9 @@ exports.initCssProperties = Task.async(function* (toolbox) { db = CSS_PROPERTIES_DB; } + // Color values are omitted to save on space. Add them back here. + reattachCssColorValues(db); + const cssProperties = new CssProperties(db); cachedCssProperties.set(client, {cssProperties, front}); return {cssProperties, front}; @@ -167,13 +162,86 @@ exports.initCssProperties = Task.async(function* (toolbox) { * @param {Toolbox} The current toolbox. * @returns {CssProperties} */ -exports.getCssProperties = function (toolbox) { +function getCssProperties(toolbox) { if (!cachedCssProperties.has(toolbox.target.client)) { throw new Error("The CSS database has not been initialized, please make " + "sure initCssDatabase was called once before for this " + "toolbox."); } return cachedCssProperties.get(toolbox.target.client).cssProperties; -}; +} -exports.CssPropertiesFront = CssPropertiesFront; +/** + * Get the current browser version. + * @returns {string} The browser version. + */ +function getClientBrowserVersion(toolbox) { + if (!toolbox._host) { + return "0"; + } + const regexResult = toolbox._host.frame.contentWindow.navigator + .userAgent.match(/Firefox\/(\d+)\.\d/); + return Array.isArray(regexResult) ? regexResult[1] : "0"; +} + +/** + * Even if the target has the cssProperties actor, the returned data may not be in the + * same shape or have all of the data we need. This normalizes this data. + * + * @return {Object} The normalized CSS database. + */ +function normalizeCssData(db) { + // Firefox 49's getCSSDatabase() just returned the properties object, but + // now it returns an object with multiple types of CSS information. + if (!db.properties) { + db = { properties: db }; + } + + // Fill in any missing DB information from the static database. + db = Object.assign({}, CSS_PROPERTIES_DB, db); + + // Add "supports" information to the css properties if it's missing. + if (!db.properties.color.supports) { + for (let name in db.properties) { + if (typeof CSS_PROPERTIES_DB.properties[name] === "object") { + db.properties[name].supports = CSS_PROPERTIES_DB.properties[name].supports; + } + } + } + + // Add "values" information to the css properties if it's missing. + if (!db.properties.color.values) { + for (let name in db.properties) { + if (typeof CSS_PROPERTIES_DB.properties[name] === "object") { + db.properties[name].values = CSS_PROPERTIES_DB.properties[name].values; + } + } + } + + return db; +} + +/** + * Color values are omitted to save on space. Add them back here. + * @param {Object} The CSS database. + */ +function reattachCssColorValues(db) { + if (db.properties.color.values[0] === "COLOR") { + const colors = Object.keys(cssColors); + + for (let name in db.properties) { + const property = db.properties[name]; + if (property.values[0] === "COLOR") { + property.values.shift(); + property.values = property.values.concat(colors).sort(); + } + } + } +} + +module.exports = { + CssPropertiesFront, + CssProperties, + getCssProperties, + initCssProperties +}; diff --git a/devtools/shared/specs/css-properties.js b/devtools/shared/specs/css-properties.js index 00a4c8e7fd4b..f265872aa4f9 100644 --- a/devtools/shared/specs/css-properties.js +++ b/devtools/shared/specs/css-properties.js @@ -3,14 +3,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; -const { RetVal, generateActorSpec } = require("devtools/shared/protocol"); +const { Arg, RetVal, generateActorSpec } = require("devtools/shared/protocol"); const cssPropertiesSpec = generateActorSpec({ typeName: "cssProperties", methods: { getCSSDatabase: { - request: {}, + request: { + clientBrowserVersion: Arg(0, "string"), + }, + response: RetVal("json"), } }