diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-14 14:46:37 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-14 14:46:37 -0800 |
| commit | afa87af01c79a9baa539f2992d32154d2a4739bd (patch) | |
| tree | 92c7416db734270a2fee1d72ee9cc119379ff8e1 /vanilla/node_modules/cssstyle | |
| parent | 3b927e84d200402281f68181cd4253bc77e5528d (diff) | |
| download | neko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.gz neko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.bz2 neko-afa87af01c79a9baa539f2992d32154d2a4739bd.zip | |
task: delete vanilla js prototype\n\n- Removed vanilla/ directory and web/dist/vanilla directory\n- Updated Makefile, Dockerfile, and CI workflow to remove vanilla references\n- Cleaned up web/web.go to remove vanilla embed and routes\n- Verified build and tests pass\n\nCloses NK-2tcnmq
Diffstat (limited to 'vanilla/node_modules/cssstyle')
91 files changed, 0 insertions, 31076 deletions
diff --git a/vanilla/node_modules/cssstyle/LICENSE b/vanilla/node_modules/cssstyle/LICENSE deleted file mode 100644 index 060a7e6..0000000 --- a/vanilla/node_modules/cssstyle/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) Chad Walker - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vanilla/node_modules/cssstyle/README.md b/vanilla/node_modules/cssstyle/README.md deleted file mode 100644 index 0c426a8..0000000 --- a/vanilla/node_modules/cssstyle/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# CSSStyleDeclaration - -A Node.js implementation of the CSS Object Model [`CSSStyleDeclaration` class](https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface). - -## Background - -This package is an extension of the `CSSStyleDeclaration` class in Nikita Vasilyev's [CSSOM](https://github.com/NV/CSSOM), with added support for modern specifications. The primary use case is for testing browser code in a Node environment. - -It was originally created by Chad Walker, it is now maintained by the jsdom community. - -Bug reports and pull requests are welcome. diff --git a/vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js b/vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js deleted file mode 100644 index ab1dcb1..0000000 --- a/vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js +++ /dev/null @@ -1,649 +0,0 @@ -/** - * This is a fork from the CSS Style Declaration part of - * https://github.com/NV/CSSOM - */ -"use strict"; - -const allProperties = require("./generated/allProperties"); -const implementedProperties = require("./generated/implementedProperties"); -const generatedProperties = require("./generated/properties"); -const { - borderProperties, - getPositionValue, - normalizeProperties, - prepareBorderProperties, - prepareProperties, - shorthandProperties -} = require("./normalize"); -const { - hasVarFunc, - isGlobalKeyword, - parseCSS, - parsePropertyValue, - prepareValue -} = require("./parsers"); -const allExtraProperties = require("./utils/allExtraProperties"); -const { dashedToCamelCase } = require("./utils/camelize"); -const { getPropertyDescriptor } = require("./utils/propertyDescriptors"); -const { asciiLowercase } = require("./utils/strings"); - -/** - * @see https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface - */ -class CSSStyleDeclaration { - /** - * @param {Function} onChangeCallback - * @param {object} [opt] - * @param {object} [opt.context] - Window, Element or CSSRule. - */ - constructor(onChangeCallback, opt = {}) { - // Make constructor and internals non-enumerable. - Object.defineProperties(this, { - constructor: { - enumerable: false, - writable: true - }, - - // Window - _global: { - value: globalThis, - enumerable: false, - writable: true - }, - - // Element - _ownerNode: { - value: null, - enumerable: false, - writable: true - }, - - // CSSRule - _parentNode: { - value: null, - enumerable: false, - writable: true - }, - - _onChange: { - value: null, - enumerable: false, - writable: true - }, - - _values: { - value: new Map(), - enumerable: false, - writable: true - }, - - _priorities: { - value: new Map(), - enumerable: false, - writable: true - }, - - _length: { - value: 0, - enumerable: false, - writable: true - }, - - _computed: { - value: false, - enumerable: false, - writable: true - }, - - _readonly: { - value: false, - enumerable: false, - writable: true - }, - - _setInProgress: { - value: false, - enumerable: false, - writable: true - } - }); - - const { context } = opt; - if (context) { - if (typeof context.getComputedStyle === "function") { - this._global = context; - this._computed = true; - this._readonly = true; - } else if (context.nodeType === 1 && Object.hasOwn(context, "style")) { - this._global = context.ownerDocument.defaultView; - this._ownerNode = context; - } else if (Object.hasOwn(context, "parentRule")) { - this._parentRule = context; - // Find Window from the owner node of the StyleSheet. - const window = context?.parentStyleSheet?.ownerNode?.ownerDocument?.defaultView; - if (window) { - this._global = window; - } - } - } - if (typeof onChangeCallback === "function") { - this._onChange = onChangeCallback; - } - } - - get cssText() { - if (this._computed) { - return ""; - } - const properties = new Map(); - for (let i = 0; i < this._length; i++) { - const property = this[i]; - const value = this.getPropertyValue(property); - const priority = this._priorities.get(property) ?? ""; - if (shorthandProperties.has(property)) { - const { shorthandFor } = shorthandProperties.get(property); - for (const [longhand] of shorthandFor) { - if (priority || !this._priorities.get(longhand)) { - properties.delete(longhand); - } - } - } - properties.set(property, { property, value, priority }); - } - const normalizedProperties = normalizeProperties(properties); - const parts = []; - for (const { property, value, priority } of normalizedProperties.values()) { - if (priority) { - parts.push(`${property}: ${value} !${priority};`); - } else { - parts.push(`${property}: ${value};`); - } - } - return parts.join(" "); - } - - set cssText(val) { - if (this._readonly) { - const msg = "cssText can not be modified."; - const name = "NoModificationAllowedError"; - throw new this._global.DOMException(msg, name); - } - Array.prototype.splice.call(this, 0, this._length); - this._values.clear(); - this._priorities.clear(); - if (this._parentRule || (this._ownerNode && this._setInProgress)) { - return; - } - try { - this._setInProgress = true; - const valueObj = parseCSS( - val, - { - context: "declarationList", - parseValue: false - }, - true - ); - if (valueObj?.children) { - const properties = new Map(); - let shouldSkipNext = false; - for (const item of valueObj.children) { - if (item.type === "Atrule") { - continue; - } - if (item.type === "Rule") { - shouldSkipNext = true; - continue; - } - if (shouldSkipNext === true) { - shouldSkipNext = false; - continue; - } - const { - important, - property, - value: { value } - } = item; - if (typeof property === "string" && typeof value === "string") { - const priority = important ? "important" : ""; - const isCustomProperty = property.startsWith("--"); - if (isCustomProperty || hasVarFunc(value)) { - if (properties.has(property)) { - const { priority: itemPriority } = properties.get(property); - if (!itemPriority) { - properties.set(property, { property, value, priority }); - } - } else { - properties.set(property, { property, value, priority }); - } - } else { - const parsedValue = parsePropertyValue(property, value, { - globalObject: this._global - }); - if (parsedValue) { - if (properties.has(property)) { - const { priority: itemPriority } = properties.get(property); - if (!itemPriority) { - properties.set(property, { property, value, priority }); - } - } else { - properties.set(property, { property, value, priority }); - } - } else { - this.removeProperty(property); - } - } - } - } - const parsedProperties = prepareProperties(properties, { - globalObject: this._global - }); - for (const [property, item] of parsedProperties) { - const { priority, value } = item; - this._priorities.set(property, priority); - this.setProperty(property, value, priority); - } - } - } catch { - return; - } finally { - this._setInProgress = false; - } - if (typeof this._onChange === "function") { - this._onChange(this.cssText); - } - } - - get length() { - return this._length; - } - - // This deletes indices if the new length is less then the current length. - // If the new length is more, it does nothing, the new indices will be - // undefined until set. - set length(len) { - for (let i = len; i < this._length; i++) { - delete this[i]; - } - this._length = len; - } - - // Readonly - get parentRule() { - return this._parentRule; - } - - get cssFloat() { - return this.getPropertyValue("float"); - } - - set cssFloat(value) { - this._setProperty("float", value); - } - - /** - * @param {string} property - */ - getPropertyPriority(property) { - return this._priorities.get(property) || ""; - } - - /** - * @param {string} property - */ - getPropertyValue(property) { - if (this._values.has(property)) { - return this._values.get(property).toString(); - } - return ""; - } - - /** - * @param {...number} args - */ - item(...args) { - if (!args.length) { - const msg = "1 argument required, but only 0 present."; - throw new this._global.TypeError(msg); - } - const [value] = args; - const index = parseInt(value); - if (Number.isNaN(index) || index < 0 || index >= this._length) { - return ""; - } - return this[index]; - } - - /** - * @param {string} property - */ - removeProperty(property) { - if (this._readonly) { - const msg = `Property ${property} can not be modified.`; - const name = "NoModificationAllowedError"; - throw new this._global.DOMException(msg, name); - } - if (!this._values.has(property)) { - return ""; - } - const prevValue = this._values.get(property); - this._values.delete(property); - this._priorities.delete(property); - const index = Array.prototype.indexOf.call(this, property); - if (index >= 0) { - Array.prototype.splice.call(this, index, 1); - if (typeof this._onChange === "function") { - this._onChange(this.cssText); - } - } - return prevValue; - } - - /** - * @param {string} prop - * @param {string} val - * @param {string} prior - */ - setProperty(prop, val, prior) { - if (this._readonly) { - const msg = `Property ${prop} can not be modified.`; - const name = "NoModificationAllowedError"; - throw new this._global.DOMException(msg, name); - } - const value = prepareValue(val); - if (value === "") { - this[prop] = ""; - this.removeProperty(prop); - return; - } - const priority = prior === "important" ? "important" : ""; - const isCustomProperty = prop.startsWith("--"); - if (isCustomProperty) { - this._setProperty(prop, value, priority); - return; - } - const property = asciiLowercase(prop); - if (!allProperties.has(property) && !allExtraProperties.has(property)) { - return; - } - if (priority) { - this._priorities.set(property, priority); - } else { - this._priorities.delete(property); - } - this[property] = value; - } -} - -// Internal methods -Object.defineProperties(CSSStyleDeclaration.prototype, { - _setProperty: { - /** - * @param {string} property - * @param {string} val - * @param {string} priority - */ - value(property, val, priority) { - if (typeof val !== "string") { - return; - } - if (val === "") { - this.removeProperty(property); - return; - } - let originalText = ""; - if (typeof this._onChange === "function" && !this._setInProgress) { - originalText = this.cssText; - } - if (this._values.has(property)) { - const index = Array.prototype.indexOf.call(this, property); - // The property already exists but is not indexed into `this` so add it. - if (index < 0) { - this[this._length] = property; - this._length++; - } - } else { - // New property. - this[this._length] = property; - this._length++; - } - if (priority === "important") { - this._priorities.set(property, priority); - } else { - this._priorities.delete(property); - } - this._values.set(property, val); - if ( - typeof this._onChange === "function" && - !this._setInProgress && - this.cssText !== originalText - ) { - this._onChange(this.cssText); - } - }, - enumerable: false - }, - - _borderSetter: { - /** - * @param {string} prop - * @param {object|Array|string} val - * @param {string} prior - */ - value(prop, val, prior) { - const properties = new Map(); - if (prop === "border") { - let priority = ""; - if (typeof prior === "string") { - priority = prior; - } else { - priority = this._priorities.get(prop) ?? ""; - } - properties.set(prop, { propery: prop, value: val, priority }); - } else { - for (let i = 0; i < this._length; i++) { - const property = this[i]; - if (borderProperties.has(property)) { - const value = this.getPropertyValue(property); - const longhandPriority = this._priorities.get(property) ?? ""; - let priority = longhandPriority; - if (prop === property && typeof prior === "string") { - priority = prior; - } - properties.set(property, { property, value, priority }); - } - } - } - const parsedProperties = prepareBorderProperties(prop, val, prior, properties, { - globalObject: this._global - }); - for (const [property, item] of parsedProperties) { - const { priority, value } = item; - this._setProperty(property, value, priority); - } - }, - enumerable: false - }, - - _flexBoxSetter: { - /** - * @param {string} prop - * @param {string} val - * @param {string} prior - * @param {string} shorthandProperty - */ - value(prop, val, prior, shorthandProperty) { - if (!shorthandProperty || !shorthandProperties.has(shorthandProperty)) { - return; - } - const shorthandPriority = this._priorities.get(shorthandProperty); - this.removeProperty(shorthandProperty); - let priority = ""; - if (typeof prior === "string") { - priority = prior; - } else { - priority = this._priorities.get(prop) ?? ""; - } - this.removeProperty(prop); - if (shorthandPriority && priority) { - this._setProperty(prop, val); - } else { - this._setProperty(prop, val, priority); - } - if (val && !hasVarFunc(val)) { - const longhandValues = []; - const shorthandItem = shorthandProperties.get(shorthandProperty); - let hasGlobalKeyword = false; - for (const [longhandProperty] of shorthandItem.shorthandFor) { - if (longhandProperty === prop) { - if (isGlobalKeyword(val)) { - hasGlobalKeyword = true; - } - longhandValues.push(val); - } else { - const longhandValue = this.getPropertyValue(longhandProperty); - const longhandPriority = this._priorities.get(longhandProperty) ?? ""; - if (!longhandValue || longhandPriority !== priority) { - break; - } - if (isGlobalKeyword(longhandValue)) { - hasGlobalKeyword = true; - } - longhandValues.push(longhandValue); - } - } - if (longhandValues.length === shorthandItem.shorthandFor.size) { - if (hasGlobalKeyword) { - const [firstValue, ...restValues] = longhandValues; - if (restValues.every((value) => value === firstValue)) { - this._setProperty(shorthandProperty, firstValue, priority); - } - } else { - const parsedValue = shorthandItem.parse(longhandValues.join(" ")); - const shorthandValue = Object.values(parsedValue).join(" "); - this._setProperty(shorthandProperty, shorthandValue, priority); - } - } - } - }, - enumerable: false - }, - - _positionShorthandSetter: { - /** - * @param {string} prop - * @param {Array|string} val - * @param {string} prior - */ - value(prop, val, prior) { - if (!shorthandProperties.has(prop)) { - return; - } - const shorthandValues = []; - if (Array.isArray(val)) { - shorthandValues.push(...val); - } else if (typeof val === "string") { - shorthandValues.push(val); - } else { - return; - } - let priority = ""; - if (typeof prior === "string") { - priority = prior; - } else { - priority = this._priorities.get(prop) ?? ""; - } - const { position, shorthandFor } = shorthandProperties.get(prop); - let hasPriority = false; - for (const [longhandProperty, longhandItem] of shorthandFor) { - const { position: longhandPosition } = longhandItem; - const longhandValue = getPositionValue(shorthandValues, longhandPosition); - if (priority) { - this._setProperty(longhandProperty, longhandValue, priority); - } else { - const longhandPriority = this._priorities.get(longhandProperty) ?? ""; - if (longhandPriority) { - hasPriority = true; - } else { - this._setProperty(longhandProperty, longhandValue, priority); - } - } - } - if (hasPriority) { - this.removeProperty(prop); - } else { - const shorthandValue = getPositionValue(shorthandValues, position); - this._setProperty(prop, shorthandValue, priority); - } - }, - enumerable: false - }, - - _positionLonghandSetter: { - /** - * @param {string} prop - * @param {string} val - * @param {string} prior - * @param {string} shorthandProperty - */ - value(prop, val, prior, shorthandProperty) { - if (!shorthandProperty || !shorthandProperties.has(shorthandProperty)) { - return; - } - const shorthandPriority = this._priorities.get(shorthandProperty); - this.removeProperty(shorthandProperty); - let priority = ""; - if (typeof prior === "string") { - priority = prior; - } else { - priority = this._priorities.get(prop) ?? ""; - } - this.removeProperty(prop); - if (shorthandPriority && priority) { - this._setProperty(prop, val); - } else { - this._setProperty(prop, val, priority); - } - if (val && !hasVarFunc(val)) { - const longhandValues = []; - const { shorthandFor, position: shorthandPosition } = - shorthandProperties.get(shorthandProperty); - for (const [longhandProperty] of shorthandFor) { - const longhandValue = this.getPropertyValue(longhandProperty); - const longhandPriority = this._priorities.get(longhandProperty) ?? ""; - if (!longhandValue || longhandPriority !== priority) { - return; - } - longhandValues.push(longhandValue); - } - if (longhandValues.length === shorthandFor.size) { - const replacedValue = getPositionValue(longhandValues, shorthandPosition); - this._setProperty(shorthandProperty, replacedValue); - } - } - }, - enumerable: false - } -}); - -// Properties -Object.defineProperties(CSSStyleDeclaration.prototype, generatedProperties); - -// Additional properties -[...allProperties, ...allExtraProperties].forEach((property) => { - if (!implementedProperties.has(property)) { - const declaration = getPropertyDescriptor(property); - Object.defineProperty(CSSStyleDeclaration.prototype, property, declaration); - const camel = dashedToCamelCase(property); - Object.defineProperty(CSSStyleDeclaration.prototype, camel, declaration); - if (/^webkit[A-Z]/.test(camel)) { - const pascal = camel.replace(/^webkit/, "Webkit"); - Object.defineProperty(CSSStyleDeclaration.prototype, pascal, declaration); - } - } -}); - -module.exports = { - CSSStyleDeclaration, - propertyList: Object.fromEntries(implementedProperties) -}; diff --git a/vanilla/node_modules/cssstyle/lib/generated/allProperties.js b/vanilla/node_modules/cssstyle/lib/generated/allProperties.js deleted file mode 100644 index a7a8c6c..0000000 --- a/vanilla/node_modules/cssstyle/lib/generated/allProperties.js +++ /dev/null @@ -1,653 +0,0 @@ -"use strict"; -// autogenerated - 2025-08-02 -// https://www.w3.org/Style/CSS/all-properties.en.html - -module.exports = new Set([ - "-webkit-line-clamp", - "accent-color", - "align-content", - "align-items", - "align-self", - "alignment-baseline", - "all", - "anchor-name", - "anchor-scope", - "animation", - "animation-composition", - "animation-delay", - "animation-direction", - "animation-duration", - "animation-fill-mode", - "animation-iteration-count", - "animation-name", - "animation-play-state", - "animation-range", - "animation-range-end", - "animation-range-start", - "animation-timeline", - "animation-timing-function", - "appearance", - "aspect-ratio", - "azimuth", - "backface-visibility", - "background", - "background-attachment", - "background-blend-mode", - "background-clip", - "background-color", - "background-image", - "background-origin", - "background-position", - "background-repeat", - "background-size", - "baseline-shift", - "baseline-source", - "block-ellipsis", - "block-size", - "block-step", - "block-step-align", - "block-step-insert", - "block-step-round", - "block-step-size", - "bookmark-label", - "bookmark-level", - "bookmark-state", - "border", - "border-block", - "border-block-color", - "border-block-end", - "border-block-end-color", - "border-block-end-radius", - "border-block-end-style", - "border-block-end-width", - "border-block-start", - "border-block-start-color", - "border-block-start-radius", - "border-block-start-style", - "border-block-start-width", - "border-block-style", - "border-block-width", - "border-bottom", - "border-bottom-color", - "border-bottom-left-radius", - "border-bottom-radius", - "border-bottom-right-radius", - "border-bottom-style", - "border-bottom-width", - "border-boundary", - "border-clip", - "border-clip-bottom", - "border-clip-left", - "border-clip-right", - "border-clip-top", - "border-collapse", - "border-color", - "border-end-end-radius", - "border-end-start-radius", - "border-image", - "border-image-outset", - "border-image-repeat", - "border-image-slice", - "border-image-source", - "border-image-width", - "border-inline", - "border-inline-color", - "border-inline-end", - "border-inline-end-color", - "border-inline-end-radius", - "border-inline-end-style", - "border-inline-end-width", - "border-inline-start", - "border-inline-start-color", - "border-inline-start-radius", - "border-inline-start-style", - "border-inline-start-width", - "border-inline-style", - "border-inline-width", - "border-left", - "border-left-color", - "border-left-radius", - "border-left-style", - "border-left-width", - "border-limit", - "border-radius", - "border-right", - "border-right-color", - "border-right-radius", - "border-right-style", - "border-right-width", - "border-shape", - "border-spacing", - "border-start-end-radius", - "border-start-start-radius", - "border-style", - "border-top", - "border-top-color", - "border-top-left-radius", - "border-top-radius", - "border-top-right-radius", - "border-top-style", - "border-top-width", - "border-width", - "bottom", - "box-decoration-break", - "box-shadow", - "box-shadow-blur", - "box-shadow-color", - "box-shadow-offset", - "box-shadow-position", - "box-shadow-spread", - "box-sizing", - "box-snap", - "break-after", - "break-before", - "break-inside", - "caption-side", - "caret", - "caret-color", - "caret-shape", - "clear", - "clip", - "clip-path", - "clip-rule", - "color", - "color-adjust", - "color-interpolation-filters", - "color-scheme", - "column-count", - "column-fill", - "column-gap", - "column-rule", - "column-rule-break", - "column-rule-color", - "column-rule-outset", - "column-rule-style", - "column-rule-width", - "column-span", - "column-width", - "columns", - "contain", - "contain-intrinsic-block-size", - "contain-intrinsic-height", - "contain-intrinsic-inline-size", - "contain-intrinsic-size", - "contain-intrinsic-width", - "container", - "container-name", - "container-type", - "content", - "content-visibility", - "continue", - "corner-block-end-shape", - "corner-block-start-shape", - "corner-bottom-left-shape", - "corner-bottom-right-shape", - "corner-bottom-shape", - "corner-end-end-shape", - "corner-end-start-shape", - "corner-inline-end-shape", - "corner-inline-start-shape", - "corner-left-shape", - "corner-right-shape", - "corner-shape", - "corner-start-end-shape", - "corner-start-start-shape", - "corner-top-left-shape", - "corner-top-right-shape", - "corner-top-shape", - "counter-increment", - "counter-reset", - "counter-set", - "cue", - "cue-after", - "cue-before", - "cursor", - "direction", - "display", - "dominant-baseline", - "dynamic-range-limit", - "elevation", - "empty-cells", - "fill", - "fill-break", - "fill-color", - "fill-image", - "fill-opacity", - "fill-origin", - "fill-position", - "fill-repeat", - "fill-rule", - "fill-size", - "filter", - "flex", - "flex-basis", - "flex-direction", - "flex-flow", - "flex-grow", - "flex-shrink", - "flex-wrap", - "float", - "float-defer", - "float-offset", - "float-reference", - "flood-color", - "flood-opacity", - "flow-from", - "flow-into", - "font", - "font-family", - "font-feature-settings", - "font-kerning", - "font-language-override", - "font-optical-sizing", - "font-palette", - "font-size", - "font-size-adjust", - "font-stretch", - "font-style", - "font-synthesis", - "font-synthesis-position", - "font-synthesis-small-caps", - "font-synthesis-style", - "font-synthesis-weight", - "font-variant", - "font-variant-alternates", - "font-variant-caps", - "font-variant-east-asian", - "font-variant-emoji", - "font-variant-ligatures", - "font-variant-numeric", - "font-variant-position", - "font-variation-settings", - "font-weight", - "font-width", - "footnote-display", - "footnote-policy", - "forced-color-adjust", - "gap", - "glyph-orientation-vertical", - "grid", - "grid-area", - "grid-auto-columns", - "grid-auto-flow", - "grid-auto-rows", - "grid-column", - "grid-column-end", - "grid-column-start", - "grid-row", - "grid-row-end", - "grid-row-start", - "grid-template", - "grid-template-areas", - "grid-template-columns", - "grid-template-rows", - "hanging-punctuation", - "height", - "hyphenate-character", - "hyphenate-limit-chars", - "hyphenate-limit-last", - "hyphenate-limit-lines", - "hyphenate-limit-zone", - "hyphens", - "image-orientation", - "image-rendering", - "image-resolution", - "initial-letter", - "initial-letter-align", - "initial-letter-wrap", - "inline-size", - "inline-sizing", - "inset", - "inset-block", - "inset-block-end", - "inset-block-start", - "inset-inline", - "inset-inline-end", - "inset-inline-start", - "interpolate-size", - "isolation", - "item-cross", - "item-direction", - "item-flow", - "item-pack", - "item-slack", - "item-track", - "item-wrap", - "justify-content", - "justify-items", - "justify-self", - "left", - "letter-spacing", - "lighting-color", - "line-break", - "line-clamp", - "line-fit-edge", - "line-grid", - "line-height", - "line-height-step", - "line-padding", - "line-snap", - "list-style", - "list-style-image", - "list-style-position", - "list-style-type", - "margin", - "margin-block", - "margin-block-end", - "margin-block-start", - "margin-bottom", - "margin-break", - "margin-inline", - "margin-inline-end", - "margin-inline-start", - "margin-left", - "margin-right", - "margin-top", - "margin-trim", - "marker", - "marker-end", - "marker-knockout-left", - "marker-knockout-right", - "marker-mid", - "marker-pattern", - "marker-segment", - "marker-side", - "marker-start", - "mask", - "mask-border", - "mask-border-mode", - "mask-border-outset", - "mask-border-repeat", - "mask-border-slice", - "mask-border-source", - "mask-border-width", - "mask-clip", - "mask-composite", - "mask-image", - "mask-mode", - "mask-origin", - "mask-position", - "mask-repeat", - "mask-size", - "mask-type", - "max-block-size", - "max-height", - "max-inline-size", - "max-lines", - "max-width", - "min-block-size", - "min-height", - "min-inline-size", - "min-intrinsic-sizing", - "min-width", - "mix-blend-mode", - "nav-down", - "nav-left", - "nav-right", - "nav-up", - "object-fit", - "object-position", - "offset", - "offset-anchor", - "offset-distance", - "offset-path", - "offset-position", - "offset-rotate", - "opacity", - "order", - "orphans", - "outline", - "outline-color", - "outline-offset", - "outline-style", - "outline-width", - "overflow", - "overflow-anchor", - "overflow-block", - "overflow-clip-margin", - "overflow-clip-margin-block", - "overflow-clip-margin-block-end", - "overflow-clip-margin-block-start", - "overflow-clip-margin-bottom", - "overflow-clip-margin-inline", - "overflow-clip-margin-inline-end", - "overflow-clip-margin-inline-start", - "overflow-clip-margin-left", - "overflow-clip-margin-right", - "overflow-clip-margin-top", - "overflow-inline", - "overflow-wrap", - "overflow-x", - "overflow-y", - "overlay", - "overscroll-behavior", - "overscroll-behavior-block", - "overscroll-behavior-inline", - "overscroll-behavior-x", - "overscroll-behavior-y", - "padding", - "padding-block", - "padding-block-end", - "padding-block-start", - "padding-bottom", - "padding-inline", - "padding-inline-end", - "padding-inline-start", - "padding-left", - "padding-right", - "padding-top", - "page", - "page-break-after", - "page-break-before", - "page-break-inside", - "pause", - "pause-after", - "pause-before", - "perspective", - "perspective-origin", - "pitch", - "pitch-range", - "place-content", - "place-items", - "place-self", - "play-during", - "position", - "position-anchor", - "position-area", - "position-try", - "position-try-fallbacks", - "position-try-order", - "position-visibility", - "print-color-adjust", - "quotes", - "reading-flow", - "region-fragment", - "resize", - "rest", - "rest-after", - "rest-before", - "richness", - "right", - "rotate", - "row-gap", - "row-rule", - "row-rule-break", - "row-rule-color", - "row-rule-outset", - "row-rule-style", - "row-rule-width", - "ruby-align", - "ruby-merge", - "ruby-overhang", - "ruby-position", - "rule", - "rule-break", - "rule-color", - "rule-outset", - "rule-paint-order", - "rule-style", - "rule-width", - "running", - "scale", - "scroll-behavior", - "scroll-margin", - "scroll-margin-block", - "scroll-margin-block-end", - "scroll-margin-block-start", - "scroll-margin-bottom", - "scroll-margin-inline", - "scroll-margin-inline-end", - "scroll-margin-inline-start", - "scroll-margin-left", - "scroll-margin-right", - "scroll-margin-top", - "scroll-marker-group", - "scroll-padding", - "scroll-padding-block", - "scroll-padding-block-end", - "scroll-padding-block-start", - "scroll-padding-bottom", - "scroll-padding-inline", - "scroll-padding-inline-end", - "scroll-padding-inline-start", - "scroll-padding-left", - "scroll-padding-right", - "scroll-padding-top", - "scroll-snap-align", - "scroll-snap-stop", - "scroll-snap-type", - "scroll-start-target", - "scroll-timeline", - "scroll-timeline-axis", - "scroll-timeline-name", - "scrollbar-color", - "scrollbar-gutter", - "scrollbar-width", - "shape-image-threshold", - "shape-inside", - "shape-margin", - "shape-outside", - "slider-orientation", - "spatial-navigation-action", - "spatial-navigation-contain", - "spatial-navigation-function", - "speak", - "speak-as", - "speak-header", - "speak-numeral", - "speak-punctuation", - "speech-rate", - "stress", - "string-set", - "stroke", - "stroke-align", - "stroke-alignment", - "stroke-break", - "stroke-color", - "stroke-dash-corner", - "stroke-dash-justify", - "stroke-dashadjust", - "stroke-dasharray", - "stroke-dashcorner", - "stroke-dashoffset", - "stroke-image", - "stroke-linecap", - "stroke-linejoin", - "stroke-miterlimit", - "stroke-opacity", - "stroke-origin", - "stroke-position", - "stroke-repeat", - "stroke-size", - "stroke-width", - "tab-size", - "table-layout", - "text-align", - "text-align-all", - "text-align-last", - "text-autospace", - "text-box", - "text-box-edge", - "text-box-trim", - "text-combine-upright", - "text-decoration", - "text-decoration-color", - "text-decoration-line", - "text-decoration-skip", - "text-decoration-skip-box", - "text-decoration-skip-ink", - "text-decoration-skip-inset", - "text-decoration-skip-self", - "text-decoration-skip-spaces", - "text-decoration-style", - "text-decoration-thickness", - "text-emphasis", - "text-emphasis-color", - "text-emphasis-position", - "text-emphasis-skip", - "text-emphasis-style", - "text-group-align", - "text-indent", - "text-justify", - "text-orientation", - "text-overflow", - "text-shadow", - "text-spacing", - "text-spacing-trim", - "text-transform", - "text-underline-offset", - "text-underline-position", - "text-wrap", - "text-wrap-mode", - "text-wrap-style", - "timeline-scope", - "top", - "transform", - "transform-box", - "transform-origin", - "transform-style", - "transition", - "transition-behavior", - "transition-delay", - "transition-duration", - "transition-property", - "transition-timing-function", - "translate", - "unicode-bidi", - "user-select", - "vertical-align", - "view-timeline", - "view-timeline-axis", - "view-timeline-inset", - "view-timeline-name", - "view-transition-class", - "view-transition-group", - "view-transition-name", - "visibility", - "voice-balance", - "voice-duration", - "voice-family", - "voice-pitch", - "voice-range", - "voice-rate", - "voice-stress", - "voice-volume", - "volume", - "white-space", - "white-space-collapse", - "white-space-trim", - "widows", - "width", - "will-change", - "word-break", - "word-space-transform", - "word-spacing", - "word-wrap", - "wrap-after", - "wrap-before", - "wrap-flow", - "wrap-inside", - "wrap-through", - "writing-mode", - "z-index" -]); diff --git a/vanilla/node_modules/cssstyle/lib/generated/implementedProperties.js b/vanilla/node_modules/cssstyle/lib/generated/implementedProperties.js deleted file mode 100644 index 4d81c34..0000000 --- a/vanilla/node_modules/cssstyle/lib/generated/implementedProperties.js +++ /dev/null @@ -1,1466 +0,0 @@ -"use strict"; -// autogenerated - 2026-01-06 - -module.exports = new Map([ - [ - "-webkit-border-after-color", - null - ], - [ - "-webkit-border-before-color", - null - ], - [ - "-webkit-border-end-color", - null - ], - [ - "-webkit-border-start-color", - null - ], - [ - "-webkit-column-rule-color", - null - ], - [ - "-webkit-tap-highlight-color", - null - ], - [ - "-webkit-text-emphasis-color", - null - ], - [ - "-webkit-text-fill-color", - { - "name": "-webkit-text-fill-color", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-text-fill-color", - "initial": "currentcolor", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "an RGBA color", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "media": "visual", - "styleDeclaration": [ - "-webkit-text-fill-color", - "WebkitTextFillColor", - "webkitTextFillColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "-webkit-text-stroke-color", - { - "name": "-webkit-text-stroke-color", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-text-stroke-color", - "initial": "currentcolor", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "an RGBA color", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "media": "visual", - "styleDeclaration": [ - "-webkit-text-stroke-color", - "WebkitTextStrokeColor", - "webkitTextStrokeColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "background", - { - "name": "background", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "background" - ], - "syntax": "<bg-layer>#? , <final-bg-layer>", - "extended": [] - } - ], - [ - "background-attachment", - { - "name": "background-attachment", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-attachment", - "initial": "scroll", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item the keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "background-attachment", - "backgroundAttachment" - ], - "syntax": "<attachment>#", - "extended": [] - } - ], - [ - "background-clip", - { - "name": "background-clip", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-clip", - "initial": "border-box", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "styleDeclaration": [ - "background-clip", - "backgroundClip" - ], - "syntax": "<bg-clip>#", - "extended": [] - } - ], - [ - "background-color", - { - "name": "background-color", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-color", - "initial": "transparent", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "computed color", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "background-color", - "backgroundColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "background-image", - { - "name": "background-image", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-image", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item either an <image> or the keyword none", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "background-image", - "backgroundImage" - ], - "syntax": "<bg-image>#", - "extended": [] - } - ], - [ - "background-origin", - { - "name": "background-origin", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-origin", - "initial": "padding-box", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "styleDeclaration": [ - "background-origin", - "backgroundOrigin" - ], - "syntax": "<visual-box>#", - "extended": [] - } - ], - [ - "background-position", - { - "name": "background-position", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position", - "initial": "0% 0%", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "refer to size of background positioning area minus size of background image; see text", - "computedValue": "a list, each item a pair of offsets (horizontal and vertical) from the top left origin, each offset given as a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "styleDeclaration": [ - "background-position", - "backgroundPosition" - ], - "syntax": "<bg-position>#", - "extended": [] - } - ], - [ - "background-repeat", - { - "name": "background-repeat", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-repeat", - "initial": "repeat", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a pair of keywords, one per dimension", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "background-repeat", - "backgroundRepeat" - ], - "syntax": "<repeat-style>#", - "extended": [] - } - ], - [ - "background-size", - { - "name": "background-size", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-size", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "see text", - "computedValue": "list, each item a pair of sizes (one per axis) each represented as either a keyword or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "styleDeclaration": [ - "background-size", - "backgroundSize" - ], - "syntax": "<bg-size>#", - "extended": [] - } - ], - [ - "border", - { - "name": "border", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-bottom", - { - "name": "border-bottom", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-bottom", - "borderBottom" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-bottom-color", - { - "name": "border-bottom-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-bottom-color", - "borderBottomColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-bottom-style", - { - "name": "border-bottom-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-bottom-style", - "borderBottomStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-bottom-width", - { - "name": "border-bottom-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-bottom-width", - "borderBottomWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-collapse", - { - "name": "border-collapse", - "href": "https://drafts.csswg.org/css-tables-3/#propdef-border-collapse", - "initial": "separate", - "appliesTo": "table grid boxes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "border-collapse", - "borderCollapse" - ], - "syntax": "separate | collapse", - "extended": [] - } - ], - [ - "border-color", - { - "name": "border-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-color", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-color", - "borderColor" - ], - "syntax": "[ <color> | <image-1D> ]{1,4}", - "extended": [] - } - ], - [ - "border-left", - { - "name": "border-left", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-left", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-left", - "borderLeft" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-left-color", - { - "name": "border-left-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-left-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-left-color", - "borderLeftColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-left-style", - { - "name": "border-left-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-left-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-left-style", - "borderLeftStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-left-width", - { - "name": "border-left-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-left-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-left-width", - "borderLeftWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-right", - { - "name": "border-right", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-right", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-right", - "borderRight" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-right-color", - { - "name": "border-right-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-right-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-right-color", - "borderRightColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-right-style", - { - "name": "border-right-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-right-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-right-style", - "borderRightStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-right-width", - { - "name": "border-right-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-right-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-right-width", - "borderRightWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-spacing", - { - "name": "border-spacing", - "href": "https://drafts.csswg.org/css-tables-3/#propdef-border-spacing", - "initial": "0px 0px", - "appliesTo": "table grid boxes when border-collapse is separate", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "two absolute lengths", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "border-spacing", - "borderSpacing" - ], - "syntax": "<length>{1,2}", - "extended": [] - } - ], - [ - "border-style", - { - "name": "border-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-style", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-style", - "borderStyle" - ], - "syntax": "<'border-top-style'>{1,4}", - "extended": [] - } - ], - [ - "border-top", - { - "name": "border-top", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-top", - "borderTop" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-top-color", - { - "name": "border-top-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-top-color", - "borderTopColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-top-style", - { - "name": "border-top-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-top-style", - "borderTopStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-top-width", - { - "name": "border-top-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-top-width", - "borderTopWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-width", - { - "name": "border-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-width", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-width", - "borderWidth" - ], - "syntax": "<'border-top-width'>{1,4}", - "extended": [] - } - ], - [ - "bottom", - { - "name": "bottom", - "href": "https://drafts.csswg.org/css-position-3/#propdef-bottom", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "bottom" - ], - "syntax": "auto | <length-percentage> | <anchor()> | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "clear", - { - "name": "clear", - "href": "https://drafts.csswg.org/css-page-floats-3/#propdef-clear", - "initial": "none", - "appliesTo": "block-level elements, floats, regions, pages", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "clear" - ], - "syntax": "inline-start | inline-end | block-start | block-end | left | right | top | bottom | both-inline | both-block | both | none", - "extended": [] - } - ], - [ - "clip", - { - "name": "clip", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-clip", - "initial": "auto", - "appliesTo": "Absolutely positioned elements. In SVG, it applies to elements which establish a new viewport, pattern elements and mask elements.", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "clip" - ], - "syntax": "<rect()> | auto", - "extended": [] - } - ], - [ - "color", - { - "name": "color", - "href": "https://drafts.csswg.org/css-color-4/#propdef-color", - "initial": "CanvasText", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "computed color, see resolving color values", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "color" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "display", - { - "name": "display", - "href": "https://drafts.csswg.org/css-display-4/#propdef-display", - "initial": "inline", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "a pair of keywords representing the inner and outer display types plus optional list-item flag, or a <display-internal> or <display-box> keyword; see prose in a variety of specs for computation rules", - "canonicalOrder": "per grammar", - "animationType": "see § 2.9 Animating and Interpolating display", - "styleDeclaration": [ - "display" - ], - "syntax": "[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy> | <display-outside> || [ <display-inside> | math ]", - "extended": [ - "https://w3c.github.io/mathml-core/" - ] - } - ], - [ - "flex", - { - "name": "flex", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex", - "initial": "0 1 auto", - "appliesTo": "flex items", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "by computed value type", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "flex" - ], - "syntax": "none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]", - "extended": [] - } - ], - [ - "flex-basis", - { - "name": "flex-basis", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex-basis", - "initial": "auto", - "appliesTo": "flex items", - "inherited": "no", - "percentages": "relative to the flex container’s inner main size", - "computedValue": "specified keyword or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "flex-basis", - "flexBasis" - ], - "syntax": "content | <'width'>", - "extended": [] - } - ], - [ - "flex-grow", - { - "name": "flex-grow", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex-grow", - "initial": "0", - "appliesTo": "flex items", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified number", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "flex-grow", - "flexGrow" - ], - "syntax": "<number [0,∞]>", - "extended": [] - } - ], - [ - "flex-shrink", - { - "name": "flex-shrink", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex-shrink", - "initial": "1", - "appliesTo": "flex items", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "number", - "styleDeclaration": [ - "flex-shrink", - "flexShrink" - ], - "syntax": "<number [0,∞]>", - "extended": [] - } - ], - [ - "float", - { - "name": "float", - "href": "https://drafts.csswg.org/css-page-floats-3/#propdef-float", - "initial": "none", - "appliesTo": "all elements.", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "float" - ], - "syntax": "block-start | block-end | inline-start | inline-end | snap-block | <snap-block()> | snap-inline | <snap-inline()> | left | right | top | bottom | none | footnote", - "extended": [ - "https://drafts.csswg.org/css-gcpm-3/" - ] - } - ], - [ - "flood-color", - { - "name": "flood-color", - "href": "https://drafts.fxtf.org/filter-effects-1/#propdef-flood-color", - "initial": "black", - "appliesTo": "feFlood and feDropShadow elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "flood-color", - "floodColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "font", - { - "name": "font", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font", - "initial": "see individual properties", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "see individual properties", - "styleDeclaration": [ - "font" - ], - "syntax": "[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] | <system-family-name>", - "extended": [] - } - ], - [ - "font-family", - { - "name": "font-family", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-family", - "initial": "depends on user agent", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "list, each item a string and/or <generic-family> keywords", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-family", - "fontFamily" - ], - "syntax": "[ <family-name> | <generic-family> ]#", - "extended": [] - } - ], - [ - "font-size", - { - "name": "font-size", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-size", - "initial": "medium", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "refer to parent element’s font size", - "computedValue": "an absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "font-size", - "fontSize" - ], - "syntax": "<absolute-size> | <relative-size> | <length-percentage [0,∞]> | math", - "extended": [] - } - ], - [ - "font-style", - { - "name": "font-style", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-style", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "the keyword specified, plus angle in degrees if specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value type;normal animates as oblique 0deg", - "styleDeclaration": [ - "font-style", - "fontStyle" - ], - "syntax": "normal | italic | left | right | oblique <angle [-90deg,90deg]>?", - "extended": [] - } - ], - [ - "font-variant", - { - "name": "font-variant", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variant", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-variant", - "fontVariant" - ], - "syntax": "normal | none | [ [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ] || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || [ stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) ] || [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ] || [ <east-asian-variant-values> || <east-asian-width-values> || ruby ] || [ sub | super ] || [ text | emoji | unicode ] ]", - "extended": [] - } - ], - [ - "font-weight", - { - "name": "font-weight", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-weight", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "a number, see below", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "font-weight", - "fontWeight" - ], - "syntax": "<font-weight-absolute> | bolder | lighter", - "extended": [] - } - ], - [ - "height", - { - "name": "height", - "href": "https://drafts.csswg.org/css-sizing-3/#propdef-height", - "initial": "auto", - "appliesTo": "all elements except non-replaced inlines", - "inherited": "no", - "percentages": "relative to width/height of containing block", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value type, recursing into fit-content()", - "logicalPropertyGroup": "size", - "styleDeclaration": [ - "height" - ], - "syntax": "auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/", - "https://drafts.csswg.org/css-sizing-4/" - ] - } - ], - [ - "left", - { - "name": "left", - "href": "https://drafts.csswg.org/css-position-3/#propdef-left", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "left" - ], - "syntax": "auto | <length-percentage> | <anchor()> | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "lighting-color", - { - "name": "lighting-color", - "href": "https://drafts.fxtf.org/filter-effects-1/#propdef-lighting-color", - "initial": "white", - "appliesTo": "feDiffuseLighting and feSpecularLighting elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "lighting-color", - "lightingColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "line-height", - { - "name": "line-height", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-line-height", - "initial": "normal", - "appliesTo": "non-replaced inline boxes and SVG text content elements", - "inherited": "yes", - "percentages": "computed relative to 1em", - "computedValue": "the specified keyword, a number, or a computed <length> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "line-height", - "lineHeight" - ], - "syntax": "normal | <number [0,∞]> | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "margin", - { - "name": "margin", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "margin" - ], - "syntax": "<'margin-top'>{1,4}", - "extended": [] - } - ], - [ - "margin-bottom", - { - "name": "margin-bottom", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin-bottom", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-bottom", - "marginBottom" - ], - "syntax": "<length-percentage> | auto | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "margin-left", - { - "name": "margin-left", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin-left", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-left", - "marginLeft" - ], - "syntax": "<length-percentage> | auto | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "margin-right", - { - "name": "margin-right", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin-right", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-right", - "marginRight" - ], - "syntax": "<length-percentage> | auto | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "margin-top", - { - "name": "margin-top", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin-top", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-top", - "marginTop" - ], - "syntax": "<length-percentage> | auto | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "opacity", - { - "name": "opacity", - "href": "https://drafts.csswg.org/css-color-4/#propdef-opacity", - "initial": "1", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "map to the range [0,1]", - "computedValue": "specified number, clamped to the range [0,1]", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "opacity" - ], - "syntax": "<opacity-value>", - "extended": [] - } - ], - [ - "outline-color", - { - "name": "outline-color", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-outline-color", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see below", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "outline-color", - "outlineColor" - ], - "syntax": "auto | <'border-top-color'>", - "extended": [] - } - ], - [ - "padding", - { - "name": "padding", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "padding" - ], - "syntax": "<'padding-top'>{1,4}", - "extended": [] - } - ], - [ - "padding-bottom", - { - "name": "padding-bottom", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding-bottom", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-bottom", - "paddingBottom" - ], - "syntax": "<length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "padding-left", - { - "name": "padding-left", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding-left", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-left", - "paddingLeft" - ], - "syntax": "<length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "padding-right", - { - "name": "padding-right", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding-right", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-right", - "paddingRight" - ], - "syntax": "<length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "padding-top", - { - "name": "padding-top", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding-top", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-top", - "paddingTop" - ], - "syntax": "<length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "right", - { - "name": "right", - "href": "https://drafts.csswg.org/css-position-3/#propdef-right", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "right" - ], - "syntax": "auto | <length-percentage> | <anchor()> | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "stop-color", - { - "name": "stop-color", - "href": "https://svgwg.org/svg2-draft/pservers.html#StopColorProperty", - "styleDeclaration": [ - "stop-color", - "stopColor" - ], - "extended": [] - } - ], - [ - "top", - { - "name": "top", - "href": "https://drafts.csswg.org/css-position-3/#propdef-top", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "top" - ], - "syntax": "auto | <length-percentage> | <anchor()> | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "width", - { - "name": "width", - "href": "https://drafts.csswg.org/css-sizing-3/#propdef-width", - "initial": "auto", - "appliesTo": "all elements except non-replaced inlines", - "inherited": "no", - "percentages": "relative to width/height of containing block", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value type, recursing into fit-content()", - "logicalPropertyGroup": "size", - "styleDeclaration": [ - "width" - ], - "syntax": "auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/", - "https://drafts.csswg.org/css-sizing-4/" - ] - } - ] -]); diff --git a/vanilla/node_modules/cssstyle/lib/generated/properties.js b/vanilla/node_modules/cssstyle/lib/generated/properties.js deleted file mode 100644 index 8399ea6..0000000 --- a/vanilla/node_modules/cssstyle/lib/generated/properties.js +++ /dev/null @@ -1,6637 +0,0 @@ -"use strict"; -// autogenerated - 2026-01-06 -// https://www.w3.org/Style/CSS/all-properties.en.html - -var external_dependency_parsers_0 = require("../parsers.js"); -var backgroundImage_export_parse, backgroundImage_export_definition, backgroundImage_export_property; -const backgroundImage_local_var_property = "background-image"; -const backgroundImage_local_var_shorthand = "background"; -backgroundImage_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(backgroundImage_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveGradientUrlValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } else { - return; - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; -backgroundImage_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(backgroundImage_local_var_shorthand, ""); - this._setProperty(backgroundImage_local_var_property, v); - } else { - const val = backgroundImage_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(backgroundImage_local_var_shorthand) && this._priorities.has(backgroundImage_local_var_property) ? this._priorities.get(backgroundImage_local_var_property) : ""; - this._setProperty(backgroundImage_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(backgroundImage_local_var_property); - }, - enumerable: true, - configurable: true -}; -backgroundImage_export_property = backgroundImage_local_var_property; -var backgroundPosition_export_parse, backgroundPosition_export_definition, backgroundPosition_export_property; -const backgroundPosition_local_var_property = "background-position"; -const backgroundPosition_local_var_shorthand = "background"; -const backgroundPosition_local_var_keyX = ["left", "right"]; -const backgroundPosition_local_var_keyY = ["top", "bottom"]; -const backgroundPosition_local_var_keywordsX = ["center", ...backgroundPosition_local_var_keyX]; -const backgroundPosition_local_var_keywordsY = ["center", ...backgroundPosition_local_var_keyY]; -const backgroundPosition_local_var_keywords = ["center", ...backgroundPosition_local_var_keyX, ...backgroundPosition_local_var_keyY]; -backgroundPosition_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const { - AST_TYPES - } = external_dependency_parsers_0; - const values = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(backgroundPosition_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - const [part1, part2, part3, part4] = value; - let parsedValue = ""; - switch (value.length) { - case 1: - { - const val1 = part1.type === AST_TYPES.IDENTIFIER ? part1.name : external_dependency_parsers_0.resolveNumericValue([part1], { - type: "length" - }); - if (val1) { - if (val1 === "center") { - parsedValue = `${val1} ${val1}`; - } else if (val1 === "top" || val1 === "bottom") { - parsedValue = `center ${val1}`; - } else { - parsedValue = `${val1} center`; - } - } - break; - } - case 2: - { - const val1 = part1.type === AST_TYPES.IDENTIFIER ? part1.name : external_dependency_parsers_0.resolveNumericValue([part1], { - type: "length" - }); - const val2 = part2.type === AST_TYPES.IDENTIFIER ? part2.name : external_dependency_parsers_0.resolveNumericValue([part2], { - type: "length" - }); - if (val1 && val2) { - if (backgroundPosition_local_var_keywordsX.includes(val1) && backgroundPosition_local_var_keywordsY.includes(val2)) { - parsedValue = `${val1} ${val2}`; - } else if (backgroundPosition_local_var_keywordsY.includes(val1) && backgroundPosition_local_var_keywordsX.includes(val2)) { - parsedValue = `${val2} ${val1}`; - } else if (backgroundPosition_local_var_keywordsX.includes(val1)) { - if (val2 === "center" || !backgroundPosition_local_var_keywordsX.includes(val2)) { - parsedValue = `${val1} ${val2}`; - } - } else if (backgroundPosition_local_var_keywordsY.includes(val2)) { - if (!backgroundPosition_local_var_keywordsY.includes(val1)) { - parsedValue = `${val1} ${val2}`; - } - } else if (!backgroundPosition_local_var_keywordsY.includes(val1) && !backgroundPosition_local_var_keywordsX.includes(val2)) { - parsedValue = `${val1} ${val2}`; - } - } - break; - } - case 3: - { - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = part2.type === AST_TYPES.IDENTIFIER ? part2.name : external_dependency_parsers_0.resolveNumericValue([part2], { - type: "length" - }); - const val3 = part3.type === AST_TYPES.IDENTIFIER ? part3.name : external_dependency_parsers_0.resolveNumericValue([part3], { - type: "length" - }); - if (val1 && val2 && val3) { - let posX = ""; - let offX = ""; - let posY = ""; - let offY = ""; - if (backgroundPosition_local_var_keywordsX.includes(val1)) { - if (backgroundPosition_local_var_keyY.includes(val2)) { - if (!backgroundPosition_local_var_keywords.includes(val3)) { - posX = val1; - posY = val2; - offY = val3; - } - } else if (backgroundPosition_local_var_keyY.includes(val3)) { - if (!backgroundPosition_local_var_keywords.includes(val2)) { - posX = val1; - offX = val2; - posY = val3; - } - } - } else if (backgroundPosition_local_var_keywordsY.includes(val1)) { - if (backgroundPosition_local_var_keyX.includes(val2)) { - if (!backgroundPosition_local_var_keywords.includes(val3)) { - posX = val2; - offX = val3; - posY = val1; - } - } else if (backgroundPosition_local_var_keyX.includes(val3)) { - if (!backgroundPosition_local_var_keywords.includes(val2)) { - posX = val3; - posY = val1; - offY = val2; - } - } - } - if (posX && posY) { - if (offX) { - parsedValue = `${posX} ${offX} ${posY}`; - } else if (offY) { - parsedValue = `${posX} ${posY} ${offY}`; - } - } - } - break; - } - case 4: - { - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = external_dependency_parsers_0.resolveNumericValue([part2], { - type: "length" - }); - const val3 = part3.type === AST_TYPES.IDENTIFIER && part3.name; - const val4 = external_dependency_parsers_0.resolveNumericValue([part4], { - type: "length" - }); - if (val1 && val2 && val3 && val4) { - let posX = ""; - let offX = ""; - let posY = ""; - let offY = ""; - if (backgroundPosition_local_var_keywordsX.includes(val1) && backgroundPosition_local_var_keyY.includes(val3)) { - posX = val1; - offX = val2; - posY = val3; - offY = val4; - } else if (backgroundPosition_local_var_keyX.includes(val1) && backgroundPosition_local_var_keywordsY.includes(val3)) { - posX = val1; - offX = val2; - posY = val3; - offY = val4; - } else if (backgroundPosition_local_var_keyY.includes(val1) && backgroundPosition_local_var_keywordsX.includes(val3)) { - posX = val3; - offX = val4; - posY = val1; - offY = val2; - } - if (posX && offX && posY && offY) { - parsedValue = `${posX} ${offX} ${posY} ${offY}`; - } - } - break; - } - default: - } - if (parsedValue) { - parsedValues.push(parsedValue); - } else { - return; - } - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; -backgroundPosition_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(backgroundPosition_local_var_shorthand, ""); - this._setProperty(backgroundPosition_local_var_property, v); - } else { - const val = backgroundPosition_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(backgroundPosition_local_var_shorthand) && this._priorities.has(backgroundPosition_local_var_property) ? this._priorities.get(backgroundPosition_local_var_property) : ""; - this._setProperty(backgroundPosition_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(backgroundPosition_local_var_property); - }, - enumerable: true, - configurable: true -}; -backgroundPosition_export_property = backgroundPosition_local_var_property; -var backgroundSize_export_parse, backgroundSize_export_definition, backgroundSize_export_property; -const backgroundSize_local_var_property = "background-size"; -const backgroundSize_local_var_shorthand = "background"; -backgroundSize_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const { - AST_TYPES - } = external_dependency_parsers_0; - const values = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(backgroundSize_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - if (value.length === 1) { - const [{ - isNumber, - name, - type, - value: itemValue - }] = value; - switch (type) { - case AST_TYPES.CALC: - { - if (isNumber) { - return; - } - parsedValues.push(`${name}(${itemValue})`); - break; - } - case AST_TYPES.GLOBAL_KEYWORD: - case AST_TYPES.IDENTIFIER: - { - parsedValues.push(name); - break; - } - default: - { - const parsedValue = external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } - } else { - const [val1, val2] = value; - const parts = []; - if (val1.type === AST_TYPES.CALC && !val1.isNumber) { - parts.push(`${val1.name}(${val1.value})`); - } else if (val1.type === AST_TYPES.IDENTIFIER) { - parts.push(val1.name); - } else if (val1.type === AST_TYPES.DIMENSION) { - parts.push(`${val1.value}${val1.unit}`); - } else if (val1.type === AST_TYPES.PERCENTAGE) { - parts.push(`${val1.value}%`); - } else { - return; - } - switch (val2.type) { - case AST_TYPES.CALC: - { - if (val2.isNumber) { - return; - } - parts.push(`${val2.name}(${val2.value})`); - break; - } - case AST_TYPES.DIMENSION: - { - parts.push(`${val2.value}${val2.unit}`); - break; - } - case AST_TYPES.IDENTIFIER: - { - if (val2.name !== "auto") { - parts.push(val2.name); - } - break; - } - case AST_TYPES.PERCENTAGE: - { - parts.push(`${val2.value}%`); - break; - } - default: - { - return; - } - } - parsedValues.push(parts.join(" ")); - } - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; -backgroundSize_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(backgroundSize_local_var_shorthand, ""); - this._setProperty(backgroundSize_local_var_property, v); - } else { - const val = backgroundSize_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(backgroundSize_local_var_shorthand) && this._priorities.has(backgroundSize_local_var_property) ? this._priorities.get(backgroundSize_local_var_property) : ""; - this._setProperty(backgroundSize_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(backgroundSize_local_var_property); - }, - enumerable: true, - configurable: true -}; -backgroundSize_export_property = backgroundSize_local_var_property; -var backgroundRepeat_export_parse, backgroundRepeat_export_definition, backgroundRepeat_export_property; -const backgroundRepeat_local_var_property = "background-repeat"; -const backgroundRepeat_local_var_shorthand = "background"; -backgroundRepeat_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const { - AST_TYPES - } = external_dependency_parsers_0; - const values = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(backgroundRepeat_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - let parsedValue = ""; - switch (value.length) { - case 1: - { - const [part1] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - if (val1) { - parsedValue = val1; - } - break; - } - case 2: - { - const [part1, part2] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name; - if (val1 && val2) { - if (val1 === "repeat" && val2 === "no-repeat") { - parsedValue = "repeat-x"; - } else if (val1 === "no-repeat" && val2 === "repeat") { - parsedValue = "repeat-y"; - } else if (val1 === val2) { - parsedValue = val1; - } else { - parsedValue = `${val1} ${val2}`; - } - } - break; - } - default: - } - if (parsedValue) { - parsedValues.push(parsedValue); - } else { - return; - } - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; -backgroundRepeat_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(backgroundRepeat_local_var_shorthand, ""); - this._setProperty(backgroundRepeat_local_var_property, v); - } else { - const val = backgroundRepeat_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(backgroundRepeat_local_var_shorthand) && this._priorities.has(backgroundRepeat_local_var_property) ? this._priorities.get(backgroundRepeat_local_var_property) : ""; - this._setProperty(backgroundRepeat_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(backgroundRepeat_local_var_property); - }, - enumerable: true, - configurable: true -}; -backgroundRepeat_export_property = backgroundRepeat_local_var_property; -var backgroundOrigin_export_parse, backgroundOrigin_export_definition, backgroundOrigin_export_property; -const backgroundOrigin_local_var_property = "background-origin"; -const backgroundOrigin_local_var_shorthand = "background"; -backgroundOrigin_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(backgroundOrigin_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveKeywordValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; -backgroundOrigin_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(backgroundOrigin_local_var_shorthand, ""); - this._setProperty(backgroundOrigin_local_var_property, v); - } else { - const val = backgroundOrigin_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(backgroundOrigin_local_var_shorthand) && this._priorities.has(backgroundOrigin_local_var_property) ? this._priorities.get(backgroundOrigin_local_var_property) : ""; - this._setProperty(backgroundOrigin_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(backgroundOrigin_local_var_property); - }, - enumerable: true, - configurable: true -}; -backgroundOrigin_export_property = backgroundOrigin_local_var_property; -var backgroundClip_export_parse, backgroundClip_export_definition, backgroundClip_export_property; -const backgroundClip_local_var_property = "background-clip"; -const backgroundClip_local_var_shorthand = "background"; -backgroundClip_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(backgroundClip_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveKeywordValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; -backgroundClip_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(backgroundClip_local_var_shorthand, ""); - this._setProperty(backgroundClip_local_var_property, v); - } else { - const val = backgroundClip_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(backgroundClip_local_var_shorthand) && this._priorities.has(backgroundClip_local_var_property) ? this._priorities.get(backgroundClip_local_var_property) : ""; - this._setProperty(backgroundClip_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(backgroundClip_local_var_property); - }, - enumerable: true, - configurable: true -}; -backgroundClip_export_property = backgroundClip_local_var_property; -var backgroundAttachment_export_parse, backgroundAttachment_export_definition, backgroundAttachment_export_property; -const backgroundAttachment_local_var_property = "background-attachment"; -const backgroundAttachment_local_var_shorthand = "background"; -backgroundAttachment_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(backgroundAttachment_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveKeywordValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; -backgroundAttachment_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(backgroundAttachment_local_var_shorthand, ""); - this._setProperty(backgroundAttachment_local_var_property, v); - } else { - const val = backgroundAttachment_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(backgroundAttachment_local_var_shorthand) && this._priorities.has(backgroundAttachment_local_var_property) ? this._priorities.get(backgroundAttachment_local_var_property) : ""; - this._setProperty(backgroundAttachment_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(backgroundAttachment_local_var_property); - }, - enumerable: true, - configurable: true -}; -backgroundAttachment_export_property = backgroundAttachment_local_var_property; -var backgroundColor_export_parse, backgroundColor_export_definition, backgroundColor_export_property; -const backgroundColor_local_var_property = "background-color"; -const backgroundColor_local_var_shorthand = "background"; -backgroundColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(backgroundColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -backgroundColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(backgroundColor_local_var_shorthand, ""); - this._setProperty(backgroundColor_local_var_property, v); - } else { - const val = backgroundColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(backgroundColor_local_var_shorthand) && this._priorities.has(backgroundColor_local_var_property) ? this._priorities.get(backgroundColor_local_var_property) : ""; - this._setProperty(backgroundColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(backgroundColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -backgroundColor_export_property = backgroundColor_local_var_property; -var background_export_initialValues, background_export_shorthandFor, background_export_parse, background_export_definition, background_export_property; -const background_local_var_property = "background"; -background_export_initialValues = new Map([[{ - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property -}.property, "none"], [{ - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property -}.property, "0% 0%"], [{ - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property -}.property, "auto"], [{ - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property -}.property, "repeat"], [{ - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property -}.property, "padding-box"], [{ - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property -}.property, "border-box"], [{ - parse: backgroundAttachment_export_parse, - definition: backgroundAttachment_export_definition, - property: backgroundAttachment_export_property -}.property, "scroll"], [{ - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property -}.property, "transparent"]]); -background_export_shorthandFor = new Map([[{ - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property -}.property, { - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property -}], [{ - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property -}.property, { - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property -}], [{ - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property -}.property, { - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property -}], [{ - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property -}.property, { - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property -}], [{ - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property -}.property, { - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property -}], [{ - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property -}.property, { - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property -}], [{ - parse: backgroundAttachment_export_parse, - definition: backgroundAttachment_export_definition, - property: backgroundAttachment_export_property -}.property, { - parse: backgroundAttachment_export_parse, - definition: backgroundAttachment_export_definition, - property: backgroundAttachment_export_property -}], [{ - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property -}.property, { - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property -}]]); -background_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } else if (external_dependency_parsers_0.hasCalcFunc(v)) { - v = external_dependency_parsers_0.resolveCalc(v); - } - if (!external_dependency_parsers_0.isValidPropertyValue(background_local_var_property, v)) { - return; - } - const values = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const bgValues = []; - const l = values.length; - for (let i = 0; i < l; i++) { - let bg = { - [{ - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property - }.property), - [{ - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property - }.property), - [{ - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property), - [{ - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property - }.property), - [{ - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property - }.property), - [{ - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property - }.property), - [{ - parse: backgroundAttachment_export_parse, - definition: backgroundAttachment_export_definition, - property: backgroundAttachment_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundAttachment_export_parse, - definition: backgroundAttachment_export_definition, - property: backgroundAttachment_export_property - }.property), - [{ - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property) - }; - if (l > 1 && i !== l - 1) { - bg = { - [{ - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property - }.property), - [{ - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property - }.property), - [{ - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property), - [{ - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property - }.property), - [{ - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property - }.property), - [{ - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property - }.property), - [{ - parse: backgroundAttachment_export_parse, - definition: backgroundAttachment_export_definition, - property: backgroundAttachment_export_property - }.property]: background_export_initialValues.get({ - parse: backgroundAttachment_export_parse, - definition: backgroundAttachment_export_definition, - property: backgroundAttachment_export_property - }.property) - }; - } - const bgPosition = []; - const bgSize = []; - const bgRepeat = []; - const bgBox = []; - const bgParts = external_dependency_parsers_0.splitValue(values[i], { - delimiter: "/" - }); - if (!bgParts.length || bgParts.length > 2) { - return; - } - const [bgPart1, bgPart2 = ""] = bgParts; - const parts1 = external_dependency_parsers_0.splitValue(bgPart1); - for (const part of parts1) { - let partValid = false; - for (const [longhand, value] of background_export_shorthandFor) { - if (external_dependency_parsers_0.isValidPropertyValue(longhand, part)) { - partValid = true; - switch (longhand) { - case { - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property - }.property: - case { - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property - }.property: - { - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bgBox.push(parsedValue); - } - break; - } - case { - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property: - { - if (i !== values.length - 1) { - return; - } - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bg[longhand] = parsedValue; - } - break; - } - case { - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property - }.property: - { - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bgPosition.push(parsedValue); - } - break; - } - case { - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property - }.property: - { - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bgRepeat.push(parsedValue); - } - break; - } - case { - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property: - { - break; - } - default: - { - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bg[longhand] = parsedValue; - } - } - } - } - } - if (!partValid) { - return; - } - } - if (bgPart2) { - const parts2 = external_dependency_parsers_0.splitValue(bgPart2); - for (const part of parts2) { - let partValid = false; - for (const [longhand, value] of background_export_shorthandFor) { - if (external_dependency_parsers_0.isValidPropertyValue(longhand, part)) { - partValid = true; - switch (longhand) { - case { - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property - }.property: - case { - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property - }.property: - { - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bgBox.push(parsedValue); - } - break; - } - case { - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property: - { - if (i !== l - 1) { - return; - } - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bg[longhand] = parsedValue; - } - break; - } - case { - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property - }.property: - { - break; - } - case { - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property - }.property: - { - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bgRepeat.push(parsedValue); - } - break; - } - case { - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property: - { - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bgSize.push(parsedValue); - } - break; - } - default: - { - const parsedValue = value.parse(part, { - globalObject - }); - if (parsedValue) { - bg[longhand] = parsedValue; - } - } - } - } - } - if (!partValid) { - return; - } - } - } - if (bgPosition.length) { - const { - parse: parser - } = background_export_shorthandFor.get({ - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property - }.property); - const value = parser(bgPosition.join(" "), { - globalObject - }); - if (value) { - bg[{ - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property - }.property] = value; - } - } - if (bgSize.length) { - const { - parse: parser - } = background_export_shorthandFor.get({ - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property); - const value = parser(bgSize.join(" "), { - globalObject - }); - if (value) { - bg[{ - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property] = value; - } - } - if (bgRepeat.length) { - const { - parse: parser - } = background_export_shorthandFor.get({ - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property - }.property); - const value = parser(bgRepeat.join(" "), { - globalObject - }); - if (value) { - bg[{ - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property - }.property] = value; - } - } - if (bgBox.length) { - switch (bgBox.length) { - case 1: - { - const [value] = bgBox; - bg[{ - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property - }.property] = value; - bg[{ - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property - }.property] = value; - break; - } - case 2: - { - const [value1, value2] = bgBox; - bg[{ - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property - }.property] = value1; - bg[{ - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property - }.property] = value2; - break; - } - default: - { - return; - } - } - } - bgValues.push(bg); - } - return bgValues; -}; -background_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (v === "" || external_dependency_parsers_0.hasVarFunc(v)) { - for (const [key] of background_export_shorthandFor) { - this._setProperty(key, ""); - } - this._setProperty(background_local_var_property, v); - } else { - const bgValues = background_export_parse(v, { - globalObject: this._global - }); - if (!Array.isArray(bgValues)) { - return; - } - const bgMap = new Map([[{ - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property - }.property, []], [{ - parse: backgroundPosition_export_parse, - definition: backgroundPosition_export_definition, - property: backgroundPosition_export_property - }.property, []], [{ - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property, []], [{ - parse: backgroundRepeat_export_parse, - definition: backgroundRepeat_export_definition, - property: backgroundRepeat_export_property - }.property, []], [{ - parse: backgroundOrigin_export_parse, - definition: backgroundOrigin_export_definition, - property: backgroundOrigin_export_property - }.property, []], [{ - parse: backgroundClip_export_parse, - definition: backgroundClip_export_definition, - property: backgroundClip_export_property - }.property, []], [{ - parse: backgroundAttachment_export_parse, - definition: backgroundAttachment_export_definition, - property: backgroundAttachment_export_property - }.property, []], [{ - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property, []]]); - const backgrounds = []; - for (const bgValue of bgValues) { - const bg = []; - for (const [longhand, value] of Object.entries(bgValue)) { - if (value) { - const arr = bgMap.get(longhand); - arr.push(value); - bgMap.set(longhand, arr); - if (value !== background_export_initialValues.get(longhand)) { - if (longhand === { - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property) { - bg.push(`/ ${value}`); - } else { - bg.push(value); - } - } else if (longhand === { - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property - }.property) { - if (v === "none") { - bg.push(value); - } - } else if (longhand === { - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property) { - if (v === "transparent") { - bg.push(value); - } - } - } - } - backgrounds.push(bg.join(" ")); - } - const priority = this._priorities.get(background_local_var_property) ?? ""; - for (const [longhand, value] of bgMap) { - this._setProperty(longhand, value.join(", "), priority); - } - this._setProperty(background_local_var_property, backgrounds.join(", "), priority); - } - }, - get() { - const v = this.getPropertyValue(background_local_var_property); - if (external_dependency_parsers_0.hasVarFunc(v)) { - return v; - } - const bgMap = new Map(); - let l = 0; - for (const [longhand] of background_export_shorthandFor) { - const val = this.getPropertyValue(longhand); - if (longhand === { - parse: backgroundImage_export_parse, - definition: backgroundImage_export_definition, - property: backgroundImage_export_property - }.property) { - if (val === "none" && v === "none" && this.getPropertyValue({ - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property) === "transparent") { - return val; - } - if (val !== background_export_initialValues.get(longhand)) { - const imgValues = external_dependency_parsers_0.splitValue(val, { - delimiter: "," - }); - l = imgValues.length; - bgMap.set(longhand, imgValues); - } - } else if (longhand === { - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property) { - if (val !== background_export_initialValues.get(longhand) || v.includes(val)) { - bgMap.set(longhand, [val]); - } - } else if (val !== background_export_initialValues.get(longhand)) { - bgMap.set(longhand, external_dependency_parsers_0.splitValue(val, { - delimiter: "," - })); - } - } - if (l === 0) { - const bgColArr = bgMap.get({ - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property); - const background = bgColArr ? bgColArr[0] : null; - if (background) { - return background; - } - return ""; - } - const bgValues = []; - for (let i = 0; i < l; i++) { - bgValues[i] = []; - } - for (const [longhand, values] of bgMap) { - for (let i = 0; i < l; i++) { - switch (longhand) { - case { - parse: backgroundColor_export_parse, - definition: backgroundColor_export_definition, - property: backgroundColor_export_property - }.property: - { - if (i === l - 1) { - const value = values[0]; - if (external_dependency_parsers_0.hasVarFunc(value)) { - return ""; - } - if (value && value !== background_export_initialValues.get(longhand)) { - const bgValue = bgValues[i]; - bgValue.push(value); - } - } - break; - } - case { - parse: backgroundSize_export_parse, - definition: backgroundSize_export_definition, - property: backgroundSize_export_property - }.property: - { - const value = values[i]; - if (external_dependency_parsers_0.hasVarFunc(value)) { - return ""; - } - if (value && value !== background_export_initialValues.get(longhand)) { - const bgValue = bgValues[i]; - bgValue.push(`/ ${value}`); - } - break; - } - default: - { - const value = values[i]; - if (external_dependency_parsers_0.hasVarFunc(value)) { - return ""; - } - if (value && value !== background_export_initialValues.get(longhand)) { - const bgValue = bgValues[i]; - bgValue.push(value); - } - } - } - } - } - const backgrounds = []; - for (const bgValue of bgValues) { - backgrounds.push(bgValue.join(" ")); - } - return backgrounds.join(", "); - }, - enumerable: true, - configurable: true -}; -background_export_property = background_local_var_property; -var borderTopWidth_export_parse, borderTopWidth_export_definition, borderTopWidth_export_property; -const borderTopWidth_local_var_property = "border-top-width"; -const borderTopWidth_local_var_lineShorthand = "border-width"; -const borderTopWidth_local_var_positionShorthand = "border-top"; -const borderTopWidth_local_var_shorthand = "border"; -borderTopWidth_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderTopWidth_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -borderTopWidth_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderTopWidth_local_var_property, v, ""); - } else { - const val = borderTopWidth_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderTopWidth_local_var_shorthand); - const linePriority = this._priorities.get(borderTopWidth_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderTopWidth_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderTopWidth_local_var_property) ? this._priorities.get(borderTopWidth_local_var_property) : ""; - this._borderSetter(borderTopWidth_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderTopWidth_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderTopWidth_export_property = borderTopWidth_local_var_property; -var borderRightWidth_export_parse, borderRightWidth_export_definition, borderRightWidth_export_property; -const borderRightWidth_local_var_property = "border-right-width"; -const borderRightWidth_local_var_lineShorthand = "border-width"; -const borderRightWidth_local_var_positionShorthand = "border-right"; -const borderRightWidth_local_var_shorthand = "border"; -borderRightWidth_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderRightWidth_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -borderRightWidth_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderRightWidth_local_var_property, v, ""); - } else { - const val = borderRightWidth_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderRightWidth_local_var_shorthand); - const linePriority = this._priorities.get(borderRightWidth_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderRightWidth_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderRightWidth_local_var_property) ? this._priorities.get(borderRightWidth_local_var_property) : ""; - this._borderSetter(borderRightWidth_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderRightWidth_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderRightWidth_export_property = borderRightWidth_local_var_property; -var borderBottomWidth_export_parse, borderBottomWidth_export_definition, borderBottomWidth_export_property; -const borderBottomWidth_local_var_property = "border-bottom-width"; -const borderBottomWidth_local_var_lineShorthand = "border-width"; -const borderBottomWidth_local_var_positionShorthand = "border-bottom"; -const borderBottomWidth_local_var_shorthand = "border"; -borderBottomWidth_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderBottomWidth_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -borderBottomWidth_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderBottomWidth_local_var_property, v, ""); - } else { - const val = borderBottomWidth_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderBottomWidth_local_var_shorthand); - const linePriority = this._priorities.get(borderBottomWidth_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderBottomWidth_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderBottomWidth_local_var_property) ? this._priorities.get(borderBottomWidth_local_var_property) : ""; - this._borderSetter(borderBottomWidth_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderBottomWidth_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderBottomWidth_export_property = borderBottomWidth_local_var_property; -var borderLeftWidth_export_parse, borderLeftWidth_export_definition, borderLeftWidth_export_property; -const borderLeftWidth_local_var_property = "border-left-width"; -const borderLeftWidth_local_var_lineShorthand = "border-width"; -const borderLeftWidth_local_var_positionShorthand = "border-left"; -const borderLeftWidth_local_var_shorthand = "border"; -borderLeftWidth_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderLeftWidth_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -borderLeftWidth_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderLeftWidth_local_var_property, v, ""); - } else { - const val = borderLeftWidth_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderLeftWidth_local_var_shorthand); - const linePriority = this._priorities.get(borderLeftWidth_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderLeftWidth_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderLeftWidth_local_var_property) ? this._priorities.get(borderLeftWidth_local_var_property) : ""; - this._borderSetter(borderLeftWidth_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderLeftWidth_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderLeftWidth_export_property = borderLeftWidth_local_var_property; -var borderWidth_export_shorthandFor, borderWidth_export_parse, borderWidth_export_definition, borderWidth_export_property; -const borderWidth_local_var_property = "border-width"; -const borderWidth_local_var_shorthand = "border"; -borderWidth_export_shorthandFor = new Map([[{ - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property -}.property, { - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property -}], [{ - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property -}.property, { - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property -}], [{ - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property -}.property, { - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property -}], [{ - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property -}.property, { - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property -}]]); -borderWidth_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.parsePropertyValue(borderWidth_local_var_property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = external_dependency_parsers_0.resolveNumericValue([value], { - length: values.length, - type: "length" - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - switch (parsedValues.length) { - case 1: - { - return parsedValues; - } - case 2: - { - const [val1, val2] = parsedValues; - if (val1 === val2) { - return [val1]; - } - return parsedValues; - } - case 3: - { - const [val1, val2, val3] = parsedValues; - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return parsedValues; - } - case 4: - { - const [val1, val2, val3, val4] = parsedValues; - if (val2 === val4) { - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return [val1, val2, val3]; - } - return parsedValues; - } - default: - } - } -}; -borderWidth_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderWidth_local_var_property, v, ""); - } else { - const val = borderWidth_export_parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = !this._priorities.get(borderWidth_local_var_shorthand) && this._priorities.has(borderWidth_local_var_property) ? this._priorities.get(borderWidth_local_var_property) : ""; - this._borderSetter(borderWidth_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderWidth_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderWidth_export_property = borderWidth_local_var_property; -var borderTopStyle_export_parse, borderTopStyle_export_definition, borderTopStyle_export_property; -const borderTopStyle_local_var_property = "border-top-style"; -const borderTopStyle_local_var_lineShorthand = "border-style"; -const borderTopStyle_local_var_positionShorthand = "border-top"; -const borderTopStyle_local_var_shorthand = "border"; -borderTopStyle_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderTopStyle_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; -borderTopStyle_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderTopStyle_local_var_property, v, ""); - } else { - const val = borderTopStyle_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderTopStyle_local_var_shorthand); - const linePriority = this._priorities.get(borderTopStyle_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderTopStyle_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderTopStyle_local_var_property) ? this._priorities.get(borderTopStyle_local_var_property) : ""; - this._borderSetter(borderTopStyle_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderTopStyle_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderTopStyle_export_property = borderTopStyle_local_var_property; -var borderRightStyle_export_parse, borderRightStyle_export_definition, borderRightStyle_export_property; -const borderRightStyle_local_var_property = "border-right-style"; -const borderRightStyle_local_var_lineShorthand = "border-style"; -const borderRightStyle_local_var_positionShorthand = "border-right"; -const borderRightStyle_local_var_shorthand = "border"; -borderRightStyle_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderRightStyle_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; -borderRightStyle_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderRightStyle_local_var_property, v, ""); - } else { - const val = borderRightStyle_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderRightStyle_local_var_shorthand); - const linePriority = this._priorities.get(borderRightStyle_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderRightStyle_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderRightStyle_local_var_property) ? this._priorities.get(borderRightStyle_local_var_property) : ""; - this._borderSetter(borderRightStyle_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderRightStyle_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderRightStyle_export_property = borderRightStyle_local_var_property; -var borderBottomStyle_export_parse, borderBottomStyle_export_definition, borderBottomStyle_export_property; -const borderBottomStyle_local_var_property = "border-bottom-style"; -const borderBottomStyle_local_var_lineShorthand = "border-style"; -const borderBottomStyle_local_var_positionShorthand = "border-bottom"; -const borderBottomStyle_local_var_shorthand = "border"; -borderBottomStyle_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderBottomStyle_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; -borderBottomStyle_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderBottomStyle_local_var_property, v, ""); - } else { - const val = borderBottomStyle_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderBottomStyle_local_var_shorthand); - const linePriority = this._priorities.get(borderBottomStyle_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderBottomStyle_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderBottomStyle_local_var_property) ? this._priorities.get(borderBottomStyle_local_var_property) : ""; - this._borderSetter(borderBottomStyle_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderBottomStyle_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderBottomStyle_export_property = borderBottomStyle_local_var_property; -var borderLeftStyle_export_parse, borderLeftStyle_export_definition, borderLeftStyle_export_property; -const borderLeftStyle_local_var_property = "border-left-style"; -const borderLeftStyle_local_var_lineShorthand = "border-style"; -const borderLeftStyle_local_var_positionShorthand = "border-left"; -const borderLeftStyle_local_var_shorthand = "border"; -borderLeftStyle_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderLeftStyle_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; -borderLeftStyle_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderLeftStyle_local_var_property, v, ""); - } else { - const val = borderLeftStyle_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderLeftStyle_local_var_shorthand); - const linePriority = this._priorities.get(borderLeftStyle_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderLeftStyle_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderLeftStyle_local_var_property) ? this._priorities.get(borderLeftStyle_local_var_property) : ""; - this._borderSetter(borderLeftStyle_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderLeftStyle_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderLeftStyle_export_property = borderLeftStyle_local_var_property; -var borderStyle_export_shorthandFor, borderStyle_export_parse, borderStyle_export_definition, borderStyle_export_property; -const borderStyle_local_var_property = "border-style"; -const borderStyle_local_var_shorthand = "border"; -borderStyle_export_shorthandFor = new Map([[{ - parse: borderTopStyle_export_parse, - definition: borderTopStyle_export_definition, - property: borderTopStyle_export_property -}.property, { - parse: borderTopStyle_export_parse, - definition: borderTopStyle_export_definition, - property: borderTopStyle_export_property -}], [{ - parse: borderRightStyle_export_parse, - definition: borderRightStyle_export_definition, - property: borderRightStyle_export_property -}.property, { - parse: borderRightStyle_export_parse, - definition: borderRightStyle_export_definition, - property: borderRightStyle_export_property -}], [{ - parse: borderBottomStyle_export_parse, - definition: borderBottomStyle_export_definition, - property: borderBottomStyle_export_property -}.property, { - parse: borderBottomStyle_export_parse, - definition: borderBottomStyle_export_definition, - property: borderBottomStyle_export_property -}], [{ - parse: borderLeftStyle_export_parse, - definition: borderLeftStyle_export_definition, - property: borderLeftStyle_export_property -}.property, { - parse: borderLeftStyle_export_parse, - definition: borderLeftStyle_export_definition, - property: borderLeftStyle_export_property -}]]); -borderStyle_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.parsePropertyValue(borderStyle_local_var_property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = external_dependency_parsers_0.resolveKeywordValue([value], { - length: values.length - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - switch (parsedValues.length) { - case 1: - { - return parsedValues; - } - case 2: - { - const [val1, val2] = parsedValues; - if (val1 === val2) { - return [val1]; - } - return parsedValues; - } - case 3: - { - const [val1, val2, val3] = parsedValues; - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return parsedValues; - } - case 4: - { - const [val1, val2, val3, val4] = parsedValues; - if (val2 === val4) { - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return [val1, val2, val3]; - } - return parsedValues; - } - default: - } - } -}; -borderStyle_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderStyle_local_var_property, v, ""); - } else { - const val = borderStyle_export_parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = !this._priorities.get(borderStyle_local_var_shorthand) && this._priorities.has(borderStyle_local_var_property) ? this._priorities.get(borderStyle_local_var_property) : ""; - this._borderSetter(borderStyle_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderStyle_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderStyle_export_property = borderStyle_local_var_property; -var borderTopColor_export_parse, borderTopColor_export_definition, borderTopColor_export_property; -const borderTopColor_local_var_property = "border-top-color"; -const borderTopColor_local_var_lineShorthand = "border-color"; -const borderTopColor_local_var_positionShorthand = "border-top"; -const borderTopColor_local_var_shorthand = "border"; -borderTopColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderTopColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -borderTopColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderTopColor_local_var_property, v, ""); - } else { - const val = borderTopColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderTopColor_local_var_shorthand); - const linePriority = this._priorities.get(borderTopColor_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderTopColor_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderTopColor_local_var_property) ? this._priorities.get(borderTopColor_local_var_property) : ""; - this._borderSetter(borderTopColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderTopColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderTopColor_export_property = borderTopColor_local_var_property; -var borderRightColor_export_parse, borderRightColor_export_definition, borderRightColor_export_property; -const borderRightColor_local_var_property = "border-right-color"; -const borderRightColor_local_var_lineShorthand = "border-color"; -const borderRightColor_local_var_positionShorthand = "border-right"; -const borderRightColor_local_var_shorthand = "border"; -borderRightColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderRightColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -borderRightColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderRightColor_local_var_property, v, ""); - } else { - const val = borderRightColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderRightColor_local_var_shorthand); - const linePriority = this._priorities.get(borderRightColor_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderRightColor_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderRightColor_local_var_property) ? this._priorities.get(borderRightColor_local_var_property) : ""; - this._borderSetter(borderRightColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderRightColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderRightColor_export_property = borderRightColor_local_var_property; -var borderBottomColor_export_parse, borderBottomColor_export_definition, borderBottomColor_export_property; -const borderBottomColor_local_var_property = "border-bottom-color"; -const borderBottomColor_local_var_lineShorthand = "border-color"; -const borderBottomColor_local_var_positionShorthand = "border-bottom"; -const borderBottomColor_local_var_shorthand = "border"; -borderBottomColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderBottomColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -borderBottomColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderBottomColor_local_var_property, v, ""); - } else { - const val = borderBottomColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderBottomColor_local_var_shorthand); - const linePriority = this._priorities.get(borderBottomColor_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderBottomColor_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderBottomColor_local_var_property) ? this._priorities.get(borderBottomColor_local_var_property) : ""; - this._borderSetter(borderBottomColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderBottomColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderBottomColor_export_property = borderBottomColor_local_var_property; -var borderLeftColor_export_parse, borderLeftColor_export_definition, borderLeftColor_export_property; -const borderLeftColor_local_var_property = "border-left-color"; -const borderLeftColor_local_var_lineShorthand = "border-color"; -const borderLeftColor_local_var_positionShorthand = "border-left"; -const borderLeftColor_local_var_shorthand = "border"; -borderLeftColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderLeftColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -borderLeftColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderLeftColor_local_var_property, v, ""); - } else { - const val = borderLeftColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(borderLeftColor_local_var_shorthand); - const linePriority = this._priorities.get(borderLeftColor_local_var_lineShorthand); - const positionPriority = this._priorities.get(borderLeftColor_local_var_positionShorthand); - const priority = !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(borderLeftColor_local_var_property) ? this._priorities.get(borderLeftColor_local_var_property) : ""; - this._borderSetter(borderLeftColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderLeftColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderLeftColor_export_property = borderLeftColor_local_var_property; -var borderColor_export_shorthandFor, borderColor_export_parse, borderColor_export_definition, borderColor_export_property; -const borderColor_local_var_property = "border-color"; -const borderColor_local_var_shorthand = "border"; -borderColor_export_shorthandFor = new Map([[{ - parse: borderTopColor_export_parse, - definition: borderTopColor_export_definition, - property: borderTopColor_export_property -}.property, { - parse: borderTopColor_export_parse, - definition: borderTopColor_export_definition, - property: borderTopColor_export_property -}], [{ - parse: borderRightColor_export_parse, - definition: borderRightColor_export_definition, - property: borderRightColor_export_property -}.property, { - parse: borderRightColor_export_parse, - definition: borderRightColor_export_definition, - property: borderRightColor_export_property -}], [{ - parse: borderBottomColor_export_parse, - definition: borderBottomColor_export_definition, - property: borderBottomColor_export_property -}.property, { - parse: borderBottomColor_export_parse, - definition: borderBottomColor_export_definition, - property: borderBottomColor_export_property -}], [{ - parse: borderLeftColor_export_parse, - definition: borderLeftColor_export_definition, - property: borderLeftColor_export_property -}.property, { - parse: borderLeftColor_export_parse, - definition: borderLeftColor_export_definition, - property: borderLeftColor_export_property -}]]); -borderColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.parsePropertyValue(borderColor_local_var_property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = external_dependency_parsers_0.resolveColorValue([value], { - length: values.length - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - switch (parsedValues.length) { - case 1: - { - return parsedValues; - } - case 2: - { - const [val1, val2] = parsedValues; - if (val1 === val2) { - return [val1]; - } - return parsedValues; - } - case 3: - { - const [val1, val2, val3] = parsedValues; - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return parsedValues; - } - case 4: - { - const [val1, val2, val3, val4] = parsedValues; - if (val2 === val4) { - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return [val1, val2, val3]; - } - return parsedValues; - } - default: - } - } -}; -borderColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderColor_local_var_property, v, ""); - } else { - const val = borderColor_export_parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = !this._priorities.get(borderColor_local_var_shorthand) && this._priorities.has(borderColor_local_var_property) ? this._priorities.get(borderColor_local_var_property) : ""; - this._borderSetter(borderColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderColor_export_property = borderColor_local_var_property; -var borderTop_export_initialValues, borderTop_export_shorthandFor, borderTop_export_parse, borderTop_export_definition, borderTop_export_property; -const borderTop_local_var_property = "border-top"; -const borderTop_local_var_shorthand = "border"; -const borderTop_local_var_subProps = { - width: { - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property - }.property, - style: { - parse: borderTopStyle_export_parse, - definition: borderTopStyle_export_definition, - property: borderTopStyle_export_property - }.property, - color: { - parse: borderTopColor_export_parse, - definition: borderTopColor_export_definition, - property: borderTopColor_export_property - }.property -}; -borderTop_export_initialValues = new Map([[{ - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property -}.property, "medium"], [{ - parse: borderTopStyle_export_parse, - definition: borderTopStyle_export_definition, - property: borderTopStyle_export_property -}.property, "none"], [{ - parse: borderTopColor_export_parse, - definition: borderTopColor_export_definition, - property: borderTopColor_export_property -}.property, "currentcolor"]]); -borderTop_export_shorthandFor = new Map([[{ - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property -}.property, { - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property -}], [{ - parse: borderTopStyle_export_parse, - definition: borderTopStyle_export_definition, - property: borderTopStyle_export_property -}.property, { - parse: borderTopStyle_export_parse, - definition: borderTopStyle_export_definition, - property: borderTopStyle_export_property -}], [{ - parse: borderTopColor_export_parse, - definition: borderTopColor_export_definition, - property: borderTopColor_export_property -}.property, { - parse: borderTopColor_export_parse, - definition: borderTopColor_export_definition, - property: borderTopColor_export_property -}]]); -borderTop_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(borderTop_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveBorderShorthandValue(value, borderTop_local_var_subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = borderTop_export_shorthandFor.keys(); - const obj = { - [{ - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property - }.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== borderTop_export_initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[{ - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property - }.property] && obj[{ - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property - }.property] === "medium") { - delete obj[{ - parse: borderTopWidth_export_parse, - definition: borderTopWidth_export_definition, - property: borderTopWidth_export_property - }.property]; - } - } - } - } - return obj; - } -}; -borderTop_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderTop_local_var_property, v, ""); - } else { - const val = borderTop_export_parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = !this._priorities.get(borderTop_local_var_shorthand) && this._priorities.has(borderTop_local_var_property) ? this._priorities.get(borderTop_local_var_property) : ""; - this._borderSetter(borderTop_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderTop_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderTop_export_property = borderTop_local_var_property; -var borderRight_export_initialValues, borderRight_export_shorthandFor, borderRight_export_parse, borderRight_export_definition, borderRight_export_property; -const borderRight_local_var_property = "border-right"; -const borderRight_local_var_shorthand = "border"; -const borderRight_local_var_subProps = { - width: { - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property - }.property, - style: { - parse: borderRightStyle_export_parse, - definition: borderRightStyle_export_definition, - property: borderRightStyle_export_property - }.property, - color: { - parse: borderRightColor_export_parse, - definition: borderRightColor_export_definition, - property: borderRightColor_export_property - }.property -}; -borderRight_export_initialValues = new Map([[{ - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property -}.property, "medium"], [{ - parse: borderRightStyle_export_parse, - definition: borderRightStyle_export_definition, - property: borderRightStyle_export_property -}.property, "none"], [{ - parse: borderRightColor_export_parse, - definition: borderRightColor_export_definition, - property: borderRightColor_export_property -}.property, "currentcolor"]]); -borderRight_export_shorthandFor = new Map([[{ - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property -}.property, { - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property -}], [{ - parse: borderRightStyle_export_parse, - definition: borderRightStyle_export_definition, - property: borderRightStyle_export_property -}.property, { - parse: borderRightStyle_export_parse, - definition: borderRightStyle_export_definition, - property: borderRightStyle_export_property -}], [{ - parse: borderRightColor_export_parse, - definition: borderRightColor_export_definition, - property: borderRightColor_export_property -}.property, { - parse: borderRightColor_export_parse, - definition: borderRightColor_export_definition, - property: borderRightColor_export_property -}]]); -borderRight_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(borderRight_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveBorderShorthandValue(value, borderRight_local_var_subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = borderRight_export_shorthandFor.keys(); - const obj = { - [{ - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property - }.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== borderRight_export_initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[{ - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property - }.property] && obj[{ - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property - }.property] === "medium") { - delete obj[{ - parse: borderRightWidth_export_parse, - definition: borderRightWidth_export_definition, - property: borderRightWidth_export_property - }.property]; - } - } - } - } - return obj; - } -}; -borderRight_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderRight_local_var_property, v, ""); - } else { - const val = borderRight_export_parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = !this._priorities.get(borderRight_local_var_shorthand) && this._priorities.has(borderRight_local_var_property) ? this._priorities.get(borderRight_local_var_property) : ""; - this._borderSetter(borderRight_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderRight_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderRight_export_property = borderRight_local_var_property; -var borderBottom_export_initialValues, borderBottom_export_shorthandFor, borderBottom_export_parse, borderBottom_export_definition, borderBottom_export_property; -const borderBottom_local_var_property = "border-bottom"; -const borderBottom_local_var_shorthand = "border"; -const borderBottom_local_var_subProps = { - width: { - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property - }.property, - style: { - parse: borderBottomStyle_export_parse, - definition: borderBottomStyle_export_definition, - property: borderBottomStyle_export_property - }.property, - color: { - parse: borderBottomColor_export_parse, - definition: borderBottomColor_export_definition, - property: borderBottomColor_export_property - }.property -}; -borderBottom_export_initialValues = new Map([[{ - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property -}.property, "medium"], [{ - parse: borderBottomStyle_export_parse, - definition: borderBottomStyle_export_definition, - property: borderBottomStyle_export_property -}.property, "none"], [{ - parse: borderBottomColor_export_parse, - definition: borderBottomColor_export_definition, - property: borderBottomColor_export_property -}.property, "currentcolor"]]); -borderBottom_export_shorthandFor = new Map([[{ - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property -}.property, { - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property -}], [{ - parse: borderBottomStyle_export_parse, - definition: borderBottomStyle_export_definition, - property: borderBottomStyle_export_property -}.property, { - parse: borderBottomStyle_export_parse, - definition: borderBottomStyle_export_definition, - property: borderBottomStyle_export_property -}], [{ - parse: borderBottomColor_export_parse, - definition: borderBottomColor_export_definition, - property: borderBottomColor_export_property -}.property, { - parse: borderBottomColor_export_parse, - definition: borderBottomColor_export_definition, - property: borderBottomColor_export_property -}]]); -borderBottom_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(borderBottom_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveBorderShorthandValue(value, borderBottom_local_var_subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = borderBottom_export_shorthandFor.keys(); - const obj = { - [{ - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property - }.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== borderBottom_export_initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[{ - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property - }.property] && obj[{ - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property - }.property] === "medium") { - delete obj[{ - parse: borderBottomWidth_export_parse, - definition: borderBottomWidth_export_definition, - property: borderBottomWidth_export_property - }.property]; - } - } - } - } - return obj; - } -}; -borderBottom_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderBottom_local_var_property, v, ""); - } else { - const val = borderBottom_export_parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = !this._priorities.get(borderBottom_local_var_shorthand) && this._priorities.has(borderBottom_local_var_property) ? this._priorities.get(borderBottom_local_var_property) : ""; - this._borderSetter(borderBottom_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderBottom_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderBottom_export_property = borderBottom_local_var_property; -var borderLeft_export_initialValues, borderLeft_export_shorthandFor, borderLeft_export_parse, borderLeft_export_definition, borderLeft_export_property; -const borderLeft_local_var_property = "border-left"; -const borderLeft_local_var_shorthand = "border"; -const borderLeft_local_var_subProps = { - width: { - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property - }.property, - style: { - parse: borderLeftStyle_export_parse, - definition: borderLeftStyle_export_definition, - property: borderLeftStyle_export_property - }.property, - color: { - parse: borderLeftColor_export_parse, - definition: borderLeftColor_export_definition, - property: borderLeftColor_export_property - }.property -}; -borderLeft_export_initialValues = new Map([[{ - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property -}.property, "medium"], [{ - parse: borderLeftStyle_export_parse, - definition: borderLeftStyle_export_definition, - property: borderLeftStyle_export_property -}.property, "none"], [{ - parse: borderLeftColor_export_parse, - definition: borderLeftColor_export_definition, - property: borderLeftColor_export_property -}.property, "currentcolor"]]); -borderLeft_export_shorthandFor = new Map([[{ - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property -}.property, { - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property -}], [{ - parse: borderLeftStyle_export_parse, - definition: borderLeftStyle_export_definition, - property: borderLeftStyle_export_property -}.property, { - parse: borderLeftStyle_export_parse, - definition: borderLeftStyle_export_definition, - property: borderLeftStyle_export_property -}], [{ - parse: borderLeftColor_export_parse, - definition: borderLeftColor_export_definition, - property: borderLeftColor_export_property -}.property, { - parse: borderLeftColor_export_parse, - definition: borderLeftColor_export_definition, - property: borderLeftColor_export_property -}]]); -borderLeft_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(borderLeft_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveBorderShorthandValue(value, borderLeft_local_var_subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = borderLeft_export_shorthandFor.keys(); - const obj = { - [{ - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property - }.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== borderLeft_export_initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[{ - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property - }.property] && obj[{ - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property - }.property] === "medium") { - delete obj[{ - parse: borderLeftWidth_export_parse, - definition: borderLeftWidth_export_definition, - property: borderLeftWidth_export_property - }.property]; - } - } - } - } - return obj; - } -}; -borderLeft_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(borderLeft_local_var_property, v, ""); - } else { - const val = borderLeft_export_parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = !this._priorities.get(borderLeft_local_var_shorthand) && this._priorities.has(borderLeft_local_var_property) ? this._priorities.get(borderLeft_local_var_property) : ""; - this._borderSetter(borderLeft_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderLeft_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderLeft_export_property = borderLeft_local_var_property; -var border_export_initialValues, border_export_shorthandFor, border_export_positionShorthandFor, border_export_parse, border_export_definition, border_export_property; -const border_local_var_property = "border"; -const border_local_var_subProps = { - width: { - shorthandFor: borderWidth_export_shorthandFor, - parse: borderWidth_export_parse, - definition: borderWidth_export_definition, - property: borderWidth_export_property - }.property, - style: { - shorthandFor: borderStyle_export_shorthandFor, - parse: borderStyle_export_parse, - definition: borderStyle_export_definition, - property: borderStyle_export_property - }.property, - color: { - shorthandFor: borderColor_export_shorthandFor, - parse: borderColor_export_parse, - definition: borderColor_export_definition, - property: borderColor_export_property - }.property -}; -border_export_initialValues = new Map([[{ - shorthandFor: borderWidth_export_shorthandFor, - parse: borderWidth_export_parse, - definition: borderWidth_export_definition, - property: borderWidth_export_property -}.property, "medium"], [{ - shorthandFor: borderStyle_export_shorthandFor, - parse: borderStyle_export_parse, - definition: borderStyle_export_definition, - property: borderStyle_export_property -}.property, "none"], [{ - shorthandFor: borderColor_export_shorthandFor, - parse: borderColor_export_parse, - definition: borderColor_export_definition, - property: borderColor_export_property -}.property, "currentcolor"]]); -border_export_shorthandFor = new Map([[{ - shorthandFor: borderWidth_export_shorthandFor, - parse: borderWidth_export_parse, - definition: borderWidth_export_definition, - property: borderWidth_export_property -}.property, { - shorthandFor: borderWidth_export_shorthandFor, - parse: borderWidth_export_parse, - definition: borderWidth_export_definition, - property: borderWidth_export_property -}], [{ - shorthandFor: borderStyle_export_shorthandFor, - parse: borderStyle_export_parse, - definition: borderStyle_export_definition, - property: borderStyle_export_property -}.property, { - shorthandFor: borderStyle_export_shorthandFor, - parse: borderStyle_export_parse, - definition: borderStyle_export_definition, - property: borderStyle_export_property -}], [{ - shorthandFor: borderColor_export_shorthandFor, - parse: borderColor_export_parse, - definition: borderColor_export_definition, - property: borderColor_export_property -}.property, { - shorthandFor: borderColor_export_shorthandFor, - parse: borderColor_export_parse, - definition: borderColor_export_definition, - property: borderColor_export_property -}]]); -border_export_positionShorthandFor = new Map([[{ - initialValues: borderTop_export_initialValues, - shorthandFor: borderTop_export_shorthandFor, - parse: borderTop_export_parse, - definition: borderTop_export_definition, - property: borderTop_export_property -}.property, { - initialValues: borderTop_export_initialValues, - shorthandFor: borderTop_export_shorthandFor, - parse: borderTop_export_parse, - definition: borderTop_export_definition, - property: borderTop_export_property -}], [{ - initialValues: borderRight_export_initialValues, - shorthandFor: borderRight_export_shorthandFor, - parse: borderRight_export_parse, - definition: borderRight_export_definition, - property: borderRight_export_property -}.property, { - initialValues: borderRight_export_initialValues, - shorthandFor: borderRight_export_shorthandFor, - parse: borderRight_export_parse, - definition: borderRight_export_definition, - property: borderRight_export_property -}], [{ - initialValues: borderBottom_export_initialValues, - shorthandFor: borderBottom_export_shorthandFor, - parse: borderBottom_export_parse, - definition: borderBottom_export_definition, - property: borderBottom_export_property -}.property, { - initialValues: borderBottom_export_initialValues, - shorthandFor: borderBottom_export_shorthandFor, - parse: borderBottom_export_parse, - definition: borderBottom_export_definition, - property: borderBottom_export_property -}], [{ - initialValues: borderLeft_export_initialValues, - shorthandFor: borderLeft_export_shorthandFor, - parse: borderLeft_export_parse, - definition: borderLeft_export_definition, - property: borderLeft_export_property -}.property, { - initialValues: borderLeft_export_initialValues, - shorthandFor: borderLeft_export_shorthandFor, - parse: borderLeft_export_parse, - definition: borderLeft_export_definition, - property: borderLeft_export_property -}]]); -border_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "" || external_dependency_parsers_0.hasVarFunc(v)) { - return v; - } - const values = external_dependency_parsers_0.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(border_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveBorderShorthandValue(value, border_local_var_subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = border_export_shorthandFor.keys(); - const obj = { - [{ - shorthandFor: borderWidth_export_shorthandFor, - parse: borderWidth_export_parse, - definition: borderWidth_export_definition, - property: borderWidth_export_property - }.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== border_export_initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[{ - shorthandFor: borderWidth_export_shorthandFor, - parse: borderWidth_export_parse, - definition: borderWidth_export_definition, - property: borderWidth_export_property - }.property] && obj[{ - shorthandFor: borderWidth_export_shorthandFor, - parse: borderWidth_export_parse, - definition: borderWidth_export_definition, - property: borderWidth_export_property - }.property] === "medium") { - delete obj[{ - shorthandFor: borderWidth_export_shorthandFor, - parse: borderWidth_export_parse, - definition: borderWidth_export_definition, - property: borderWidth_export_property - }.property]; - } - } - } - } - return obj; - } -}; -border_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._borderSetter(border_local_var_property, v, ""); - } else { - const val = border_export_parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = this._priorities.get(border_local_var_property) ?? ""; - this._borderSetter(border_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(border_local_var_property); - }, - enumerable: true, - configurable: true -}; -border_export_property = border_local_var_property; -var borderCollapse_export_parse, borderCollapse_export_definition, borderCollapse_export_property; -const borderCollapse_local_var_property = "border-collapse"; -borderCollapse_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderCollapse_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; -borderCollapse_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(borderCollapse_local_var_property, v); - } else { - const val = borderCollapse_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(borderCollapse_local_var_property) ?? ""; - this._setProperty(borderCollapse_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderCollapse_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderCollapse_export_property = borderCollapse_local_var_property; -var borderSpacing_export_parse, borderSpacing_export_definition, borderSpacing_export_property; -const borderSpacing_local_var_property = "border-spacing"; -borderSpacing_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(borderSpacing_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - switch (value.length) { - case 1: - { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } - case 2: - { - const [part1, part2] = value; - const val1 = external_dependency_parsers_0.resolveNumericValue([part1], { - type: "length" - }); - const val2 = external_dependency_parsers_0.resolveNumericValue([part2], { - type: "length" - }); - if (val1 && val2) { - return `${val1} ${val2}`; - } - break; - } - default: - } - } else if (typeof value === "string") { - return value; - } -}; -borderSpacing_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(borderSpacing_local_var_property, v); - } else { - const val = borderSpacing_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(borderSpacing_local_var_property) ?? ""; - this._setProperty(borderSpacing_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(borderSpacing_local_var_property); - }, - enumerable: true, - configurable: true -}; -borderSpacing_export_property = borderSpacing_local_var_property; -var bottom_export_parse, bottom_export_definition, bottom_export_property; -const bottom_local_var_property = "bottom"; -bottom_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(bottom_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -bottom_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(bottom_local_var_property, v); - } else { - const val = bottom_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(bottom_local_var_property) ?? ""; - this._setProperty(bottom_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(bottom_local_var_property); - }, - enumerable: true, - configurable: true -}; -bottom_export_property = bottom_local_var_property; -var clear_export_parse, clear_export_definition, clear_export_property; -const clear_local_var_property = "clear"; -clear_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(clear_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; -clear_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(clear_local_var_property, v); - } else { - const val = clear_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(clear_local_var_property) ?? ""; - this._setProperty(clear_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(clear_local_var_property); - }, - enumerable: true, - configurable: true -}; -clear_export_property = clear_local_var_property; -var clip_export_parse, clip_export_definition, clip_export_property; -// deprecated -// @see https://drafts.csswg.org/css-masking-1/#clip-property - -const clip_local_var_property = "clip"; -clip_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const { - AST_TYPES - } = external_dependency_parsers_0; - const value = external_dependency_parsers_0.parsePropertyValue(clip_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const [{ - name, - type, - value: itemValue - }] = value; - switch (type) { - case AST_TYPES.FUNCTION: - { - const values = external_dependency_parsers_0.splitValue(itemValue, { - delimiter: "," - }); - const parsedValues = []; - for (const item of values) { - const parsedValue = external_dependency_parsers_0.parseCSS(item, { - context: "value" - }, true); - const val = external_dependency_parsers_0.resolveNumericValue(parsedValue.children, { - type: "length" - }); - if (val) { - parsedValues.push(val); - } else { - return; - } - } - return `${name}(${parsedValues.join(", ")})`; - } - case AST_TYPES.GLOBAL_KEYWORD: - case AST_TYPES.IDENTIFIER: - { - return name; - } - default: - } - } else if (typeof value === "string") { - return value; - } -}; -clip_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(clip_local_var_property, v); - } else { - const val = clip_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(clip_local_var_property) ?? ""; - this._setProperty(clip_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(clip_local_var_property); - }, - enumerable: true, - configurable: true -}; -clip_export_property = clip_local_var_property; -var color_export_parse, color_export_definition, color_export_property; -const color_local_var_property = "color"; -color_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(color_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -color_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(color_local_var_property, v); - } else { - const val = color_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(color_local_var_property) ?? ""; - this._setProperty(color_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(color_local_var_property); - }, - enumerable: true, - configurable: true -}; -color_export_property = color_local_var_property; -var display_export_parse, display_export_definition, display_export_property; -const display_local_var_property = "display"; - -/* keywords */ -const display_local_var_displayOutside = ["block", "inline", "run-in"]; -const display_local_var_displayFlow = ["flow", "flow-root"]; -display_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const { - AST_TYPES - } = external_dependency_parsers_0; - const value = external_dependency_parsers_0.parsePropertyValue(display_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - switch (value.length) { - case 1: - { - const [{ - name, - type - }] = value; - switch (type) { - case AST_TYPES.GLOBAL_KEYWORD: - { - return name; - } - case AST_TYPES.IDENTIFIER: - { - if (name === "flow") { - return "block"; - } - return name; - } - default: - } - break; - } - case 2: - { - const [part1, part2] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name; - if (val1 && val2) { - let outerValue = ""; - let innerValue = ""; - if (val1 === "list-item") { - outerValue = val2; - innerValue = val1; - } else if (val2 === "list-item") { - outerValue = val1; - innerValue = val2; - } else if (display_local_var_displayOutside.includes(val1)) { - outerValue = val1; - innerValue = val2; - } else if (display_local_var_displayOutside.includes(val2)) { - outerValue = val2; - innerValue = val1; - } - if (innerValue === "list-item") { - switch (outerValue) { - case "block": - case "flow": - { - return innerValue; - } - case "flow-root": - case "inline": - case "run-in": - { - return `${outerValue} ${innerValue}`; - } - default: - } - } else if (outerValue === "block") { - switch (innerValue) { - case "flow": - { - return outerValue; - } - case "flow-root": - case "flex": - case "grid": - case "table": - { - return innerValue; - } - case "ruby": - { - return `${outerValue} ${innerValue}`; - } - default: - } - } else if (outerValue === "inline") { - switch (innerValue) { - case "flow": - { - return outerValue; - } - case "flow-root": - { - return `${outerValue}-block`; - } - case "flex": - case "grid": - case "table": - { - return `${outerValue}-${innerValue}`; - } - case "ruby": - { - return innerValue; - } - default: - } - } else if (outerValue === "run-in") { - switch (innerValue) { - case "flow": - { - return outerValue; - } - case "flow-root": - case "flex": - case "grid": - case "table": - case "ruby": - { - return `${outerValue} ${innerValue}`; - } - default: - } - } - } - break; - } - case 3: - { - const [part1, part2, part3] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name; - const val3 = part3.type === AST_TYPES.IDENTIFIER && part3.name; - if (val1 && val2 && part3) { - let outerValue = ""; - let flowValue = ""; - let listItemValue = ""; - if (val1 === "list-item") { - listItemValue = val1; - if (display_local_var_displayFlow.includes(val2)) { - flowValue = val2; - outerValue = val3; - } else if (display_local_var_displayFlow.includes(val3)) { - flowValue = val3; - outerValue = val2; - } - } else if (val2 === "list-item") { - listItemValue = val2; - if (display_local_var_displayFlow.includes(val1)) { - flowValue = val1; - outerValue = val3; - } else if (display_local_var_displayFlow.includes(val3)) { - flowValue = val3; - outerValue = val1; - } - } else if (val3 === "list-item") { - listItemValue = val3; - if (display_local_var_displayFlow.includes(val1)) { - flowValue = val1; - outerValue = val2; - } else if (display_local_var_displayFlow.includes(val2)) { - flowValue = val2; - outerValue = val1; - } - } - if (outerValue && flowValue && listItemValue) { - switch (outerValue) { - case "block": - { - if (flowValue === "flow") { - return listItemValue; - } - return `${flowValue} ${listItemValue}`; - } - case "inline": - case "run-in": - { - if (flowValue === "flow") { - return `${outerValue} ${listItemValue}`; - } - return `${outerValue} ${flowValue} ${listItemValue}`; - } - } - } - } - break; - } - default: - } - } else if (typeof value === "string") { - return value; - } -}; -display_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(display_local_var_property, v); - } else { - const val = display_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(display_local_var_property) ?? ""; - this._setProperty(display_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(display_local_var_property); - }, - enumerable: true, - configurable: true -}; -display_export_property = display_local_var_property; -var flexGrow_export_parse, flexGrow_export_definition, flexGrow_export_property; -const flexGrow_local_var_property = "flex-grow"; -const flexGrow_local_var_shorthand = "flex"; -flexGrow_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue("flex-grow", v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0 - }); - } else if (typeof value === "string") { - return value; - } -}; -flexGrow_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(flexGrow_local_var_shorthand, ""); - this._setProperty(flexGrow_local_var_property, v); - } else { - const val = flexGrow_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(flexGrow_local_var_shorthand) && this._priorities.has(flexGrow_local_var_property) ? this._priorities.get(flexGrow_local_var_property) : ""; - this._flexBoxSetter(flexGrow_local_var_property, val, priority, flexGrow_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(flexGrow_local_var_property); - }, - enumerable: true, - configurable: true -}; -flexGrow_export_property = flexGrow_local_var_property; -var flexShrink_export_parse, flexShrink_export_definition, flexShrink_export_property; -const flexShrink_local_var_property = "flex-shrink"; -const flexShrink_local_var_shorthand = "flex"; -flexShrink_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(flexShrink_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0 - }); - } else if (typeof value === "string") { - return value; - } -}; -flexShrink_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(flexShrink_local_var_shorthand, ""); - this._setProperty(flexShrink_local_var_property, v); - } else { - const val = flexShrink_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(flexShrink_local_var_shorthand) && this._priorities.has(flexShrink_local_var_property) ? this._priorities.get(flexShrink_local_var_property) : ""; - this._flexBoxSetter(flexShrink_local_var_property, val, priority, flexShrink_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(flexShrink_local_var_property); - }, - enumerable: true, - configurable: true -}; -flexShrink_export_property = flexShrink_local_var_property; -var flexBasis_export_parse, flexBasis_export_definition, flexBasis_export_property; -const flexBasis_local_var_property = "flex-basis"; -const flexBasis_local_var_shorthand = "flex"; -flexBasis_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(flexBasis_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -flexBasis_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(flexBasis_local_var_shorthand, ""); - this._setProperty(flexBasis_local_var_property, v); - } else { - const val = flexBasis_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(flexBasis_local_var_shorthand) && this._priorities.has(flexBasis_local_var_property) ? this._priorities.get(flexBasis_local_var_property) : ""; - this._flexBoxSetter(flexBasis_local_var_property, val, priority, flexBasis_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(flexBasis_local_var_property); - }, - enumerable: true, - configurable: true -}; -flexBasis_export_property = flexBasis_local_var_property; -var flex_export_initialValues, flex_export_shorthandFor, flex_export_parse, flex_export_definition, flex_export_property; -const flex_local_var_property = "flex"; -flex_export_initialValues = new Map([[{ - parse: flexGrow_export_parse, - definition: flexGrow_export_definition, - property: flexGrow_export_property -}.property, "0"], [{ - parse: flexShrink_export_parse, - definition: flexShrink_export_definition, - property: flexShrink_export_property -}.property, "1"], [{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property -}.property, "auto"]]); -flex_export_shorthandFor = new Map([[{ - parse: flexGrow_export_parse, - definition: flexGrow_export_definition, - property: flexGrow_export_property -}.property, { - parse: flexGrow_export_parse, - definition: flexGrow_export_definition, - property: flexGrow_export_property -}], [{ - parse: flexShrink_export_parse, - definition: flexShrink_export_definition, - property: flexShrink_export_property -}.property, { - parse: flexShrink_export_parse, - definition: flexShrink_export_definition, - property: flexShrink_export_property -}], [{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property -}.property, { - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property -}]]); -flex_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const { - AST_TYPES - } = external_dependency_parsers_0; - const value = external_dependency_parsers_0.parsePropertyValue(flex_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - const flex = { - [{ - parse: flexGrow_export_parse, - definition: flexGrow_export_definition, - property: flexGrow_export_property - }.property]: "1", - [{ - parse: flexShrink_export_parse, - definition: flexShrink_export_definition, - property: flexShrink_export_property - }.property]: "1", - [{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property]: "0%" - }; - if (value.length === 1) { - const [{ - isNumber, - name, - type, - unit, - value: itemValue - }] = value; - switch (type) { - case AST_TYPES.CALC: - { - if (isNumber) { - flex[{ - parse: flexGrow_export_parse, - definition: flexGrow_export_definition, - property: flexGrow_export_property - }.property] = `${name}(${itemValue})`; - return flex; - } - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = `${name}(${itemValue})`; - return flex; - } - case AST_TYPES.DIMENSION: - { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = `${itemValue}${unit}`; - return flex; - } - case AST_TYPES.GLOBAL_KEYWORD: - { - return name; - } - case AST_TYPES.IDENTIFIER: - { - if (name === "none") { - return { - [{ - parse: flexGrow_export_parse, - definition: flexGrow_export_definition, - property: flexGrow_export_property - }.property]: "0", - [{ - parse: flexShrink_export_parse, - definition: flexShrink_export_definition, - property: flexShrink_export_property - }.property]: "0", - [{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property]: "auto" - }; - } - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = name; - return flex; - } - case AST_TYPES.NUMBER: - { - flex[{ - parse: flexGrow_export_parse, - definition: flexGrow_export_definition, - property: flexGrow_export_property - }.property] = itemValue; - return flex; - } - case AST_TYPES.PERCENTAGE: - { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = `${itemValue}%`; - return flex; - } - default: - } - } else { - const [val1, val2, val3] = value; - if (val1.type === AST_TYPES.CALC && val1.isNumber) { - flex[{ - parse: flexGrow_export_parse, - definition: flexGrow_export_definition, - property: flexGrow_export_property - }.property] = `${val1.name}(${val1.value})`; - } else if (val1.type === AST_TYPES.NUMBER) { - flex[{ - parse: flexGrow_export_parse, - definition: flexGrow_export_definition, - property: flexGrow_export_property - }.property] = val1.value; - } else { - return; - } - if (val3) { - if (val2.type === AST_TYPES.CALC && val2.isNumber) { - flex[{ - parse: flexShrink_export_parse, - definition: flexShrink_export_definition, - property: flexShrink_export_property - }.property] = `${val2.name}(${val2.value})`; - } else if (val2.type === AST_TYPES.NUMBER) { - flex[{ - parse: flexShrink_export_parse, - definition: flexShrink_export_definition, - property: flexShrink_export_property - }.property] = val2.value; - } else { - return; - } - if (val3.type === AST_TYPES.GLOBAL_KEYWORD || val3.type === AST_TYPES.IDENTIFIER) { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = val3.name; - } else if (val3.type === AST_TYPES.CALC && !val3.isNumber) { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = `${val3.name}(${val3.value})`; - } else if (val3.type === AST_TYPES.DIMENSION) { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = `${val3.value}${val3.unit}`; - } else if (val3.type === AST_TYPES.PERCENTAGE) { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = `${val3.value}%`; - } else { - return; - } - } else { - switch (val2.type) { - case AST_TYPES.CALC: - { - if (val2.isNumber) { - flex[{ - parse: flexShrink_export_parse, - definition: flexShrink_export_definition, - property: flexShrink_export_property - }.property] = `${val2.name}(${val2.value})`; - } else { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = `${val2.name}(${val2.value})`; - } - break; - } - case AST_TYPES.DIMENSION: - { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = `${val2.value}${val2.unit}`; - break; - } - case AST_TYPES.NUMBER: - { - flex[{ - parse: flexShrink_export_parse, - definition: flexShrink_export_definition, - property: flexShrink_export_property - }.property] = val2.value; - break; - } - case AST_TYPES.PERCENTAGE: - { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = `${val2.value}%`; - break; - } - case AST_TYPES.IDENTIFIER: - { - flex[{ - parse: flexBasis_export_parse, - definition: flexBasis_export_definition, - property: flexBasis_export_property - }.property] = val2.name; - break; - } - default: - { - return; - } - } - } - return flex; - } - } else if (typeof value === "string") { - return value; - } -}; -flex_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - for (const [longhand] of flex_export_shorthandFor) { - this._setProperty(longhand, ""); - } - this._setProperty(flex_local_var_property, v); - } else { - const val = flex_export_parse(v, { - globalObject: this._global - }); - const priority = this._priorities.get(flex_local_var_property) ?? ""; - if (typeof val === "string") { - for (const [longhand] of flex_export_shorthandFor) { - this._setProperty(longhand, val, priority); - } - this._setProperty(flex_local_var_property, val, priority); - } else if (val) { - const values = []; - for (const [longhand, value] of Object.entries(val)) { - values.push(value); - this._setProperty(longhand, value, priority); - } - this._setProperty(flex_local_var_property, values.join(" "), priority); - } - } - }, - get() { - return this.getPropertyValue(flex_local_var_property); - }, - enumerable: true, - configurable: true -}; -flex_export_property = flex_local_var_property; -var float_export_parse, float_export_definition, float_export_property; -const float_local_var_property = "float"; -float_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(float_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; -float_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(float_local_var_property, v); - } else { - const val = float_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(float_local_var_property) ?? ""; - this._setProperty(float_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(float_local_var_property); - }, - enumerable: true, - configurable: true -}; -float_export_property = float_local_var_property; -var floodColor_export_parse, floodColor_export_definition, floodColor_export_property; -const floodColor_local_var_property = "flood-color"; -floodColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(floodColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -floodColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(floodColor_local_var_property, v); - } else { - const val = floodColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(floodColor_local_var_property) ?? ""; - this._setProperty(floodColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(floodColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -floodColor_export_property = floodColor_local_var_property; -var fontStyle_export_parse, fontStyle_export_definition, fontStyle_export_property; -const fontStyle_local_var_property = "font-style"; -const fontStyle_local_var_shorthand = "font"; -fontStyle_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const { - AST_TYPES - } = external_dependency_parsers_0; - const value = external_dependency_parsers_0.parsePropertyValue(fontStyle_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - if (value.length === 1) { - const [{ - name, - type - }] = value; - switch (type) { - case AST_TYPES.GLOBAL_KEYWORD: - case AST_TYPES.IDENTIFIER: - { - return name; - } - default: - } - } else if (value.length === 2) { - const [part1, part2] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = external_dependency_parsers_0.resolveNumericValue([part2], { - type: "angle" - }); - if (val1 && val1 === "oblique" && val2) { - return `${val1} ${val2}`; - } - } - } else if (typeof value === "string") { - return value; - } -}; -fontStyle_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(fontStyle_local_var_shorthand, ""); - this._setProperty(fontStyle_local_var_property, v); - } else { - const val = fontStyle_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(fontStyle_local_var_shorthand) && this._priorities.has(fontStyle_local_var_property) ? this._priorities.get(fontStyle_local_var_property) : ""; - this._setProperty(fontStyle_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(fontStyle_local_var_property); - }, - enumerable: true, - configurable: true -}; -fontStyle_export_property = fontStyle_local_var_property; -var fontVariant_export_parse, fontVariant_export_definition, fontVariant_export_property; -const fontVariant_local_var_property = "font-variant"; -const fontVariant_local_var_shorthand = "font"; -fontVariant_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.splitValue(v); - const parsedValues = []; - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(fontVariant_local_var_property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveFunctionValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - if (parsedValues.length > 1) { - if (parsedValues.includes("normal") || parsedValues.includes("none")) { - return; - } - } - return parsedValues.join(" "); - } -}; -fontVariant_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(fontVariant_local_var_shorthand, ""); - this._setProperty(fontVariant_local_var_property, v); - } else { - const val = fontVariant_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(fontVariant_local_var_shorthand) && this._priorities.has(fontVariant_local_var_property) ? this._priorities.get(fontVariant_local_var_property) : ""; - this._setProperty(fontVariant_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(fontVariant_local_var_property); - }, - enumerable: true, - configurable: true -}; -fontVariant_export_property = fontVariant_local_var_property; -var fontWeight_export_parse, fontWeight_export_definition, fontWeight_export_property; -const fontWeight_local_var_property = "font-weight"; -const fontWeight_local_var_shorthand = "font"; -fontWeight_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(fontWeight_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = external_dependency_parsers_0.resolveNumericValue(value, { - min: 1, - max: 1000 - }); - if (!parsedValue) { - return; - } - return parsedValue; - } else if (typeof value === "string") { - return value; - } -}; -fontWeight_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(fontWeight_local_var_shorthand, ""); - this._setProperty(fontWeight_local_var_property, v); - } else { - const val = fontWeight_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(fontWeight_local_var_shorthand) && this._priorities.has(fontWeight_local_var_property) ? this._priorities.get(fontWeight_local_var_property) : ""; - this._setProperty(fontWeight_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(fontWeight_local_var_property); - }, - enumerable: true, - configurable: true -}; -fontWeight_export_property = fontWeight_local_var_property; -var fontSize_export_parse, fontSize_export_definition, fontSize_export_property; -const fontSize_local_var_property = "font-size"; -const fontSize_local_var_shorthand = "font"; -fontSize_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(fontSize_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -fontSize_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(fontSize_local_var_shorthand, ""); - this._setProperty(fontSize_local_var_property, v); - } else { - const val = fontSize_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(fontSize_local_var_shorthand) && this._priorities.has(fontSize_local_var_property) ? this._priorities.get(fontSize_local_var_property) : ""; - this._setProperty(fontSize_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(fontSize_local_var_property); - }, - enumerable: true, - configurable: true -}; -fontSize_export_property = fontSize_local_var_property; -var lineHeight_export_parse, lineHeight_export_definition, lineHeight_export_property; -const lineHeight_local_var_property = "line-height"; -const lineHeight_local_var_shorthand = "font"; -lineHeight_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(lineHeight_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0 - }); - } else if (typeof value === "string") { - return value; - } -}; -lineHeight_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(lineHeight_local_var_shorthand, ""); - this._setProperty(lineHeight_local_var_property, v); - } else { - const val = lineHeight_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(lineHeight_local_var_shorthand) && this._priorities.has(lineHeight_local_var_property) ? this._priorities.get(lineHeight_local_var_property) : ""; - this._setProperty(lineHeight_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(lineHeight_local_var_property); - }, - enumerable: true, - configurable: true -}; -lineHeight_export_property = lineHeight_local_var_property; -var fontFamily_export_parse, fontFamily_export_definition, fontFamily_export_property; -const fontFamily_local_var_property = "font-family"; -const fontFamily_local_var_shorthand = "font"; -fontFamily_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const { - AST_TYPES - } = external_dependency_parsers_0; - const values = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = external_dependency_parsers_0.parsePropertyValue(fontFamily_local_var_property, val, { - globalObject, - caseSensitive: true, - inArray: true - }); - if (Array.isArray(value) && value.length) { - if (value.length === 1) { - const [{ - name, - type, - value: itemValue - }] = value; - switch (type) { - case AST_TYPES.FUNCTION: - { - parsedValues.push(`${name}(${itemValue})`); - break; - } - case AST_TYPES.GLOBAL_KEYWORD: - case AST_TYPES.IDENTIFIER: - { - if (name === "undefined") { - return; - } - parsedValues.push(name); - break; - } - case "String": - { - const parsedValue = itemValue.replaceAll("\\", "").replaceAll('"', '\\"'); - parsedValues.push(`"${parsedValue}"`); - break; - } - default: - { - return; - } - } - } else { - const parts = []; - for (const item of value) { - const { - name, - type - } = item; - if (type !== AST_TYPES.IDENTIFIER) { - return; - } - parts.push(name); - } - const parsedValue = parts.join(" ").replaceAll("\\", "").replaceAll('"', '\\"'); - parsedValues.push(`"${parsedValue}"`); - } - } else if (typeof value === "string") { - parsedValues.push(value); - } else { - return; - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; -fontFamily_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(fontFamily_local_var_shorthand, ""); - this._setProperty(fontFamily_local_var_property, v); - } else { - const val = fontFamily_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(fontFamily_local_var_shorthand) && this._priorities.has(fontFamily_local_var_property) ? this._priorities.get(fontFamily_local_var_property) : ""; - this._setProperty(fontFamily_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(fontFamily_local_var_property); - }, - enumerable: true, - configurable: true -}; -fontFamily_export_property = fontFamily_local_var_property; -var font_export_shorthandFor, font_export_parse, font_export_definition, font_export_property; -const font_local_var_property = "font"; -font_export_shorthandFor = new Map([[{ - parse: fontStyle_export_parse, - definition: fontStyle_export_definition, - property: fontStyle_export_property -}.property, { - parse: fontStyle_export_parse, - definition: fontStyle_export_definition, - property: fontStyle_export_property -}], [{ - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property -}.property, { - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property -}], [{ - parse: fontWeight_export_parse, - definition: fontWeight_export_definition, - property: fontWeight_export_property -}.property, { - parse: fontWeight_export_parse, - definition: fontWeight_export_definition, - property: fontWeight_export_property -}], [{ - parse: fontSize_export_parse, - definition: fontSize_export_definition, - property: fontSize_export_property -}.property, { - parse: fontSize_export_parse, - definition: fontSize_export_definition, - property: fontSize_export_property -}], [{ - parse: lineHeight_export_parse, - definition: lineHeight_export_definition, - property: lineHeight_export_property -}.property, { - parse: lineHeight_export_parse, - definition: lineHeight_export_definition, - property: lineHeight_export_property -}], [{ - parse: fontFamily_export_parse, - definition: fontFamily_export_definition, - property: fontFamily_export_property -}.property, { - parse: fontFamily_export_parse, - definition: fontFamily_export_definition, - property: fontFamily_export_property -}]]); -font_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } else if (external_dependency_parsers_0.hasCalcFunc(v)) { - v = external_dependency_parsers_0.resolveCalc(v); - } - if (!external_dependency_parsers_0.isValidPropertyValue(font_local_var_property, v)) { - return; - } - const { - AST_TYPES - } = external_dependency_parsers_0; - const [fontBlock, ...families] = external_dependency_parsers_0.splitValue(v, { - delimiter: "," - }); - const [fontBlockA, fontBlockB] = external_dependency_parsers_0.splitValue(fontBlock, { - delimiter: "/" - }); - const font = { - [{ - parse: fontStyle_export_parse, - definition: fontStyle_export_definition, - property: fontStyle_export_property - }.property]: "normal", - [{ - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property - }.property]: "normal", - [{ - parse: fontWeight_export_parse, - definition: fontWeight_export_definition, - property: fontWeight_export_property - }.property]: "normal" - }; - const fontFamilies = new Set(); - if (fontBlockB) { - const [lineB, ...familiesB] = fontBlockB.trim().split(" "); - if (!lineB || !familiesB.length) { - return; - } - const lineHeightB = { - parse: lineHeight_export_parse, - definition: lineHeight_export_definition, - property: lineHeight_export_property - }.parse(lineB, { - global - }); - if (typeof lineHeightB !== "string") { - return; - } - const familyB = { - parse: fontFamily_export_parse, - definition: fontFamily_export_definition, - property: fontFamily_export_property - }.parse(familiesB.join(" "), { - globalObject, - caseSensitive: true - }); - if (typeof familyB === "string") { - fontFamilies.add(familyB); - } else { - return; - } - const parts = external_dependency_parsers_0.splitValue(fontBlockA.trim()); - const properties = [{ - parse: fontStyle_export_parse, - definition: fontStyle_export_definition, - property: fontStyle_export_property - }.property, { - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property - }.property, { - parse: fontWeight_export_parse, - definition: fontWeight_export_definition, - property: fontWeight_export_property - }.property, { - parse: fontSize_export_parse, - definition: fontSize_export_definition, - property: fontSize_export_property - }.property]; - for (const part of parts) { - if (part === "normal") { - continue; - } else { - for (const longhand of properties) { - switch (longhand) { - case { - parse: fontSize_export_parse, - definition: fontSize_export_definition, - property: fontSize_export_property - }.property: - { - const parsedValue = { - parse: fontSize_export_parse, - definition: fontSize_export_definition, - property: fontSize_export_property - }.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - font[longhand] = parsedValue; - } - break; - } - case { - parse: fontStyle_export_parse, - definition: fontStyle_export_definition, - property: fontStyle_export_property - }.property: - case { - parse: fontWeight_export_parse, - definition: fontWeight_export_definition, - property: fontWeight_export_property - }.property: - { - if (font[longhand] === "normal") { - const longhandItem = font_export_shorthandFor.get(longhand); - const parsedValue = longhandItem.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - font[longhand] = parsedValue; - } - } - break; - } - case { - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property - }.property: - { - if (font[longhand] === "normal") { - const parsedValue = { - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property - }.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - if (parsedValue === "small-cap") { - font[longhand] = parsedValue; - } else if (parsedValue !== "normal") { - return; - } - } - } - break; - } - default: - } - } - } - } - if (Object.hasOwn(font, { - parse: fontSize_export_parse, - definition: fontSize_export_definition, - property: fontSize_export_property - }.property)) { - font[{ - parse: lineHeight_export_parse, - definition: lineHeight_export_definition, - property: lineHeight_export_property - }.property] = lineHeightB; - } else { - return; - } - } else { - const revParts = external_dependency_parsers_0.splitValue(fontBlockA.trim()).toReversed(); - if (revParts.length === 1) { - const [part] = revParts; - const value = external_dependency_parsers_0.parsePropertyValue(font_local_var_property, part, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const [{ - name, - type - }] = value; - if (type === AST_TYPES.GLOBAL_KEYWORD) { - return { - [{ - parse: fontStyle_export_parse, - definition: fontStyle_export_definition, - property: fontStyle_export_property - }.property]: name, - [{ - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property - }.property]: name, - [{ - parse: fontWeight_export_parse, - definition: fontWeight_export_definition, - property: fontWeight_export_property - }.property]: name, - [{ - parse: fontSize_export_parse, - definition: fontSize_export_definition, - property: fontSize_export_property - }.property]: name, - [{ - parse: lineHeight_export_parse, - definition: lineHeight_export_definition, - property: lineHeight_export_property - }.property]: name, - [{ - parse: fontFamily_export_parse, - definition: fontFamily_export_definition, - property: fontFamily_export_property - }.property]: name - }; - } - } - return; - } - const properties = [{ - parse: fontStyle_export_parse, - definition: fontStyle_export_definition, - property: fontStyle_export_property - }.property, { - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property - }.property, { - parse: fontWeight_export_parse, - definition: fontWeight_export_definition, - property: fontWeight_export_property - }.property, { - parse: lineHeight_export_parse, - definition: lineHeight_export_definition, - property: lineHeight_export_property - }.property]; - for (const longhand of properties) { - font[longhand] = "normal"; - } - const revFontFamily = []; - let fontSizeA; - for (const part of revParts) { - if (fontSizeA) { - if (/^normal$/i.test(part)) { - continue; - } else { - for (const longhand of properties) { - switch (longhand) { - case { - parse: fontStyle_export_parse, - definition: fontStyle_export_definition, - property: fontStyle_export_property - }.property: - case { - parse: fontWeight_export_parse, - definition: fontWeight_export_definition, - property: fontWeight_export_property - }.property: - case { - parse: lineHeight_export_parse, - definition: lineHeight_export_definition, - property: lineHeight_export_property - }.property: - { - if (font[longhand] === "normal") { - const longhandItem = font_export_shorthandFor.get(longhand); - const parsedValue = longhandItem.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - font[longhand] = parsedValue; - } - } - break; - } - case { - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property - }.property: - { - if (font[longhand] === "normal") { - const parsedValue = { - parse: fontVariant_export_parse, - definition: fontVariant_export_definition, - property: fontVariant_export_property - }.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - if (parsedValue === "small-cap") { - font[longhand] = parsedValue; - } else if (parsedValue !== "normal") { - return; - } - } - } - break; - } - default: - } - } - } - } else { - const parsedFontSize = { - parse: fontSize_export_parse, - definition: fontSize_export_definition, - property: fontSize_export_property - }.parse(part, { - globalObject - }); - if (typeof parsedFontSize === "string") { - fontSizeA = parsedFontSize; - } else { - const parsedFontFamily = { - parse: fontFamily_export_parse, - definition: fontFamily_export_definition, - property: fontFamily_export_property - }.parse(part, { - globalObject, - caseSensitive: true - }); - if (typeof parsedFontFamily === "string") { - revFontFamily.push(parsedFontFamily); - } else { - return; - } - } - } - } - const family = { - parse: fontFamily_export_parse, - definition: fontFamily_export_definition, - property: fontFamily_export_property - }.parse(revFontFamily.toReversed().join(" "), { - globalObject, - caseSensitive: true - }); - if (fontSizeA && family) { - font[{ - parse: fontSize_export_parse, - definition: fontSize_export_definition, - property: fontSize_export_property - }.property] = fontSizeA; - fontFamilies.add({ - parse: fontFamily_export_parse, - definition: fontFamily_export_definition, - property: fontFamily_export_property - }.parse(family)); - } else { - return; - } - } - for (const family of families) { - const parsedFontFamily = { - parse: fontFamily_export_parse, - definition: fontFamily_export_definition, - property: fontFamily_export_property - }.parse(family, { - globalObject, - caseSensitive: true - }); - if (parsedFontFamily) { - fontFamilies.add(parsedFontFamily); - } else { - return; - } - } - font[{ - parse: fontFamily_export_parse, - definition: fontFamily_export_definition, - property: fontFamily_export_property - }.property] = [...fontFamilies].join(", "); - return font; -}; -font_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (v === "" || external_dependency_parsers_0.hasVarFunc(v)) { - for (const [key] of font_export_shorthandFor) { - this._setProperty(key, ""); - } - this._setProperty(font_local_var_property, v); - } else { - const obj = font_export_parse(v, { - globalObject: this._global - }); - if (!obj) { - return; - } - const priority = this._priorities.get(font_local_var_property) ?? ""; - const str = new Set(); - for (const [key] of font_export_shorthandFor) { - const val = obj[key]; - if (typeof val === "string") { - this._setProperty(key, val, priority); - if (val && val !== "normal" && !str.has(val)) { - if (key === { - parse: lineHeight_export_parse, - definition: lineHeight_export_definition, - property: lineHeight_export_property - }.property) { - str.add(`/ ${val}`); - } else { - str.add(val); - } - } - } - } - this._setProperty(font_local_var_property, [...str].join(" "), priority); - } - }, - get() { - const val = this.getPropertyValue(font_local_var_property); - if (external_dependency_parsers_0.hasVarFunc(val)) { - return val; - } - const str = new Set(); - for (const [key] of font_export_shorthandFor) { - const v = this.getPropertyValue(key); - if (external_dependency_parsers_0.hasVarFunc(v)) { - return ""; - } - if (v && v !== "normal" && !str.has(v)) { - if (key === { - parse: lineHeight_export_parse, - definition: lineHeight_export_definition, - property: lineHeight_export_property - }.property) { - str.add(`/ ${v}`); - } else { - str.add(`${v}`); - } - } - } - return [...str].join(" "); - }, - enumerable: true, - configurable: true -}; -font_export_property = font_local_var_property; -var height_export_parse, height_export_definition, height_export_property; -const height_local_var_property = "height"; -height_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(height_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -height_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(height_local_var_property, v); - } else { - const val = height_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(height_local_var_property) ?? ""; - this._setProperty(height_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(height_local_var_property); - }, - enumerable: true, - configurable: true -}; -height_export_property = height_local_var_property; -var left_export_parse, left_export_definition, left_export_property; -const left_local_var_property = "left"; -left_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(left_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -left_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(left_local_var_property, v); - } else { - const val = left_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(left_local_var_property) ?? ""; - this._setProperty(left_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(left_local_var_property); - }, - enumerable: true, - configurable: true -}; -left_export_property = left_local_var_property; -var lightingColor_export_parse, lightingColor_export_definition, lightingColor_export_property; -const lightingColor_local_var_property = "lighting-color"; -lightingColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(lightingColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -lightingColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(lightingColor_local_var_property, v); - } else { - const val = lightingColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(lightingColor_local_var_property) ?? ""; - this._setProperty(lightingColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(lightingColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -lightingColor_export_property = lightingColor_local_var_property; -var marginTop_export_position, marginTop_export_parse, marginTop_export_definition, marginTop_export_property; -const marginTop_local_var_property = "margin-top"; -const marginTop_local_var_shorthand = "margin"; -marginTop_export_position = "top"; -marginTop_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(marginTop_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -marginTop_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(marginTop_local_var_shorthand, ""); - this._setProperty(marginTop_local_var_property, v); - } else { - const val = marginTop_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(marginTop_local_var_shorthand) && this._priorities.has(marginTop_local_var_property) ? this._priorities.get(marginTop_local_var_property) : ""; - this._positionLonghandSetter(marginTop_local_var_property, val, priority, marginTop_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(marginTop_local_var_property); - }, - enumerable: true, - configurable: true -}; -marginTop_export_property = marginTop_local_var_property; -var marginRight_export_position, marginRight_export_parse, marginRight_export_definition, marginRight_export_property; -const marginRight_local_var_property = "margin-right"; -const marginRight_local_var_shorthand = "margin"; -marginRight_export_position = "right"; -marginRight_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(marginRight_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -marginRight_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(marginRight_local_var_shorthand, ""); - this._setProperty(marginRight_local_var_property, v); - } else { - const val = marginRight_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(marginRight_local_var_shorthand) && this._priorities.has(marginRight_local_var_property) ? this._priorities.get(marginRight_local_var_property) : ""; - this._positionLonghandSetter(marginRight_local_var_property, val, priority, marginRight_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(marginRight_local_var_property); - }, - enumerable: true, - configurable: true -}; -marginRight_export_property = marginRight_local_var_property; -var marginBottom_export_position, marginBottom_export_parse, marginBottom_export_definition, marginBottom_export_property; -const marginBottom_local_var_property = "margin-bottom"; -const marginBottom_local_var_shorthand = "margin"; -marginBottom_export_position = "bottom"; -marginBottom_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(marginBottom_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -marginBottom_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(marginBottom_local_var_shorthand, ""); - this._setProperty(marginBottom_local_var_property, v); - } else { - const val = marginBottom_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(marginBottom_local_var_shorthand) && this._priorities.has(marginBottom_local_var_property) ? this._priorities.get(marginBottom_local_var_property) : ""; - this._positionLonghandSetter(marginBottom_local_var_property, val, priority, marginBottom_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(marginBottom_local_var_property); - }, - enumerable: true, - configurable: true -}; -marginBottom_export_property = marginBottom_local_var_property; -var marginLeft_export_position, marginLeft_export_parse, marginLeft_export_definition, marginLeft_export_property; -const marginLeft_local_var_property = "margin-left"; -const marginLeft_local_var_shorthand = "margin"; -marginLeft_export_position = "left"; -marginLeft_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(marginLeft_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -marginLeft_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(marginLeft_local_var_shorthand, ""); - this._setProperty(marginLeft_local_var_property, v); - } else { - const val = marginLeft_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(marginLeft_local_var_shorthand) && this._priorities.has(marginLeft_local_var_property) ? this._priorities.get(marginLeft_local_var_property) : ""; - this._positionLonghandSetter(marginLeft_local_var_property, val, priority, marginLeft_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(marginLeft_local_var_property); - }, - enumerable: true, - configurable: true -}; -marginLeft_export_property = marginLeft_local_var_property; -var margin_export_position, margin_export_shorthandFor, margin_export_parse, margin_export_definition, margin_export_property; -const margin_local_var_property = "margin"; -margin_export_position = "edges"; -margin_export_shorthandFor = new Map([[{ - position: marginTop_export_position, - parse: marginTop_export_parse, - definition: marginTop_export_definition, - property: marginTop_export_property -}.property, { - position: marginTop_export_position, - parse: marginTop_export_parse, - definition: marginTop_export_definition, - property: marginTop_export_property -}], [{ - position: marginRight_export_position, - parse: marginRight_export_parse, - definition: marginRight_export_definition, - property: marginRight_export_property -}.property, { - position: marginRight_export_position, - parse: marginRight_export_parse, - definition: marginRight_export_definition, - property: marginRight_export_property -}], [{ - position: marginBottom_export_position, - parse: marginBottom_export_parse, - definition: marginBottom_export_definition, - property: marginBottom_export_property -}.property, { - position: marginBottom_export_position, - parse: marginBottom_export_parse, - definition: marginBottom_export_definition, - property: marginBottom_export_property -}], [{ - position: marginLeft_export_position, - parse: marginLeft_export_parse, - definition: marginLeft_export_definition, - property: marginLeft_export_property -}.property, { - position: marginLeft_export_position, - parse: marginLeft_export_parse, - definition: marginLeft_export_definition, - property: marginLeft_export_property -}]]); -margin_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.parsePropertyValue(margin_local_var_property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = external_dependency_parsers_0.resolveNumericValue([value], { - length: values.length, - type: "length" - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - return parsedValues; - } -}; -margin_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - for (const [longhand] of margin_export_shorthandFor) { - this._setProperty(longhand, ""); - } - this._setProperty(margin_local_var_property, v); - } else { - const val = margin_export_parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = this._priorities.get(margin_local_var_property) ?? ""; - this._positionShorthandSetter(margin_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(margin_local_var_property); - }, - enumerable: true, - configurable: true -}; -margin_export_property = margin_local_var_property; -var opacity_export_parse, opacity_export_definition, opacity_export_property; -const opacity_local_var_property = "opacity"; -opacity_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(opacity_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - clamp: true - }); - } else if (typeof value === "string") { - return value; - } -}; -opacity_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(opacity_local_var_property, v); - } else { - const val = opacity_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(opacity_local_var_property) ?? ""; - this._setProperty(opacity_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(opacity_local_var_property); - }, - enumerable: true, - configurable: true -}; -opacity_export_property = opacity_local_var_property; -var outlineColor_export_parse, outlineColor_export_definition, outlineColor_export_property; -const outlineColor_local_var_property = "outline-color"; -outlineColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(outlineColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -outlineColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(outlineColor_local_var_property, v); - } else { - const val = outlineColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(outlineColor_local_var_property) ?? ""; - this._setProperty(outlineColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(outlineColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -outlineColor_export_property = outlineColor_local_var_property; -var paddingTop_export_position, paddingTop_export_parse, paddingTop_export_definition, paddingTop_export_property; -const paddingTop_local_var_property = "padding-top"; -const paddingTop_local_var_shorthand = "padding"; -paddingTop_export_position = "top"; -paddingTop_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(paddingTop_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -paddingTop_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(paddingTop_local_var_shorthand, ""); - this._setProperty(paddingTop_local_var_property, v); - } else { - const val = paddingTop_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(paddingTop_local_var_shorthand) && this._priorities.has(paddingTop_local_var_property) ? this._priorities.get(paddingTop_local_var_property) : ""; - this._positionLonghandSetter(paddingTop_local_var_property, val, priority, paddingTop_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(paddingTop_local_var_property); - }, - enumerable: true, - configurable: true -}; -paddingTop_export_property = paddingTop_local_var_property; -var paddingRight_export_position, paddingRight_export_parse, paddingRight_export_definition, paddingRight_export_property; -const paddingRight_local_var_property = "padding-right"; -const paddingRight_local_var_shorthand = "padding"; -paddingRight_export_position = "right"; -paddingRight_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(paddingRight_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -paddingRight_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(paddingRight_local_var_shorthand, ""); - this._setProperty(paddingRight_local_var_property, v); - } else { - const val = paddingRight_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(paddingRight_local_var_shorthand) && this._priorities.has(paddingRight_local_var_property) ? this._priorities.get(paddingRight_local_var_property) : ""; - this._positionLonghandSetter(paddingRight_local_var_property, val, priority, paddingRight_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(paddingRight_local_var_property); - }, - enumerable: true, - configurable: true -}; -paddingRight_export_property = paddingRight_local_var_property; -var paddingBottom_export_position, paddingBottom_export_parse, paddingBottom_export_definition, paddingBottom_export_property; -const paddingBottom_local_var_property = "padding-bottom"; -const paddingBottom_local_var_shorthand = "padding"; -paddingBottom_export_position = "bottom"; -paddingBottom_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(paddingBottom_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -paddingBottom_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(paddingBottom_local_var_shorthand, ""); - this._setProperty(paddingBottom_local_var_property, v); - } else { - const val = paddingBottom_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(paddingBottom_local_var_shorthand) && this._priorities.has(paddingBottom_local_var_property) ? this._priorities.get(paddingBottom_local_var_property) : ""; - this._positionLonghandSetter(paddingBottom_local_var_property, val, priority, paddingBottom_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(paddingBottom_local_var_property); - }, - enumerable: true, - configurable: true -}; -paddingBottom_export_property = paddingBottom_local_var_property; -var paddingLeft_export_position, paddingLeft_export_parse, paddingLeft_export_definition, paddingLeft_export_property; -const paddingLeft_local_var_property = "padding-left"; -const paddingLeft_local_var_shorthand = "padding"; -paddingLeft_export_position = "left"; -paddingLeft_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(paddingLeft_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -paddingLeft_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(paddingLeft_local_var_shorthand, ""); - this._setProperty(paddingLeft_local_var_property, v); - } else { - const val = paddingLeft_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = !this._priorities.get(paddingLeft_local_var_shorthand) && this._priorities.has(paddingLeft_local_var_property) ? this._priorities.get(paddingLeft_local_var_property) : ""; - this._positionLonghandSetter(paddingLeft_local_var_property, val, priority, paddingLeft_local_var_shorthand); - } - } - }, - get() { - return this.getPropertyValue(paddingLeft_local_var_property); - }, - enumerable: true, - configurable: true -}; -paddingLeft_export_property = paddingLeft_local_var_property; -var padding_export_position, padding_export_shorthandFor, padding_export_parse, padding_export_definition, padding_export_property; -const padding_local_var_property = "padding"; -padding_export_position = "edges"; -padding_export_shorthandFor = new Map([[{ - position: paddingTop_export_position, - parse: paddingTop_export_parse, - definition: paddingTop_export_definition, - property: paddingTop_export_property -}.property, { - position: paddingTop_export_position, - parse: paddingTop_export_parse, - definition: paddingTop_export_definition, - property: paddingTop_export_property -}], [{ - position: paddingRight_export_position, - parse: paddingRight_export_parse, - definition: paddingRight_export_definition, - property: paddingRight_export_property -}.property, { - position: paddingRight_export_position, - parse: paddingRight_export_parse, - definition: paddingRight_export_definition, - property: paddingRight_export_property -}], [{ - position: paddingBottom_export_position, - parse: paddingBottom_export_parse, - definition: paddingBottom_export_definition, - property: paddingBottom_export_property -}.property, { - position: paddingBottom_export_position, - parse: paddingBottom_export_parse, - definition: paddingBottom_export_definition, - property: paddingBottom_export_property -}], [{ - position: paddingLeft_export_position, - parse: paddingLeft_export_parse, - definition: paddingLeft_export_definition, - property: paddingLeft_export_property -}.property, { - position: paddingLeft_export_position, - parse: paddingLeft_export_parse, - definition: paddingLeft_export_definition, - property: paddingLeft_export_property -}]]); -padding_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const values = external_dependency_parsers_0.parsePropertyValue(padding_local_var_property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = external_dependency_parsers_0.resolveNumericValue([value], { - length: values.length, - min: 0, - type: "length" - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - return parsedValues; - } -}; -padding_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - for (const [longhand] of padding_export_shorthandFor) { - this._setProperty(longhand, ""); - } - this._setProperty(padding_local_var_property, v); - } else { - const val = padding_export_parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = this._priorities.get(padding_local_var_property) ?? ""; - this._positionShorthandSetter(padding_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(padding_local_var_property); - }, - enumerable: true, - configurable: true -}; -padding_export_property = padding_local_var_property; -var right_export_parse, right_export_definition, right_export_property; -const right_local_var_property = "right"; -right_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(right_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -right_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(right_local_var_property, v); - } else { - const val = right_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(right_local_var_property) ?? ""; - this._setProperty(right_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(right_local_var_property); - }, - enumerable: true, - configurable: true -}; -right_export_property = right_local_var_property; -var stopColor_export_parse, stopColor_export_definition, stopColor_export_property; -const stopColor_local_var_property = "stop-color"; -stopColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(stopColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -stopColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(stopColor_local_var_property, v); - } else { - const val = stopColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(stopColor_local_var_property) ?? ""; - this._setProperty(stopColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(stopColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -stopColor_export_property = stopColor_local_var_property; -var top_export_parse, top_export_definition, top_export_property; -const top_local_var_property = "top"; -top_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(top_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -top_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(top_local_var_property, v); - } else { - const val = top_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(top_local_var_property) ?? ""; - this._setProperty(top_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(top_local_var_property); - }, - enumerable: true, - configurable: true -}; -top_export_property = top_local_var_property; -var webkitBorderAfterColor_export_parse, webkitBorderAfterColor_export_definition, webkitBorderAfterColor_export_property; -const webkitBorderAfterColor_local_var_property = "-webkit-border-after-color"; -webkitBorderAfterColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(webkitBorderAfterColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -webkitBorderAfterColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(webkitBorderAfterColor_local_var_property, v); - } else { - const val = webkitBorderAfterColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(webkitBorderAfterColor_local_var_property) ?? ""; - this._setProperty(webkitBorderAfterColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(webkitBorderAfterColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -webkitBorderAfterColor_export_property = webkitBorderAfterColor_local_var_property; -var webkitBorderBeforeColor_export_parse, webkitBorderBeforeColor_export_definition, webkitBorderBeforeColor_export_property; -const webkitBorderBeforeColor_local_var_property = "-webkit-border-before-color"; -webkitBorderBeforeColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(webkitBorderBeforeColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -webkitBorderBeforeColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(webkitBorderBeforeColor_local_var_property, v); - } else { - const val = webkitBorderBeforeColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(webkitBorderBeforeColor_local_var_property) ?? ""; - this._setProperty(webkitBorderBeforeColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(webkitBorderBeforeColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -webkitBorderBeforeColor_export_property = webkitBorderBeforeColor_local_var_property; -var webkitBorderEndColor_export_parse, webkitBorderEndColor_export_definition, webkitBorderEndColor_export_property; -const webkitBorderEndColor_local_var_property = "-webkit-border-end-color"; -webkitBorderEndColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(webkitBorderEndColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -webkitBorderEndColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(webkitBorderEndColor_local_var_property, v); - } else { - const val = webkitBorderEndColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(webkitBorderEndColor_local_var_property) ?? ""; - this._setProperty(webkitBorderEndColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(webkitBorderEndColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -webkitBorderEndColor_export_property = webkitBorderEndColor_local_var_property; -var webkitBorderStartColor_export_parse, webkitBorderStartColor_export_definition, webkitBorderStartColor_export_property; -const webkitBorderStartColor_local_var_property = "-webkit-border-start-color"; -webkitBorderStartColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(webkitBorderStartColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -webkitBorderStartColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(webkitBorderStartColor_local_var_property, v); - } else { - const val = webkitBorderStartColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(webkitBorderStartColor_local_var_property) ?? ""; - this._setProperty(webkitBorderStartColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(webkitBorderStartColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -webkitBorderStartColor_export_property = webkitBorderStartColor_local_var_property; -var webkitColumnRuleColor_export_parse, webkitColumnRuleColor_export_definition, webkitColumnRuleColor_export_property; -const webkitColumnRuleColor_local_var_property = "-webkit-column-rule-color"; -webkitColumnRuleColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(webkitColumnRuleColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -webkitColumnRuleColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(webkitColumnRuleColor_local_var_property, v); - } else { - const val = webkitColumnRuleColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(webkitColumnRuleColor_local_var_property) ?? ""; - this._setProperty(webkitColumnRuleColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(webkitColumnRuleColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -webkitColumnRuleColor_export_property = webkitColumnRuleColor_local_var_property; -var webkitTapHighlightColor_export_parse, webkitTapHighlightColor_export_definition, webkitTapHighlightColor_export_property; -const webkitTapHighlightColor_local_var_property = "-webkit-tap-highlight-color"; -webkitTapHighlightColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(webkitTapHighlightColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -webkitTapHighlightColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(webkitTapHighlightColor_local_var_property, v); - } else { - const val = webkitTapHighlightColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(webkitTapHighlightColor_local_var_property) ?? ""; - this._setProperty(webkitTapHighlightColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(webkitTapHighlightColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -webkitTapHighlightColor_export_property = webkitTapHighlightColor_local_var_property; -var webkitTextEmphasisColor_export_parse, webkitTextEmphasisColor_export_definition, webkitTextEmphasisColor_export_property; -const webkitTextEmphasisColor_local_var_property = "-webkit-text-emphasis-color"; -webkitTextEmphasisColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(webkitTextEmphasisColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -webkitTextEmphasisColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(webkitTextEmphasisColor_local_var_property, v); - } else { - const val = webkitTextEmphasisColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(webkitTextEmphasisColor_local_var_property) ?? ""; - this._setProperty(webkitTextEmphasisColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(webkitTextEmphasisColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -webkitTextEmphasisColor_export_property = webkitTextEmphasisColor_local_var_property; -var webkitTextFillColor_export_parse, webkitTextFillColor_export_definition, webkitTextFillColor_export_property; -const webkitTextFillColor_local_var_property = "-webkit-text-fill-color"; -webkitTextFillColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(webkitTextFillColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -webkitTextFillColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(webkitTextFillColor_local_var_property, v); - } else { - const val = webkitTextFillColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(webkitTextFillColor_local_var_property) ?? ""; - this._setProperty(webkitTextFillColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(webkitTextFillColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -webkitTextFillColor_export_property = webkitTextFillColor_local_var_property; -var webkitTextStrokeColor_export_parse, webkitTextStrokeColor_export_definition, webkitTextStrokeColor_export_property; -const webkitTextStrokeColor_local_var_property = "-webkit-text-stroke-color"; -webkitTextStrokeColor_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(webkitTextStrokeColor_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; -webkitTextStrokeColor_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(webkitTextStrokeColor_local_var_property, v); - } else { - const val = webkitTextStrokeColor_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(webkitTextStrokeColor_local_var_property) ?? ""; - this._setProperty(webkitTextStrokeColor_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(webkitTextStrokeColor_local_var_property); - }, - enumerable: true, - configurable: true -}; -webkitTextStrokeColor_export_property = webkitTextStrokeColor_local_var_property; -var width_export_parse, width_export_definition, width_export_property; -const width_local_var_property = "width"; -width_export_parse = (v, opt = {}) => { - const { - globalObject - } = opt; - if (v === "") { - return v; - } - const value = external_dependency_parsers_0.parsePropertyValue(width_local_var_property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return external_dependency_parsers_0.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; -width_export_definition = { - set(v) { - v = external_dependency_parsers_0.prepareValue(v); - if (external_dependency_parsers_0.hasVarFunc(v)) { - this._setProperty(width_local_var_property, v); - } else { - const val = width_export_parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(width_local_var_property) ?? ""; - this._setProperty(width_local_var_property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(width_local_var_property); - }, - enumerable: true, - configurable: true -}; -width_export_property = width_local_var_property; -module.exports = { - backgroundImage: backgroundImage_export_definition, - "background-image": backgroundImage_export_definition, - backgroundPosition: backgroundPosition_export_definition, - "background-position": backgroundPosition_export_definition, - backgroundSize: backgroundSize_export_definition, - "background-size": backgroundSize_export_definition, - backgroundRepeat: backgroundRepeat_export_definition, - "background-repeat": backgroundRepeat_export_definition, - backgroundOrigin: backgroundOrigin_export_definition, - "background-origin": backgroundOrigin_export_definition, - backgroundClip: backgroundClip_export_definition, - "background-clip": backgroundClip_export_definition, - backgroundAttachment: backgroundAttachment_export_definition, - "background-attachment": backgroundAttachment_export_definition, - backgroundColor: backgroundColor_export_definition, - "background-color": backgroundColor_export_definition, - background: background_export_definition, - borderTopWidth: borderTopWidth_export_definition, - "border-top-width": borderTopWidth_export_definition, - borderRightWidth: borderRightWidth_export_definition, - "border-right-width": borderRightWidth_export_definition, - borderBottomWidth: borderBottomWidth_export_definition, - "border-bottom-width": borderBottomWidth_export_definition, - borderLeftWidth: borderLeftWidth_export_definition, - "border-left-width": borderLeftWidth_export_definition, - borderWidth: borderWidth_export_definition, - "border-width": borderWidth_export_definition, - borderTopStyle: borderTopStyle_export_definition, - "border-top-style": borderTopStyle_export_definition, - borderRightStyle: borderRightStyle_export_definition, - "border-right-style": borderRightStyle_export_definition, - borderBottomStyle: borderBottomStyle_export_definition, - "border-bottom-style": borderBottomStyle_export_definition, - borderLeftStyle: borderLeftStyle_export_definition, - "border-left-style": borderLeftStyle_export_definition, - borderStyle: borderStyle_export_definition, - "border-style": borderStyle_export_definition, - borderTopColor: borderTopColor_export_definition, - "border-top-color": borderTopColor_export_definition, - borderRightColor: borderRightColor_export_definition, - "border-right-color": borderRightColor_export_definition, - borderBottomColor: borderBottomColor_export_definition, - "border-bottom-color": borderBottomColor_export_definition, - borderLeftColor: borderLeftColor_export_definition, - "border-left-color": borderLeftColor_export_definition, - borderColor: borderColor_export_definition, - "border-color": borderColor_export_definition, - borderTop: borderTop_export_definition, - "border-top": borderTop_export_definition, - borderRight: borderRight_export_definition, - "border-right": borderRight_export_definition, - borderBottom: borderBottom_export_definition, - "border-bottom": borderBottom_export_definition, - borderLeft: borderLeft_export_definition, - "border-left": borderLeft_export_definition, - border: border_export_definition, - borderCollapse: borderCollapse_export_definition, - "border-collapse": borderCollapse_export_definition, - borderSpacing: borderSpacing_export_definition, - "border-spacing": borderSpacing_export_definition, - bottom: bottom_export_definition, - clear: clear_export_definition, - clip: clip_export_definition, - color: color_export_definition, - display: display_export_definition, - flexGrow: flexGrow_export_definition, - "flex-grow": flexGrow_export_definition, - flexShrink: flexShrink_export_definition, - "flex-shrink": flexShrink_export_definition, - flexBasis: flexBasis_export_definition, - "flex-basis": flexBasis_export_definition, - flex: flex_export_definition, - float: float_export_definition, - floodColor: floodColor_export_definition, - "flood-color": floodColor_export_definition, - fontStyle: fontStyle_export_definition, - "font-style": fontStyle_export_definition, - fontVariant: fontVariant_export_definition, - "font-variant": fontVariant_export_definition, - fontWeight: fontWeight_export_definition, - "font-weight": fontWeight_export_definition, - fontSize: fontSize_export_definition, - "font-size": fontSize_export_definition, - lineHeight: lineHeight_export_definition, - "line-height": lineHeight_export_definition, - fontFamily: fontFamily_export_definition, - "font-family": fontFamily_export_definition, - font: font_export_definition, - height: height_export_definition, - left: left_export_definition, - lightingColor: lightingColor_export_definition, - "lighting-color": lightingColor_export_definition, - marginTop: marginTop_export_definition, - "margin-top": marginTop_export_definition, - marginRight: marginRight_export_definition, - "margin-right": marginRight_export_definition, - marginBottom: marginBottom_export_definition, - "margin-bottom": marginBottom_export_definition, - marginLeft: marginLeft_export_definition, - "margin-left": marginLeft_export_definition, - margin: margin_export_definition, - opacity: opacity_export_definition, - outlineColor: outlineColor_export_definition, - "outline-color": outlineColor_export_definition, - paddingTop: paddingTop_export_definition, - "padding-top": paddingTop_export_definition, - paddingRight: paddingRight_export_definition, - "padding-right": paddingRight_export_definition, - paddingBottom: paddingBottom_export_definition, - "padding-bottom": paddingBottom_export_definition, - paddingLeft: paddingLeft_export_definition, - "padding-left": paddingLeft_export_definition, - padding: padding_export_definition, - right: right_export_definition, - stopColor: stopColor_export_definition, - "stop-color": stopColor_export_definition, - top: top_export_definition, - webkitBorderAfterColor: webkitBorderAfterColor_export_definition, - "-webkit-border-after-color": webkitBorderAfterColor_export_definition, - "WebkitBorderAfterColor": webkitBorderAfterColor_export_definition, - webkitBorderBeforeColor: webkitBorderBeforeColor_export_definition, - "-webkit-border-before-color": webkitBorderBeforeColor_export_definition, - "WebkitBorderBeforeColor": webkitBorderBeforeColor_export_definition, - webkitBorderEndColor: webkitBorderEndColor_export_definition, - "-webkit-border-end-color": webkitBorderEndColor_export_definition, - "WebkitBorderEndColor": webkitBorderEndColor_export_definition, - webkitBorderStartColor: webkitBorderStartColor_export_definition, - "-webkit-border-start-color": webkitBorderStartColor_export_definition, - "WebkitBorderStartColor": webkitBorderStartColor_export_definition, - webkitColumnRuleColor: webkitColumnRuleColor_export_definition, - "-webkit-column-rule-color": webkitColumnRuleColor_export_definition, - "WebkitColumnRuleColor": webkitColumnRuleColor_export_definition, - webkitTapHighlightColor: webkitTapHighlightColor_export_definition, - "-webkit-tap-highlight-color": webkitTapHighlightColor_export_definition, - "WebkitTapHighlightColor": webkitTapHighlightColor_export_definition, - webkitTextEmphasisColor: webkitTextEmphasisColor_export_definition, - "-webkit-text-emphasis-color": webkitTextEmphasisColor_export_definition, - "WebkitTextEmphasisColor": webkitTextEmphasisColor_export_definition, - webkitTextFillColor: webkitTextFillColor_export_definition, - "-webkit-text-fill-color": webkitTextFillColor_export_definition, - "WebkitTextFillColor": webkitTextFillColor_export_definition, - webkitTextStrokeColor: webkitTextStrokeColor_export_definition, - "-webkit-text-stroke-color": webkitTextStrokeColor_export_definition, - "WebkitTextStrokeColor": webkitTextStrokeColor_export_definition, - width: width_export_definition -}; diff --git a/vanilla/node_modules/cssstyle/lib/generated/propertyDefinitions.js b/vanilla/node_modules/cssstyle/lib/generated/propertyDefinitions.js deleted file mode 100644 index c55da00..0000000 --- a/vanilla/node_modules/cssstyle/lib/generated/propertyDefinitions.js +++ /dev/null @@ -1,13033 +0,0 @@ -"use strict"; -// autogenerated - 2026-01-06 - -module.exports = new Map([ - [ - "-webkit-flex-wrap", - { - "name": "-webkit-flex-wrap", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-flex-wrap", - "legacyAliasOf": "flex-wrap", - "styleDeclaration": [ - "-webkit-flex-wrap", - "WebkitFlexWrap", - "webkitFlexWrap" - ], - "extended": [], - "syntax": "nowrap | wrap | wrap-reverse" - } - ], - [ - "-webkit-line-clamp", - { - "name": "-webkit-line-clamp", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef--webkit-line-clamp", - "initial": "none", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "-webkit-line-clamp", - "WebkitLineClamp", - "webkitLineClamp" - ], - "syntax": "none | <integer [1,∞]>", - "extended": [] - } - ], - [ - "-webkit-mask-box-image-outset", - { - "name": "-webkit-mask-box-image-outset", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-outset", - "legacyAliasOf": "mask-border-outset", - "styleDeclaration": [ - "-webkit-mask-box-image-outset", - "WebkitMaskBoxImageOutset", - "webkitMaskBoxImageOutset" - ], - "extended": [], - "syntax": "[ <length> | <number> ]{1,4}" - } - ], - [ - "-webkit-mask-box-image-repeat", - { - "name": "-webkit-mask-box-image-repeat", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-repeat", - "legacyAliasOf": "mask-border-repeat", - "styleDeclaration": [ - "-webkit-mask-box-image-repeat", - "WebkitMaskBoxImageRepeat", - "webkitMaskBoxImageRepeat" - ], - "extended": [], - "syntax": "[ stretch | repeat | round | space ]{1,2}" - } - ], - [ - "-webkit-mask-box-image-slice", - { - "name": "-webkit-mask-box-image-slice", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-slice", - "legacyAliasOf": "mask-border-slice", - "styleDeclaration": [ - "-webkit-mask-box-image-slice", - "WebkitMaskBoxImageSlice", - "webkitMaskBoxImageSlice" - ], - "extended": [], - "syntax": "[ <number> | <percentage> ]{1,4} fill?" - } - ], - [ - "-webkit-mask-box-image-source", - { - "name": "-webkit-mask-box-image-source", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-source", - "legacyAliasOf": "mask-border-source", - "styleDeclaration": [ - "-webkit-mask-box-image-source", - "WebkitMaskBoxImageSource", - "webkitMaskBoxImageSource" - ], - "extended": [], - "syntax": "none | <image>" - } - ], - [ - "-webkit-mask-box-image-width", - { - "name": "-webkit-mask-box-image-width", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-width", - "legacyAliasOf": "mask-border-width", - "styleDeclaration": [ - "-webkit-mask-box-image-width", - "WebkitMaskBoxImageWidth", - "webkitMaskBoxImageWidth" - ], - "extended": [], - "syntax": "[ <length-percentage> | <number> | auto ]{1,4}" - } - ], - [ - "-webkit-text-fill-color", - { - "name": "-webkit-text-fill-color", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-text-fill-color", - "initial": "currentcolor", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "an RGBA color", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "media": "visual", - "styleDeclaration": [ - "-webkit-text-fill-color", - "WebkitTextFillColor", - "webkitTextFillColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "-webkit-text-size-adjust", - { - "name": "-webkit-text-size-adjust", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-text-size-adjust", - "legacyAliasOf": "text-size-adjust", - "styleDeclaration": [ - "-webkit-text-size-adjust", - "WebkitTextSizeAdjust", - "webkitTextSizeAdjust" - ], - "extended": [], - "syntax": "auto | none | <percentage [0,∞]>" - } - ], - [ - "-webkit-text-stroke", - { - "name": "-webkit-text-stroke", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-text-stroke", - "initial": "See individual properties", - "appliesTo": "See individual properties", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "See individual properties", - "canonicalOrder": "per grammar", - "animationType": "See individual properties", - "media": "visual", - "styleDeclaration": [ - "-webkit-text-stroke", - "WebkitTextStroke", - "webkitTextStroke" - ], - "syntax": "<line-width> || <color>", - "extended": [] - } - ], - [ - "-webkit-text-stroke-color", - { - "name": "-webkit-text-stroke-color", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-text-stroke-color", - "initial": "currentcolor", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "an RGBA color", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "media": "visual", - "styleDeclaration": [ - "-webkit-text-stroke-color", - "WebkitTextStrokeColor", - "webkitTextStrokeColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "-webkit-text-stroke-width", - { - "name": "-webkit-text-stroke-width", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-text-stroke-width", - "initial": "0", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "-webkit-text-stroke-width", - "WebkitTextStrokeWidth", - "webkitTextStrokeWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "-webkit-transform", - { - "name": "-webkit-transform", - "href": "https://compat.spec.whatwg.org/#propdef--webkit-transform", - "legacyAliasOf": "transform", - "styleDeclaration": [ - "-webkit-transform", - "WebkitTransform", - "webkitTransform" - ], - "extended": [], - "syntax": "none | <transform-list>" - } - ], - [ - "accent-color", - { - "name": "accent-color", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-accent-color", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "the keyword auto or a computed color", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "accent-color", - "accentColor" - ], - "syntax": "auto | <color>", - "extended": [] - } - ], - [ - "align-content", - { - "name": "align-content", - "href": "https://drafts.csswg.org/css-align-3/#propdef-align-content", - "initial": "normal", - "appliesTo": "block containers, multicol containers, flex containers, and grid containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "align-content", - "alignContent" - ], - "syntax": "normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>", - "extended": [] - } - ], - [ - "align-items", - { - "name": "align-items", - "href": "https://drafts.csswg.org/css-align-3/#propdef-align-items", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "align-items", - "alignItems" - ], - "syntax": "normal | stretch | <baseline-position> | <overflow-position>? <self-position> | anchor-center", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "align-self", - { - "name": "align-self", - "href": "https://drafts.csswg.org/css-align-3/#propdef-align-self", - "initial": "auto", - "appliesTo": "flex items, grid items, and absolutely-positioned boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "align-self", - "alignSelf" - ], - "syntax": "auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position> | anchor-center", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "alignment-baseline", - { - "name": "alignment-baseline", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-alignment-baseline", - "initial": "baseline", - "appliesTo": "inline-level boxes, flex items, grid items, table cells, and SVG text content elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "alignment-baseline", - "alignmentBaseline" - ], - "syntax": "baseline | text-bottom | alphabetic | ideographic | middle | central | mathematical | text-top", - "extended": [] - } - ], - [ - "all", - { - "name": "all", - "href": "https://drafts.csswg.org/css-cascade-5/#propdef-all", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "all" - ], - "syntax": "initial | inherit | unset | revert | revert-layer | revert-rule", - "extended": [] - } - ], - [ - "anchor-name", - { - "name": "anchor-name", - "href": "https://drafts.csswg.org/css-anchor-position-1/#propdef-anchor-name", - "initial": "none", - "appliesTo": "all elements that generate a principal box", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "anchor-name", - "anchorName" - ], - "syntax": "none | <dashed-ident>#", - "extended": [] - } - ], - [ - "anchor-scope", - { - "name": "anchor-scope", - "href": "https://drafts.csswg.org/css-anchor-position-1/#propdef-anchor-scope", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "anchor-scope", - "anchorScope" - ], - "syntax": "none | all | <dashed-ident>#", - "extended": [] - } - ], - [ - "animation", - { - "name": "animation", - "href": "https://drafts.csswg.org/css-animations-1/#propdef-animation", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation" - ], - "syntax": "<single-animation>#", - "extended": [] - } - ], - [ - "animation-composition", - { - "name": "animation-composition", - "href": "https://drafts.csswg.org/css-animations-2/#propdef-animation-composition", - "initial": "replace", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-composition", - "animationComposition" - ], - "syntax": "<single-animation-composition>#", - "extended": [] - } - ], - [ - "animation-delay", - { - "name": "animation-delay", - "href": "https://drafts.csswg.org/css-animations-1/#propdef-animation-delay", - "initial": "0s", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a duration", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-delay", - "animationDelay" - ], - "syntax": "<time>#", - "extended": [] - } - ], - [ - "animation-direction", - { - "name": "animation-direction", - "href": "https://drafts.csswg.org/css-animations-1/#propdef-animation-direction", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-direction", - "animationDirection" - ], - "syntax": "<single-animation-direction>#", - "extended": [] - } - ], - [ - "animation-duration", - { - "name": "animation-duration", - "href": "https://drafts.csswg.org/css-animations-2/#propdef-animation-duration", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item either a time or the keyword auto", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-duration", - "animationDuration" - ], - "syntax": "[ auto | <time [0s,∞]> ]#", - "extended": [] - } - ], - [ - "animation-fill-mode", - { - "name": "animation-fill-mode", - "href": "https://drafts.csswg.org/css-animations-1/#propdef-animation-fill-mode", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-fill-mode", - "animationFillMode" - ], - "syntax": "<single-animation-fill-mode>#", - "extended": [] - } - ], - [ - "animation-iteration-count", - { - "name": "animation-iteration-count", - "href": "https://drafts.csswg.org/css-animations-1/#propdef-animation-iteration-count", - "initial": "1", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item either a number or the keyword infinite", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-iteration-count", - "animationIterationCount" - ], - "syntax": "<single-animation-iteration-count>#", - "extended": [] - } - ], - [ - "animation-name", - { - "name": "animation-name", - "href": "https://drafts.csswg.org/css-animations-1/#propdef-animation-name", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item either a case-sensitive css identifier or the keyword none", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-name", - "animationName" - ], - "syntax": "[ none | <keyframes-name> ]#", - "extended": [] - } - ], - [ - "animation-play-state", - { - "name": "animation-play-state", - "href": "https://drafts.csswg.org/css-animations-1/#propdef-animation-play-state", - "initial": "running", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-play-state", - "animationPlayState" - ], - "syntax": "<single-animation-play-state>#", - "extended": [] - } - ], - [ - "animation-range", - { - "name": "animation-range", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-animation-range", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "animation-range", - "animationRange" - ], - "syntax": "[ <'animation-range-start'> <'animation-range-end'>? ]#", - "extended": [] - } - ], - [ - "animation-range-end", - { - "name": "animation-range-end", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-animation-range-end", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "relative to the specified named timeline range if one was specified, else to the entire timeline", - "computedValue": "list, each item either the keyword normal or a timeline range and progress percentage", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-range-end", - "animationRangeEnd" - ], - "syntax": "[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#", - "extended": [] - } - ], - [ - "animation-range-start", - { - "name": "animation-range-start", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-animation-range-start", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "relative to the specified named timeline range if one was specified, else to the entire timeline", - "computedValue": "list, each item either the keyword normal or a timeline range and progress percentage", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-range-start", - "animationRangeStart" - ], - "syntax": "[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#", - "extended": [] - } - ], - [ - "animation-timeline", - { - "name": "animation-timeline", - "href": "https://drafts.csswg.org/css-animations-2/#propdef-animation-timeline", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item either the keyword none, the keyword auto, a case-sensitive css identifier, a computed scroll() function, or a computed view() function", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-timeline", - "animationTimeline" - ], - "syntax": "<single-animation-timeline>#", - "extended": [] - } - ], - [ - "animation-timing-function", - { - "name": "animation-timing-function", - "href": "https://drafts.csswg.org/css-animations-1/#propdef-animation-timing-function", - "initial": "ease", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a computed <easing-function>", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "animation-timing-function", - "animationTimingFunction" - ], - "syntax": "<easing-function>#", - "extended": [] - } - ], - [ - "appearance", - { - "name": "appearance", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-appearance", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "appearance" - ], - "syntax": "none | auto | base | base-select | <compat-auto> | <compat-special> | base", - "extended": [ - "https://drafts.csswg.org/css-forms-1/" - ] - } - ], - [ - "aspect-ratio", - { - "name": "aspect-ratio", - "href": "https://drafts.csswg.org/css-sizing-4/#propdef-aspect-ratio", - "initial": "auto", - "appliesTo": "all elements except inline boxes and internal ruby or table boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword or a pair of numbers", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "aspect-ratio", - "aspectRatio" - ], - "syntax": "auto || <ratio>", - "extended": [] - } - ], - [ - "backface-visibility", - { - "name": "backface-visibility", - "href": "https://drafts.csswg.org/css-transforms-2/#propdef-backface-visibility", - "initial": "visible", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "backface-visibility", - "backfaceVisibility" - ], - "syntax": "visible | hidden", - "extended": [] - } - ], - [ - "background", - { - "name": "background", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "background" - ], - "syntax": "<bg-layer>#? , <final-bg-layer>", - "extended": [] - } - ], - [ - "background-attachment", - { - "name": "background-attachment", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-attachment", - "initial": "scroll", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item the keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "background-attachment", - "backgroundAttachment" - ], - "syntax": "<attachment>#", - "extended": [] - } - ], - [ - "background-blend-mode", - { - "name": "background-blend-mode", - "href": "https://drafts.fxtf.org/compositing-2/#propdef-background-blend-mode", - "initial": "normal", - "appliesTo": "All HTML elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "media": "visual", - "animatable": "no", - "styleDeclaration": [ - "background-blend-mode", - "backgroundBlendMode" - ], - "syntax": "<mix-blend-mode>#", - "extended": [] - } - ], - [ - "background-clip", - { - "name": "background-clip", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-clip", - "initial": "border-box", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "styleDeclaration": [ - "background-clip", - "backgroundClip" - ], - "syntax": "<bg-clip>#", - "extended": [] - } - ], - [ - "background-color", - { - "name": "background-color", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-color", - "initial": "transparent", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "computed color", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "background-color", - "backgroundColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "background-image", - { - "name": "background-image", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-image", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item either an <image> or the keyword none", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "background-image", - "backgroundImage" - ], - "syntax": "<bg-image>#", - "extended": [] - } - ], - [ - "background-origin", - { - "name": "background-origin", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-origin", - "initial": "padding-box", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "styleDeclaration": [ - "background-origin", - "backgroundOrigin" - ], - "syntax": "<visual-box>#", - "extended": [] - } - ], - [ - "background-position", - { - "name": "background-position", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position", - "initial": "0% 0%", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "refer to size of background positioning area minus size of background image; see text", - "computedValue": "a list, each item a pair of offsets (horizontal and vertical) from the top left origin, each offset given as a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "styleDeclaration": [ - "background-position", - "backgroundPosition" - ], - "syntax": "<bg-position>#", - "extended": [] - } - ], - [ - "background-position-x", - { - "name": "background-position-x", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position-x", - "initial": "0%", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "refer to width of background positioning area minus width of background image", - "computedValue": "A list, each item consisting of: an offset given as a computed <length-percentage> value, plus an origin keyword", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "logicalPropertyGroup": "background-position", - "styleDeclaration": [ - "background-position-x", - "backgroundPositionX" - ], - "syntax": "[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#", - "extended": [] - } - ], - [ - "background-position-y", - { - "name": "background-position-y", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position-y", - "initial": "0%", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "refer to height of background positioning area minus height of background image", - "computedValue": "A list, each item consisting of: an offset given as a computed <length-percentage> value, plus an origin keyword", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "logicalPropertyGroup": "background-position", - "styleDeclaration": [ - "background-position-y", - "backgroundPositionY" - ], - "syntax": "[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#", - "extended": [] - } - ], - [ - "background-repeat", - { - "name": "background-repeat", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-repeat", - "initial": "repeat", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a pair of keywords, one per dimension", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "background-repeat", - "backgroundRepeat" - ], - "syntax": "<repeat-style>#", - "extended": [] - } - ], - [ - "background-repeat-x", - { - "name": "background-repeat-x", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-repeat-x", - "initial": "repeat", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "background-repeat", - "styleDeclaration": [ - "background-repeat-x", - "backgroundRepeatX" - ], - "syntax": "<repetition>#", - "extended": [] - } - ], - [ - "background-repeat-y", - { - "name": "background-repeat-y", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-repeat-y", - "initial": "repeat", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "background-repeat", - "styleDeclaration": [ - "background-repeat-y", - "backgroundRepeatY" - ], - "syntax": "<repetition>#", - "extended": [] - } - ], - [ - "background-size", - { - "name": "background-size", - "href": "https://drafts.csswg.org/css-backgrounds-4/#propdef-background-size", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "see text", - "computedValue": "list, each item a pair of sizes (one per axis) each represented as either a keyword or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "styleDeclaration": [ - "background-size", - "backgroundSize" - ], - "syntax": "<bg-size>#", - "extended": [] - } - ], - [ - "baseline-shift", - { - "name": "baseline-shift", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-baseline-shift", - "initial": "0", - "appliesTo": "inline-level boxes and SVG text content elements", - "inherited": "no", - "percentages": "refer to the used value of line-height", - "computedValue": "the specified keyword or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "baseline-shift", - "baselineShift" - ], - "syntax": "<length-percentage> | sub | super | top | center | bottom", - "extended": [] - } - ], - [ - "baseline-source", - { - "name": "baseline-source", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-baseline-source", - "initial": "auto", - "appliesTo": "inline-level boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "baseline-source", - "baselineSource" - ], - "syntax": "auto | first | last", - "extended": [] - } - ], - [ - "block-ellipsis", - { - "name": "block-ellipsis", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-block-ellipsis", - "initial": "no-ellipsis", - "appliesTo": "block containers", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "block-ellipsis", - "blockEllipsis" - ], - "syntax": "no-ellipsis | auto | <string>", - "extended": [] - } - ], - [ - "block-size", - { - "name": "block-size", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-block-size", - "initial": "auto", - "appliesTo": "Same as height and width", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as height, width", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "size", - "styleDeclaration": [ - "block-size", - "blockSize" - ], - "syntax": "<'width'>", - "extended": [] - } - ], - [ - "block-step", - { - "name": "block-step", - "href": "https://drafts.csswg.org/css-rhythm-1/#propdef-block-step", - "initial": "see individual properties", - "appliesTo": "block-level boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "block-step", - "blockStep" - ], - "syntax": "<'block-step-size'> || <'block-step-insert'> || <'block-step-align'> || <'block-step-round'>", - "extended": [] - } - ], - [ - "block-step-align", - { - "name": "block-step-align", - "href": "https://drafts.csswg.org/css-rhythm-1/#propdef-block-step-align", - "initial": "auto", - "appliesTo": "block-level boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "block-step-align", - "blockStepAlign" - ], - "syntax": "auto | center | start | end", - "extended": [] - } - ], - [ - "block-step-insert", - { - "name": "block-step-insert", - "href": "https://drafts.csswg.org/css-rhythm-1/#propdef-block-step-insert", - "initial": "margin-box", - "appliesTo": "block-level boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "block-step-insert", - "blockStepInsert" - ], - "syntax": "margin-box | padding-box | content-box", - "extended": [] - } - ], - [ - "block-step-round", - { - "name": "block-step-round", - "href": "https://drafts.csswg.org/css-rhythm-1/#propdef-block-step-round", - "initial": "up", - "appliesTo": "block-level boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "block-step-round", - "blockStepRound" - ], - "syntax": "up | down | nearest", - "extended": [] - } - ], - [ - "block-step-size", - { - "name": "block-step-size", - "href": "https://drafts.csswg.org/css-rhythm-1/#propdef-block-step-size", - "initial": "none", - "appliesTo": "block-level boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword or absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "block-step-size", - "blockStepSize" - ], - "syntax": "none | <length [0,∞]>", - "extended": [] - } - ], - [ - "bookmark-label", - { - "name": "bookmark-label", - "href": "https://drafts.csswg.org/css-content-3/#propdef-bookmark-label", - "initial": "content(text)", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "bookmark-label", - "bookmarkLabel" - ], - "syntax": "<content-list>", - "extended": [] - } - ], - [ - "bookmark-level", - { - "name": "bookmark-level", - "href": "https://drafts.csswg.org/css-content-3/#propdef-bookmark-level", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the keyword none or the specified integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "bookmark-level", - "bookmarkLevel" - ], - "syntax": "none | <integer [1,∞]>", - "extended": [] - } - ], - [ - "bookmark-state", - { - "name": "bookmark-state", - "href": "https://drafts.csswg.org/css-content-3/#propdef-bookmark-state", - "initial": "open", - "appliesTo": "block-level elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "bookmark-state", - "bookmarkState" - ], - "syntax": "open | closed", - "extended": [] - } - ], - [ - "border", - { - "name": "border", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-block", - { - "name": "border-block", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-block", - "borderBlock" - ], - "syntax": "<'border-block-start'>", - "extended": [] - } - ], - [ - "border-block-color", - { - "name": "border-block-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-color", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-block-color", - "borderBlockColor" - ], - "syntax": "<'border-top-color'>{1,2}", - "extended": [] - } - ], - [ - "border-block-end", - { - "name": "border-block-end", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-end", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-block-end", - "borderBlockEnd" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-block-end-color", - { - "name": "border-block-end-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-end-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-block-end-color", - "borderBlockEndColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-block-end-radius", - { - "name": "border-block-end-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-end-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-block-end-radius", - "borderBlockEndRadius" - ], - "syntax": "<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?", - "extended": [] - } - ], - [ - "border-block-end-style", - { - "name": "border-block-end-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-end-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-block-end-style", - "borderBlockEndStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-block-end-width", - { - "name": "border-block-end-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-end-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-block-end-width", - "borderBlockEndWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-block-start", - { - "name": "border-block-start", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-start", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-block-start", - "borderBlockStart" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-block-start-color", - { - "name": "border-block-start-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-start-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-block-start-color", - "borderBlockStartColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-block-start-radius", - { - "name": "border-block-start-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-start-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-block-start-radius", - "borderBlockStartRadius" - ], - "syntax": "<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?", - "extended": [] - } - ], - [ - "border-block-start-style", - { - "name": "border-block-start-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-start-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-block-start-style", - "borderBlockStartStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-block-start-width", - { - "name": "border-block-start-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-start-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-block-start-width", - "borderBlockStartWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-block-style", - { - "name": "border-block-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-style", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-block-style", - "borderBlockStyle" - ], - "syntax": "<'border-top-style'>{1,2}", - "extended": [] - } - ], - [ - "border-block-width", - { - "name": "border-block-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-block-width", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-block-width", - "borderBlockWidth" - ], - "syntax": "<'border-top-width'>{1,2}", - "extended": [] - } - ], - [ - "border-bottom", - { - "name": "border-bottom", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-bottom", - "borderBottom" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-bottom-color", - { - "name": "border-bottom-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-bottom-color", - "borderBottomColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-bottom-left-radius", - { - "name": "border-bottom-left-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-left-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "pair of computed <length-percentage> values", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-radius", - "styleDeclaration": [ - "border-bottom-left-radius", - "borderBottomLeftRadius" - ], - "syntax": "<border-radius>", - "extended": [] - } - ], - [ - "border-bottom-radius", - { - "name": "border-bottom-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-bottom-radius", - "borderBottomRadius" - ], - "syntax": "<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?", - "extended": [] - } - ], - [ - "border-bottom-right-radius", - { - "name": "border-bottom-right-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-right-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "pair of computed <length-percentage> values", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-radius", - "styleDeclaration": [ - "border-bottom-right-radius", - "borderBottomRightRadius" - ], - "syntax": "<border-radius>", - "extended": [] - } - ], - [ - "border-bottom-style", - { - "name": "border-bottom-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-bottom-style", - "borderBottomStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-bottom-width", - { - "name": "border-bottom-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-bottom-width", - "borderBottomWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-boundary", - { - "name": "border-boundary", - "href": "https://drafts.csswg.org/css-round-display-1/#propdef-border-boundary", - "initial": "none", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "border-boundary", - "borderBoundary" - ], - "syntax": "none | parent | display", - "extended": [] - } - ], - [ - "border-clip", - { - "name": "border-clip", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-clip", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-clip", - "borderClip" - ], - "syntax": "<'border-top-clip'>", - "extended": [] - } - ], - [ - "border-collapse", - { - "name": "border-collapse", - "href": "https://drafts.csswg.org/css-tables-3/#propdef-border-collapse", - "initial": "separate", - "appliesTo": "table grid boxes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "border-collapse", - "borderCollapse" - ], - "syntax": "separate | collapse", - "extended": [] - } - ], - [ - "border-color", - { - "name": "border-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-color", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-color", - "borderColor" - ], - "syntax": "[ <color> | <image-1D> ]{1,4}", - "extended": [] - } - ], - [ - "border-end-end-radius", - { - "name": "border-end-end-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-end-end-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "pair of computed <length-percentage> values", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-radius", - "styleDeclaration": [ - "border-end-end-radius", - "borderEndEndRadius" - ], - "syntax": "<border-radius>", - "extended": [] - } - ], - [ - "border-end-start-radius", - { - "name": "border-end-start-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-end-start-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "pair of computed <length-percentage> values", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-radius", - "styleDeclaration": [ - "border-end-start-radius", - "borderEndStartRadius" - ], - "syntax": "<border-radius>", - "extended": [] - } - ], - [ - "border-image", - { - "name": "border-image", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-image", - "initial": "See individual properties", - "appliesTo": "See individual properties", - "inherited": "no", - "percentages": "N/A", - "computedValue": "See individual properties", - "canonicalOrder": "per grammar", - "animationType": "See individual properties", - "styleDeclaration": [ - "border-image", - "borderImage" - ], - "syntax": "<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>", - "extended": [] - } - ], - [ - "border-image-outset", - { - "name": "border-image-outset", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-image-outset", - "initial": "0", - "appliesTo": "All elements, except internal table elements when border-collapse is collapse", - "inherited": "no", - "percentages": "N/A", - "computedValue": "four values, each a number or absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "border-image-outset", - "borderImageOutset" - ], - "syntax": "[ <length [0,∞]> | <number [0,∞]> ]{1,4}", - "extended": [] - } - ], - [ - "border-image-repeat", - { - "name": "border-image-repeat", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-image-repeat", - "initial": "stretch", - "appliesTo": "All elements, except internal table elements when border-collapse is collapse", - "inherited": "no", - "percentages": "N/A", - "computedValue": "two keywords, one per axis", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "border-image-repeat", - "borderImageRepeat" - ], - "syntax": "[ stretch | repeat | round | space ]{1,2}", - "extended": [] - } - ], - [ - "border-image-slice", - { - "name": "border-image-slice", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-image-slice", - "initial": "100%", - "appliesTo": "All elements, except internal table elements when border-collapse is collapse", - "inherited": "no", - "percentages": "refer to size of the border image", - "computedValue": "four values, each either a number or percentage; plus a fill keyword if specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "border-image-slice", - "borderImageSlice" - ], - "syntax": "[<number [0,∞]> | <percentage [0,∞]>]{1,4} && fill?", - "extended": [] - } - ], - [ - "border-image-source", - { - "name": "border-image-source", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-image-source", - "initial": "none", - "appliesTo": "All elements, except internal table elements when border-collapse is collapse", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the keyword none or the computed <image>", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "border-image-source", - "borderImageSource" - ], - "syntax": "none | <image>", - "extended": [] - } - ], - [ - "border-image-width", - { - "name": "border-image-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-image-width", - "initial": "1", - "appliesTo": "All elements, except internal table elements when border-collapse is collapse", - "inherited": "no", - "percentages": "Relative to width/height of the border image area", - "computedValue": "four values, each either a number, the keyword auto, or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "border-image-width", - "borderImageWidth" - ], - "syntax": "[ <length-percentage [0,∞]> | <number [0,∞]> | auto ]{1,4}", - "extended": [] - } - ], - [ - "border-inline", - { - "name": "border-inline", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-inline", - "borderInline" - ], - "syntax": "<'border-block-start'>", - "extended": [] - } - ], - [ - "border-inline-color", - { - "name": "border-inline-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-color", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-inline-color", - "borderInlineColor" - ], - "syntax": "<'border-top-color'>{1,2}", - "extended": [] - } - ], - [ - "border-inline-end", - { - "name": "border-inline-end", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-inline-end", - "borderInlineEnd" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-inline-end-color", - { - "name": "border-inline-end-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-inline-end-color", - "borderInlineEndColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-inline-end-radius", - { - "name": "border-inline-end-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-inline-end-radius", - "borderInlineEndRadius" - ], - "syntax": "<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?", - "extended": [] - } - ], - [ - "border-inline-end-style", - { - "name": "border-inline-end-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-inline-end-style", - "borderInlineEndStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-inline-end-width", - { - "name": "border-inline-end-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-inline-end-width", - "borderInlineEndWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-inline-start", - { - "name": "border-inline-start", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-inline-start", - "borderInlineStart" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-inline-start-color", - { - "name": "border-inline-start-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-inline-start-color", - "borderInlineStartColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-inline-start-radius", - { - "name": "border-inline-start-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-inline-start-radius", - "borderInlineStartRadius" - ], - "syntax": "<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?", - "extended": [] - } - ], - [ - "border-inline-start-style", - { - "name": "border-inline-start-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-inline-start-style", - "borderInlineStartStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-inline-start-width", - { - "name": "border-inline-start-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-inline-start-width", - "borderInlineStartWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-inline-style", - { - "name": "border-inline-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-style", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-inline-style", - "borderInlineStyle" - ], - "syntax": "<'border-top-style'>{1,2}", - "extended": [] - } - ], - [ - "border-inline-width", - { - "name": "border-inline-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-inline-width", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-inline-width", - "borderInlineWidth" - ], - "syntax": "<'border-top-width'>{1,2}", - "extended": [] - } - ], - [ - "border-left", - { - "name": "border-left", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-left", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-left", - "borderLeft" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-left-color", - { - "name": "border-left-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-left-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-left-color", - "borderLeftColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-left-radius", - { - "name": "border-left-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-left-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-left-radius", - "borderLeftRadius" - ], - "syntax": "<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?", - "extended": [] - } - ], - [ - "border-left-style", - { - "name": "border-left-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-left-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-left-style", - "borderLeftStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-left-width", - { - "name": "border-left-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-left-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-left-width", - "borderLeftWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-limit", - { - "name": "border-limit", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-limit", - "initial": "all", - "appliesTo": "all elements, except table element when border-collapse is collapse", - "inherited": "no", - "percentages": "relative to border-box", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "border-limit", - "borderLimit" - ], - "syntax": "all | [ sides | corners ] <length-percentage [0,∞]>? | [ top | right | bottom | left ] <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "border-radius", - { - "name": "border-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-radius", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-radius", - "borderRadius" - ], - "syntax": "<length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?", - "extended": [] - } - ], - [ - "border-right", - { - "name": "border-right", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-right", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-right", - "borderRight" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-right-color", - { - "name": "border-right-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-right-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-right-color", - "borderRightColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-right-radius", - { - "name": "border-right-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-right-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-right-radius", - "borderRightRadius" - ], - "syntax": "<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?", - "extended": [] - } - ], - [ - "border-right-style", - { - "name": "border-right-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-right-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-right-style", - "borderRightStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-right-width", - { - "name": "border-right-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-right-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-right-width", - "borderRightWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-shape", - { - "name": "border-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-shape", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "see prose", - "computedValue": "list, each item a computed color", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "border-shape", - "borderShape" - ], - "syntax": "none | [ <basic-shape> <geometry-box>?]{1,2}", - "extended": [] - } - ], - [ - "border-spacing", - { - "name": "border-spacing", - "href": "https://drafts.csswg.org/css-tables-3/#propdef-border-spacing", - "initial": "0px 0px", - "appliesTo": "table grid boxes when border-collapse is separate", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "two absolute lengths", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "border-spacing", - "borderSpacing" - ], - "syntax": "<length>{1,2}", - "extended": [] - } - ], - [ - "border-start-end-radius", - { - "name": "border-start-end-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-start-end-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "pair of computed <length-percentage> values", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-radius", - "styleDeclaration": [ - "border-start-end-radius", - "borderStartEndRadius" - ], - "syntax": "<border-radius>", - "extended": [] - } - ], - [ - "border-start-start-radius", - { - "name": "border-start-start-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-start-start-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "pair of computed <length-percentage> values", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-radius", - "styleDeclaration": [ - "border-start-start-radius", - "borderStartStartRadius" - ], - "syntax": "<border-radius>", - "extended": [] - } - ], - [ - "border-style", - { - "name": "border-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-style", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-style", - "borderStyle" - ], - "syntax": "<'border-top-style'>{1,4}", - "extended": [] - } - ], - [ - "border-top", - { - "name": "border-top", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top", - "initial": "See individual properties", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-top", - "borderTop" - ], - "syntax": "<line-width> || <line-style> || <color>", - "extended": [] - } - ], - [ - "border-top-color", - { - "name": "border-top-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top-color", - "initial": "currentcolor", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the computed color and/or a one-dimensional image function", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "logicalPropertyGroup": "border-color", - "styleDeclaration": [ - "border-top-color", - "borderTopColor" - ], - "syntax": "<color> | <image-1D>", - "extended": [] - } - ], - [ - "border-top-left-radius", - { - "name": "border-top-left-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top-left-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "pair of computed <length-percentage> values", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-radius", - "styleDeclaration": [ - "border-top-left-radius", - "borderTopLeftRadius" - ], - "syntax": "<border-radius>", - "extended": [] - } - ], - [ - "border-top-radius", - { - "name": "border-top-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-top-radius", - "borderTopRadius" - ], - "syntax": "<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?", - "extended": [] - } - ], - [ - "border-top-right-radius", - { - "name": "border-top-right-radius", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top-right-radius", - "initial": "0", - "appliesTo": "all elements (but see prose)", - "inherited": "no", - "percentages": "Refer to corresponding dimension of the border box.", - "computedValue": "pair of computed <length-percentage> values", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-radius", - "styleDeclaration": [ - "border-top-right-radius", - "borderTopRightRadius" - ], - "syntax": "<border-radius>", - "extended": [] - } - ], - [ - "border-top-style", - { - "name": "border-top-style", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top-style", - "initial": "none", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "border-style", - "styleDeclaration": [ - "border-top-style", - "borderTopStyle" - ], - "syntax": "<line-style>", - "extended": [] - } - ], - [ - "border-top-width", - { - "name": "border-top-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-top-width", - "initial": "medium", - "appliesTo": "all elements except ruby base containers and ruby annotation containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width; zero if the border style is none or hidden", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "logicalPropertyGroup": "border-width", - "styleDeclaration": [ - "border-top-width", - "borderTopWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "border-width", - { - "name": "border-width", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-border-width", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "border-width", - "borderWidth" - ], - "syntax": "<'border-top-width'>{1,4}", - "extended": [] - } - ], - [ - "bottom", - { - "name": "bottom", - "href": "https://drafts.csswg.org/css-position-3/#propdef-bottom", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "bottom" - ], - "syntax": "auto | <length-percentage> | <anchor()> | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "box-decoration-break", - { - "name": "box-decoration-break", - "href": "https://drafts.csswg.org/css-break-4/#propdef-box-decoration-break", - "initial": "slice", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "box-decoration-break", - "boxDecorationBreak" - ], - "syntax": "slice | clone", - "extended": [] - } - ], - [ - "box-shadow", - { - "name": "box-shadow", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-box-shadow", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "see individual properties", - "styleDeclaration": [ - "box-shadow", - "boxShadow" - ], - "syntax": "<spread-shadow>#", - "extended": [] - } - ], - [ - "box-shadow-blur", - { - "name": "box-shadow-blur", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-blur", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a <length>", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "box-shadow-blur", - "boxShadowBlur" - ], - "syntax": "<length [0,∞]>#", - "extended": [] - } - ], - [ - "box-shadow-color", - { - "name": "box-shadow-color", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-color", - "initial": "currentcolor", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a computed color", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "box-shadow-color", - "boxShadowColor" - ], - "syntax": "<color>#", - "extended": [] - } - ], - [ - "box-shadow-offset", - { - "name": "box-shadow-offset", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-offset", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item either none or a pair of offsets (horizontal and vertical) from the element‘s box", - "canonicalOrder": "per grammar", - "animationType": "by computed value, treating none as 0 0 when interpolated with non-none values.", - "styleDeclaration": [ - "box-shadow-offset", - "boxShadowOffset" - ], - "syntax": "[ none | <length>{1,2} ]#", - "extended": [] - } - ], - [ - "box-shadow-position", - { - "name": "box-shadow-position", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-position", - "initial": "outset", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item one of the keywords", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "box-shadow-position", - "boxShadowPosition" - ], - "syntax": "[ outset | inset ]#", - "extended": [] - } - ], - [ - "box-shadow-spread", - { - "name": "box-shadow-spread", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-spread", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a <length>", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "box-shadow-spread", - "boxShadowSpread" - ], - "syntax": "<length>#", - "extended": [] - } - ], - [ - "box-sizing", - { - "name": "box-sizing", - "href": "https://drafts.csswg.org/css-sizing-3/#propdef-box-sizing", - "initial": "content-box", - "appliesTo": "all elements that accept width or height", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "box-sizing", - "boxSizing" - ], - "syntax": "content-box | border-box", - "extended": [] - } - ], - [ - "box-snap", - { - "name": "box-snap", - "href": "https://drafts.csswg.org/css-line-grid-1/#propdef-box-snap", - "initial": "none", - "appliesTo": "block-level boxes and internal table elements except table cells", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "box-snap", - "boxSnap" - ], - "syntax": "none | block-start | block-end | center | baseline | last-baseline", - "extended": [] - } - ], - [ - "break-after", - { - "name": "break-after", - "href": "https://drafts.csswg.org/css-break-4/#propdef-break-after", - "initial": "auto", - "appliesTo": "block-level boxes, grid items, flex items, table row groups, table rows (but see prose)", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "break-after", - "breakAfter" - ], - "syntax": "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region", - "extended": [] - } - ], - [ - "break-before", - { - "name": "break-before", - "href": "https://drafts.csswg.org/css-break-4/#propdef-break-before", - "initial": "auto", - "appliesTo": "block-level boxes, grid items, flex items, table row groups, table rows (but see prose)", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "break-before", - "breakBefore" - ], - "syntax": "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region", - "extended": [] - } - ], - [ - "break-inside", - { - "name": "break-inside", - "href": "https://drafts.csswg.org/css-break-4/#propdef-break-inside", - "initial": "auto", - "appliesTo": "all elements except inline-level boxes, internal ruby boxes, table column boxes, table column group boxes, absolutely-positioned boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "break-inside", - "breakInside" - ], - "syntax": "auto | avoid | avoid-page | avoid-column | avoid-region", - "extended": [] - } - ], - [ - "caption-side", - { - "name": "caption-side", - "href": "https://drafts.csswg.org/css-tables-3/#propdef-caption-side", - "initial": "top", - "appliesTo": "table-caption boxes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "caption-side", - "captionSide" - ], - "syntax": "top | bottom", - "extended": [] - } - ], - [ - "caret", - { - "name": "caret", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-caret", - "initial": "auto", - "appliesTo": "text or elements that accept text input", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "caret" - ], - "syntax": "<'caret-color'> || <'caret-animation'> || <'caret-shape'>", - "extended": [] - } - ], - [ - "caret-color", - { - "name": "caret-color", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-caret-color", - "initial": "auto", - "appliesTo": "text or elements that accept text input", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "The computed value for auto is auto. For <color> values, see CSS Color 4 § 14. Resolving <color> Values.", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "caret-color", - "caretColor" - ], - "syntax": "auto | <color>", - "extended": [] - } - ], - [ - "caret-shape", - { - "name": "caret-shape", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-caret-shape", - "initial": "auto", - "appliesTo": "text or elements that accept text input", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "caret-shape", - "caretShape" - ], - "syntax": "auto | bar | block | underscore", - "extended": [] - } - ], - [ - "clear", - { - "name": "clear", - "href": "https://drafts.csswg.org/css-page-floats-3/#propdef-clear", - "initial": "none", - "appliesTo": "block-level elements, floats, regions, pages", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "clear" - ], - "syntax": "inline-start | inline-end | block-start | block-end | left | right | top | bottom | both-inline | both-block | both | none", - "extended": [] - } - ], - [ - "clip", - { - "name": "clip", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-clip", - "initial": "auto", - "appliesTo": "Absolutely positioned elements. In SVG, it applies to elements which establish a new viewport, pattern elements and mask elements.", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "clip" - ], - "syntax": "<rect()> | auto", - "extended": [] - } - ], - [ - "clip-path", - { - "name": "clip-path", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-clip-path", - "initial": "none", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified, but with <url> values made absolute", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "clip-path", - "clipPath" - ], - "syntax": "<clip-source> | [ <basic-shape> || <geometry-box> ] | none", - "extended": [] - } - ], - [ - "clip-rule", - { - "name": "clip-rule", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-clip-rule", - "initial": "nonzero", - "appliesTo": "Applies to SVG graphics elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "clip-rule", - "clipRule" - ], - "syntax": "nonzero | evenodd", - "extended": [] - } - ], - [ - "color", - { - "name": "color", - "href": "https://drafts.csswg.org/css-color-4/#propdef-color", - "initial": "CanvasText", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "computed color, see resolving color values", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "color" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "color-adjust", - { - "name": "color-adjust", - "href": "https://drafts.csswg.org/css-color-adjust-1/#propdef-color-adjust", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "color-adjust", - "colorAdjust" - ], - "syntax": "<'print-color-adjust'>", - "extended": [] - } - ], - [ - "color-interpolation", - { - "name": "color-interpolation", - "href": "https://svgwg.org/svg2-draft/painting.html#ColorInterpolationProperty", - "initial": "sRGB", - "appliesTo": "container elements, graphics elements, gradient elements, ‘use’ and ‘animate’", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified", - "animationType": "discrete", - "styleDeclaration": [ - "color-interpolation", - "colorInterpolation" - ], - "syntax": "auto | sRGB | linearRGB", - "extended": [] - } - ], - [ - "color-interpolation-filters", - { - "name": "color-interpolation-filters", - "href": "https://drafts.fxtf.org/filter-effects-1/#propdef-color-interpolation-filters", - "initial": "linearRGB", - "appliesTo": "All filter primitives", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "color-interpolation-filters", - "colorInterpolationFilters" - ], - "syntax": "auto | sRGB | linearRGB", - "extended": [] - } - ], - [ - "color-scheme", - { - "name": "color-scheme", - "href": "https://drafts.csswg.org/css-color-adjust-1/#propdef-color-scheme", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "the keyword normal, or an ordered list of specified color scheme keywords", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "color-scheme", - "colorScheme" - ], - "syntax": "normal | [ light | dark | <custom-ident> ]+ && only?", - "extended": [] - } - ], - [ - "column-count", - { - "name": "column-count", - "href": "https://drafts.csswg.org/css-multicol-2/#propdef-column-count", - "initial": "auto", - "appliesTo": "block containers except table wrapper boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "column-count", - "columnCount" - ], - "syntax": "auto | <integer [1,∞]>", - "extended": [] - } - ], - [ - "column-fill", - { - "name": "column-fill", - "href": "https://drafts.csswg.org/css-multicol-2/#propdef-column-fill", - "initial": "balance", - "appliesTo": "multicol containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "column-fill", - "columnFill" - ], - "syntax": "auto | balance | balance-all", - "extended": [] - } - ], - [ - "column-gap", - { - "name": "column-gap", - "href": "https://drafts.csswg.org/css-align-3/#propdef-column-gap", - "initial": "normal", - "appliesTo": "multi-column containers, flex containers, grid containers", - "inherited": "no", - "percentages": "see § 8.3 Percentages In gap Properties", - "computedValue": "specified keyword, else a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "column-gap", - "columnGap" - ], - "syntax": "normal | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "column-rule", - { - "name": "column-rule", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-column-rule", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "column-rule", - "columnRule" - ], - "syntax": "<gap-rule-list> | <gap-auto-rule-list>", - "extended": [] - } - ], - [ - "column-rule-break", - { - "name": "column-rule-break", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-break", - "initial": "spanning-item", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "column-rule-break", - "columnRuleBreak" - ], - "syntax": "none | spanning-item | intersection", - "extended": [] - } - ], - [ - "column-rule-color", - { - "name": "column-rule-color", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-color", - "initial": "currentcolor", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "repeatable list, see § 3.4.1 Interpolation behavior.", - "styleDeclaration": [ - "column-rule-color", - "columnRuleColor" - ], - "syntax": "<line-color-list> | <auto-line-color-list>", - "extended": [] - } - ], - [ - "column-rule-outset", - { - "name": "column-rule-outset", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-outset", - "initial": "50%", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "refer to the crossing gap width", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "column-rule-outset", - "columnRuleOutset" - ], - "syntax": "<length-percentage>", - "extended": [] - } - ], - [ - "column-rule-style", - { - "name": "column-rule-style", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-style", - "initial": "none", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "column-rule-style", - "columnRuleStyle" - ], - "syntax": "<line-style-list> | <auto-line-style-list>", - "extended": [] - } - ], - [ - "column-rule-width", - { - "name": "column-rule-width", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-width", - "initial": "medium", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "list of absolute lengths, snapped as a border width", - "canonicalOrder": "per grammar", - "animationType": "repeatable list, see § 3.4.1 Interpolation behavior.", - "styleDeclaration": [ - "column-rule-width", - "columnRuleWidth" - ], - "syntax": "<line-width-list> | <auto-line-width-list>", - "extended": [] - } - ], - [ - "column-span", - { - "name": "column-span", - "href": "https://drafts.csswg.org/css-multicol-2/#propdef-column-span", - "initial": "none", - "appliesTo": "in-flow block-level elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "column-span", - "columnSpan" - ], - "syntax": "none | <integer [1,∞]> | all | auto", - "extended": [] - } - ], - [ - "column-width", - { - "name": "column-width", - "href": "https://drafts.csswg.org/css-multicol-2/#propdef-column-width", - "initial": "auto", - "appliesTo": "block containers except table wrapper boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the keyword auto or an absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "column-width", - "columnWidth" - ], - "syntax": "auto | <length [0,∞]> | min-content | max-content | fit-content(<length-percentage>)", - "extended": [ - "https://drafts.csswg.org/css-sizing-3/" - ] - } - ], - [ - "columns", - { - "name": "columns", - "href": "https://drafts.csswg.org/css-multicol-2/#propdef-columns", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "columns" - ], - "syntax": "[ <'column-width'> || <'column-count'> ] [ / <'column-height'> ]?", - "extended": [] - } - ], - [ - "contain", - { - "name": "contain", - "href": "https://drafts.csswg.org/css-contain-2/#propdef-contain", - "initial": "none", - "appliesTo": "See below", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none or one or more of size, layout, paint", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "contain" - ], - "syntax": "none | strict | content | [ [size | inline-size] || layout || style || paint ] | view-transition", - "extended": [ - "https://drafts.csswg.org/css-view-transitions-2/" - ] - } - ], - [ - "contain-intrinsic-block-size", - { - "name": "contain-intrinsic-block-size", - "href": "https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-block-size", - "initial": "none", - "appliesTo": "elements with size containment", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified, with <length> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "contain-intrinsic-size", - "styleDeclaration": [ - "contain-intrinsic-block-size", - "containIntrinsicBlockSize" - ], - "syntax": "[ auto | from-element ]? [ none | <length [0,∞]> ]", - "extended": [] - } - ], - [ - "contain-intrinsic-height", - { - "name": "contain-intrinsic-height", - "href": "https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-height", - "initial": "none", - "appliesTo": "elements with size containment", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified, with <length> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "contain-intrinsic-size", - "styleDeclaration": [ - "contain-intrinsic-height", - "containIntrinsicHeight" - ], - "syntax": "[ auto | from-element ]? [ none | <length [0,∞]> ]", - "extended": [] - } - ], - [ - "contain-intrinsic-inline-size", - { - "name": "contain-intrinsic-inline-size", - "href": "https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-inline-size", - "initial": "none", - "appliesTo": "elements with size containment", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified, with <length> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "contain-intrinsic-size", - "styleDeclaration": [ - "contain-intrinsic-inline-size", - "containIntrinsicInlineSize" - ], - "syntax": "[ auto | from-element ]? [ none | <length [0,∞]> ]", - "extended": [] - } - ], - [ - "contain-intrinsic-size", - { - "name": "contain-intrinsic-size", - "href": "https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-size", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "contain-intrinsic-size", - "containIntrinsicSize" - ], - "syntax": "[ [ auto | from-element ]? [ none | <length [0,∞]> ] ]{1,2}", - "extended": [] - } - ], - [ - "contain-intrinsic-width", - { - "name": "contain-intrinsic-width", - "href": "https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-width", - "initial": "none", - "appliesTo": "elements with size containment", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified, with <length> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "contain-intrinsic-size", - "styleDeclaration": [ - "contain-intrinsic-width", - "containIntrinsicWidth" - ], - "syntax": "[ auto | from-element ]? [ none | <length [0,∞]> ]", - "extended": [] - } - ], - [ - "container", - { - "name": "container", - "href": "https://drafts.csswg.org/css-conditional-5/#propdef-container", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "container" - ], - "syntax": "<'container-name'> [ / <'container-type'> ]?", - "extended": [] - } - ], - [ - "container-name", - { - "name": "container-name", - "href": "https://drafts.csswg.org/css-conditional-5/#propdef-container-name", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none, or an ordered list of identifiers", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "container-name", - "containerName" - ], - "syntax": "none | <custom-ident>+", - "extended": [] - } - ], - [ - "container-type", - { - "name": "container-type", - "href": "https://drafts.csswg.org/css-conditional-5/#propdef-container-type", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "container-type", - "containerType" - ], - "syntax": "normal | [ [ size | inline-size ] || scroll-state ]", - "extended": [] - } - ], - [ - "content", - { - "name": "content", - "href": "https://drafts.csswg.org/css-content-3/#propdef-content", - "initial": "normal", - "appliesTo": "all elements, tree-abiding pseudo-elements, and page margin boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "See prose below", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "content" - ], - "syntax": "normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> | <attr()> ]+ ]? | <element()>", - "extended": [ - "https://drafts.csswg.org/css-gcpm-3/" - ] - } - ], - [ - "content-visibility", - { - "name": "content-visibility", - "href": "https://drafts.csswg.org/css-contain-2/#propdef-content-visibility", - "initial": "visible", - "appliesTo": "elements for which size containment can apply", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "see § 4.1 Animating and Interpolating content-visibility", - "styleDeclaration": [ - "content-visibility", - "contentVisibility" - ], - "syntax": "visible | auto | hidden", - "extended": [] - } - ], - [ - "continue", - { - "name": "continue", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-continue", - "initial": "auto", - "appliesTo": "block containers and multicol containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "continue" - ], - "syntax": "auto | discard | collapse | -webkit-legacy | overflow | paginate | fragments", - "extended": [ - "https://drafts.csswg.org/css-overflow-5/" - ] - } - ], - [ - "corner-block-end-shape", - { - "name": "corner-block-end-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-block-end-shape", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "corner-block-end-shape", - "cornerBlockEndShape" - ], - "syntax": "<'corner-top-left-shape'>{1,2}", - "extended": [] - } - ], - [ - "corner-block-start-shape", - { - "name": "corner-block-start-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-block-start-shape", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "corner-block-start-shape", - "cornerBlockStartShape" - ], - "syntax": "<'corner-top-left-shape'>{1,2}", - "extended": [] - } - ], - [ - "corner-bottom-left-shape", - { - "name": "corner-bottom-left-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-bottom-left-shape", - "initial": "round", - "appliesTo": "all elements where border-radius can apply", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the corresponding superellipse() value", - "canonicalOrder": "per grammar", - "animationType": "see superellipse interpolation", - "logicalPropertyGroup": "corner-shape", - "styleDeclaration": [ - "corner-bottom-left-shape", - "cornerBottomLeftShape" - ], - "syntax": "<corner-shape-value>", - "extended": [] - } - ], - [ - "corner-bottom-right-shape", - { - "name": "corner-bottom-right-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-bottom-right-shape", - "initial": "round", - "appliesTo": "all elements where border-radius can apply", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the corresponding superellipse() value", - "canonicalOrder": "per grammar", - "animationType": "see superellipse interpolation", - "logicalPropertyGroup": "corner-shape", - "styleDeclaration": [ - "corner-bottom-right-shape", - "cornerBottomRightShape" - ], - "syntax": "<corner-shape-value>", - "extended": [] - } - ], - [ - "corner-bottom-shape", - { - "name": "corner-bottom-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-bottom-shape", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "corner-bottom-shape", - "cornerBottomShape" - ], - "syntax": "<'corner-top-left-shape'>{1,2}", - "extended": [] - } - ], - [ - "corner-end-end-shape", - { - "name": "corner-end-end-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-end-end-shape", - "initial": "round", - "appliesTo": "all elements where border-radius can apply", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the corresponding superellipse() value", - "canonicalOrder": "per grammar", - "animationType": "see superellipse interpolation", - "logicalPropertyGroup": "corner-shape", - "styleDeclaration": [ - "corner-end-end-shape", - "cornerEndEndShape" - ], - "syntax": "<corner-shape-value>", - "extended": [] - } - ], - [ - "corner-end-start-shape", - { - "name": "corner-end-start-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-end-start-shape", - "initial": "round", - "appliesTo": "all elements where border-radius can apply", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the corresponding superellipse() value", - "canonicalOrder": "per grammar", - "animationType": "see superellipse interpolation", - "logicalPropertyGroup": "corner-shape", - "styleDeclaration": [ - "corner-end-start-shape", - "cornerEndStartShape" - ], - "syntax": "<corner-shape-value>", - "extended": [] - } - ], - [ - "corner-inline-end-shape", - { - "name": "corner-inline-end-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-inline-end-shape", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "corner-inline-end-shape", - "cornerInlineEndShape" - ], - "syntax": "<'corner-top-left-shape'>{1,2}", - "extended": [] - } - ], - [ - "corner-inline-start-shape", - { - "name": "corner-inline-start-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-inline-start-shape", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "corner-inline-start-shape", - "cornerInlineStartShape" - ], - "syntax": "<'corner-top-left-shape'>{1,2}", - "extended": [] - } - ], - [ - "corner-left-shape", - { - "name": "corner-left-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-left-shape", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "corner-left-shape", - "cornerLeftShape" - ], - "syntax": "<'corner-top-left-shape'>{1,2}", - "extended": [] - } - ], - [ - "corner-right-shape", - { - "name": "corner-right-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-right-shape", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "corner-right-shape", - "cornerRightShape" - ], - "syntax": "<'corner-top-left-shape'>{1,2}", - "extended": [] - } - ], - [ - "corner-shape", - { - "name": "corner-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-shape", - "initial": "round", - "appliesTo": "all elements where border-radius can apply", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "corner-shape", - "cornerShape" - ], - "syntax": "<'corner-top-left-shape'>{1,4}", - "extended": [] - } - ], - [ - "corner-start-end-shape", - { - "name": "corner-start-end-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-start-end-shape", - "initial": "round", - "appliesTo": "all elements where border-radius can apply", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the corresponding superellipse() value", - "canonicalOrder": "per grammar", - "animationType": "see superellipse interpolation", - "logicalPropertyGroup": "corner-shape", - "styleDeclaration": [ - "corner-start-end-shape", - "cornerStartEndShape" - ], - "syntax": "<corner-shape-value>", - "extended": [] - } - ], - [ - "corner-start-start-shape", - { - "name": "corner-start-start-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-start-start-shape", - "initial": "round", - "appliesTo": "all elements where border-radius can apply", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the corresponding superellipse() value", - "canonicalOrder": "per grammar", - "animationType": "see superellipse interpolation", - "logicalPropertyGroup": "corner-shape", - "styleDeclaration": [ - "corner-start-start-shape", - "cornerStartStartShape" - ], - "syntax": "<corner-shape-value>", - "extended": [] - } - ], - [ - "corner-top-left-shape", - { - "name": "corner-top-left-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-top-left-shape", - "initial": "round", - "appliesTo": "all elements where border-radius can apply", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the corresponding superellipse() value", - "canonicalOrder": "per grammar", - "animationType": "see superellipse interpolation", - "logicalPropertyGroup": "corner-shape", - "styleDeclaration": [ - "corner-top-left-shape", - "cornerTopLeftShape" - ], - "syntax": "<corner-shape-value>", - "extended": [] - } - ], - [ - "corner-top-right-shape", - { - "name": "corner-top-right-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-top-right-shape", - "initial": "round", - "appliesTo": "all elements where border-radius can apply", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the corresponding superellipse() value", - "canonicalOrder": "per grammar", - "animationType": "see superellipse interpolation", - "logicalPropertyGroup": "corner-shape", - "styleDeclaration": [ - "corner-top-right-shape", - "cornerTopRightShape" - ], - "syntax": "<corner-shape-value>", - "extended": [] - } - ], - [ - "corner-top-shape", - { - "name": "corner-top-shape", - "href": "https://drafts.csswg.org/css-borders-4/#propdef-corner-top-shape", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "corner-top-shape", - "cornerTopShape" - ], - "syntax": "<'corner-top-left-shape'>{1,2}", - "extended": [] - } - ], - [ - "counter-increment", - { - "name": "counter-increment", - "href": "https://drafts.csswg.org/css-lists-3/#propdef-counter-increment", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none or a list, each item an identifier paired with an integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "counter-increment", - "counterIncrement" - ], - "syntax": "[ <counter-name> <integer>? ]+ | none", - "extended": [] - } - ], - [ - "counter-reset", - { - "name": "counter-reset", - "href": "https://drafts.csswg.org/css-lists-3/#propdef-counter-reset", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none or a list, each item an identifier or a reversed() function paired with an integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "counter-reset", - "counterReset" - ], - "syntax": "[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none", - "extended": [] - } - ], - [ - "counter-set", - { - "name": "counter-set", - "href": "https://drafts.csswg.org/css-lists-3/#propdef-counter-set", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none or a list, each item an identifier paired with an integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "counter-set", - "counterSet" - ], - "syntax": "[ <counter-name> <integer>? ]+ | none", - "extended": [] - } - ], - [ - "cue", - { - "name": "cue", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-cue", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "cue" - ], - "syntax": "<'cue-before'> <'cue-after'>?", - "extended": [] - } - ], - [ - "cue-after", - { - "name": "cue-after", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-cue-after", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "cue-after", - "cueAfter" - ], - "syntax": "<uri> <decibel>? | none", - "extended": [] - } - ], - [ - "cue-before", - { - "name": "cue-before", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-cue-before", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "cue-before", - "cueBefore" - ], - "syntax": "<uri> <decibel>? | none", - "extended": [] - } - ], - [ - "cursor", - { - "name": "cursor", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-cursor", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified, except with any relative URLs converted to absolute", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "cursor" - ], - "syntax": "[<cursor-image>,]* <cursor-predefined>", - "extended": [] - } - ], - [ - "direction", - { - "name": "direction", - "href": "https://drafts.csswg.org/css-writing-modes-4/#propdef-direction", - "initial": "ltr", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "n/a", - "animationType": "not animatable", - "styleDeclaration": [ - "direction" - ], - "syntax": "ltr | rtl", - "extended": [] - } - ], - [ - "display", - { - "name": "display", - "href": "https://drafts.csswg.org/css-display-4/#propdef-display", - "initial": "inline", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "a pair of keywords representing the inner and outer display types plus optional list-item flag, or a <display-internal> or <display-box> keyword; see prose in a variety of specs for computation rules", - "canonicalOrder": "per grammar", - "animationType": "see § 2.9 Animating and Interpolating display", - "styleDeclaration": [ - "display" - ], - "syntax": "[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy> | <display-outside> || [ <display-inside> | math ]", - "extended": [ - "https://w3c.github.io/mathml-core/" - ] - } - ], - [ - "dominant-baseline", - { - "name": "dominant-baseline", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-dominant-baseline", - "initial": "auto", - "appliesTo": "block containers, inline boxes, table rows, grid containers, flex containers, and SVG text content elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "dominant-baseline", - "dominantBaseline" - ], - "syntax": "auto | text-bottom | alphabetic | ideographic | middle | central | mathematical | hanging | text-top", - "extended": [] - } - ], - [ - "dynamic-range-limit", - { - "name": "dynamic-range-limit", - "href": "https://drafts.csswg.org/css-color-hdr-1/#propdef-dynamic-range-limit", - "initial": "no-limit", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "see Computed Value for dynamic-range-limit", - "canonicalOrder": "per grammar", - "animationType": "by dynamic-range-limit-mix()", - "styleDeclaration": [ - "dynamic-range-limit", - "dynamicRangeLimit" - ], - "syntax": "standard | no-limit | constrained | <dynamic-range-limit-mix()>", - "extended": [] - } - ], - [ - "empty-cells", - { - "name": "empty-cells", - "href": "https://drafts.csswg.org/css-tables-3/#propdef-empty-cells", - "initial": "show", - "appliesTo": "table-cell boxes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "empty-cells", - "emptyCells" - ], - "syntax": "show | hide", - "extended": [] - } - ], - [ - "fill", - { - "name": "fill", - "href": "https://svgwg.org/svg2-draft/painting.html#FillProperty", - "initial": "black", - "appliesTo": "shapes and text content elements", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified, but with <color> values computed and <url> values made absolute", - "animationType": "by computed value", - "styleDeclaration": [ - "fill" - ], - "syntax": "<paint>", - "extended": [] - } - ], - [ - "fill-break", - { - "name": "fill-break", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-fill-break", - "initial": "bounding-box", - "appliesTo": "all elements", - "inherited": "yes?", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "fill-break", - "fillBreak" - ], - "syntax": "bounding-box | slice | clone", - "extended": [] - } - ], - [ - "fill-color", - { - "name": "fill-color", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-fill-color", - "initial": "currentcolor", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "the computed color", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "fill-color", - "fillColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "fill-image", - { - "name": "fill-image", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-fill-image", - "initial": "none", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified, with any <image> computed", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "fill-image", - "fillImage" - ], - "syntax": "<paint>#", - "extended": [] - } - ], - [ - "fill-opacity", - { - "name": "fill-opacity", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-fill-opacity", - "initial": "1", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "the specified value converted to a <number>, clamped to the range [0,1]", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "fill-opacity", - "fillOpacity" - ], - "syntax": "<'opacity'>", - "extended": [] - } - ], - [ - "fill-origin", - { - "name": "fill-origin", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-fill-origin", - "initial": "match-parent", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "fill-origin", - "fillOrigin" - ], - "syntax": "match-parent | fill-box | stroke-box | content-box | padding-box | border-box", - "extended": [] - } - ], - [ - "fill-position", - { - "name": "fill-position", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-fill-position", - "initial": "0% 0%", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "A list, each item consisting of: a pair of offsets (horizontal and vertical) from the top left origin each given as a combination of an absolute length and a percentage", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "fill-position", - "fillPosition" - ], - "syntax": "<position>#", - "extended": [] - } - ], - [ - "fill-repeat", - { - "name": "fill-repeat", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-fill-repeat", - "initial": "repeat", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "A list, each item consisting of: two keywords, one per dimension", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "fill-repeat", - "fillRepeat" - ], - "syntax": "<repeat-style>#", - "extended": [] - } - ], - [ - "fill-rule", - { - "name": "fill-rule", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-fill-rule", - "initial": "nonzero", - "appliesTo": "SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "fill-rule", - "fillRule" - ], - "syntax": "nonzero | evenodd", - "extended": [] - } - ], - [ - "fill-size", - { - "name": "fill-size", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-fill-size", - "initial": "auto", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified, but with lengths made absolute and omitted auto keywords filled in", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "fill-size", - "fillSize" - ], - "syntax": "<bg-size>#", - "extended": [] - } - ], - [ - "filter", - { - "name": "filter", - "href": "https://drafts.fxtf.org/filter-effects-1/#propdef-filter", - "initial": "none", - "appliesTo": "All elements. In SVG, it applies to container elements without the defs element, all graphics elements and the use element.", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "See prose in Animation of Filters.", - "media": "visual", - "styleDeclaration": [ - "filter" - ], - "syntax": "none | <filter-value-list>", - "extended": [] - } - ], - [ - "flex", - { - "name": "flex", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex", - "initial": "0 1 auto", - "appliesTo": "flex items", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "by computed value type", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "flex" - ], - "syntax": "none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]", - "extended": [] - } - ], - [ - "flex-basis", - { - "name": "flex-basis", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex-basis", - "initial": "auto", - "appliesTo": "flex items", - "inherited": "no", - "percentages": "relative to the flex container’s inner main size", - "computedValue": "specified keyword or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "flex-basis", - "flexBasis" - ], - "syntax": "content | <'width'>", - "extended": [] - } - ], - [ - "flex-direction", - { - "name": "flex-direction", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex-direction", - "initial": "row", - "appliesTo": "flex containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "flex-direction", - "flexDirection" - ], - "syntax": "row | row-reverse | column | column-reverse", - "extended": [] - } - ], - [ - "flex-flow", - { - "name": "flex-flow", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex-flow", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "flex-flow", - "flexFlow" - ], - "syntax": "<'flex-direction'> || <'flex-wrap'>", - "extended": [] - } - ], - [ - "flex-grow", - { - "name": "flex-grow", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex-grow", - "initial": "0", - "appliesTo": "flex items", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified number", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "flex-grow", - "flexGrow" - ], - "syntax": "<number [0,∞]>", - "extended": [] - } - ], - [ - "flex-shrink", - { - "name": "flex-shrink", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex-shrink", - "initial": "1", - "appliesTo": "flex items", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "number", - "styleDeclaration": [ - "flex-shrink", - "flexShrink" - ], - "syntax": "<number [0,∞]>", - "extended": [] - } - ], - [ - "flex-wrap", - { - "name": "flex-wrap", - "href": "https://drafts.csswg.org/css-flexbox-1/#propdef-flex-wrap", - "initial": "nowrap", - "appliesTo": "flex containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "flex-wrap", - "flexWrap" - ], - "syntax": "nowrap | wrap | wrap-reverse", - "extended": [] - } - ], - [ - "float", - { - "name": "float", - "href": "https://drafts.csswg.org/css-page-floats-3/#propdef-float", - "initial": "none", - "appliesTo": "all elements.", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "float" - ], - "syntax": "block-start | block-end | inline-start | inline-end | snap-block | <snap-block()> | snap-inline | <snap-inline()> | left | right | top | bottom | none | footnote", - "extended": [ - "https://drafts.csswg.org/css-gcpm-3/" - ] - } - ], - [ - "float-defer", - { - "name": "float-defer", - "href": "https://drafts.csswg.org/css-page-floats-3/#propdef-float-defer", - "initial": "none", - "appliesTo": "floats", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword or integer", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "float-defer", - "floatDefer" - ], - "syntax": "<integer> | last | none", - "extended": [] - } - ], - [ - "float-offset", - { - "name": "float-offset", - "href": "https://drafts.csswg.org/css-page-floats-3/#propdef-float-offset", - "initial": "0", - "appliesTo": "floats", - "inherited": "no", - "percentages": "see prose", - "computedValue": "computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "float-offset", - "floatOffset" - ], - "syntax": "<length-percentage>", - "extended": [] - } - ], - [ - "float-reference", - { - "name": "float-reference", - "href": "https://drafts.csswg.org/css-page-floats-3/#propdef-float-reference", - "initial": "inline", - "appliesTo": "all elements.", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "float-reference", - "floatReference" - ], - "syntax": "inline | column | region | page", - "extended": [] - } - ], - [ - "flood-color", - { - "name": "flood-color", - "href": "https://drafts.fxtf.org/filter-effects-1/#propdef-flood-color", - "initial": "black", - "appliesTo": "feFlood and feDropShadow elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "flood-color", - "floodColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "flood-opacity", - { - "name": "flood-opacity", - "href": "https://drafts.fxtf.org/filter-effects-1/#propdef-flood-opacity", - "initial": "1", - "appliesTo": "feFlood and feDropShadow elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the specified value converted to a number, clamped to the range [0,1]", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "flood-opacity", - "floodOpacity" - ], - "syntax": "<'opacity'>", - "extended": [] - } - ], - [ - "flow-from", - { - "name": "flow-from", - "href": "https://drafts.csswg.org/css-regions-1/#propdef-flow-from", - "initial": "none", - "appliesTo": "Non-replaced block containers. This might be expanded in future versions of the specification to allow other types of containers to receive flow content.", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "flow-from", - "flowFrom" - ], - "syntax": "<custom-ident> | none", - "extended": [] - } - ], - [ - "flow-into", - { - "name": "flow-into", - "href": "https://drafts.csswg.org/css-regions-1/#propdef-flow-into", - "initial": "none", - "appliesTo": "All elements, but not pseudo-elements such as ::first-line, ::first-letter, ::before or ::after.", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "flow-into", - "flowInto" - ], - "syntax": "none | <custom-ident> [element | content]?", - "extended": [] - } - ], - [ - "font", - { - "name": "font", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font", - "initial": "see individual properties", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "see individual properties", - "styleDeclaration": [ - "font" - ], - "syntax": "[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] | <system-family-name>", - "extended": [] - } - ], - [ - "font-family", - { - "name": "font-family", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-family", - "initial": "depends on user agent", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "list, each item a string and/or <generic-family> keywords", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-family", - "fontFamily" - ], - "syntax": "[ <family-name> | <generic-family> ]#", - "extended": [] - } - ], - [ - "font-feature-settings", - { - "name": "font-feature-settings", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-feature-settings", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-feature-settings", - "fontFeatureSettings" - ], - "syntax": "normal | <feature-tag-value>#", - "extended": [] - } - ], - [ - "font-kerning", - { - "name": "font-kerning", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-kerning", - "initial": "auto", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-kerning", - "fontKerning" - ], - "syntax": "auto | normal | none", - "extended": [] - } - ], - [ - "font-language-override", - { - "name": "font-language-override", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-language-override", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified string or the keyword none", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-language-override", - "fontLanguageOverride" - ], - "syntax": "normal | <string>", - "extended": [] - } - ], - [ - "font-optical-sizing", - { - "name": "font-optical-sizing", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-optical-sizing", - "initial": "auto", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-optical-sizing", - "fontOpticalSizing" - ], - "syntax": "auto | none", - "extended": [] - } - ], - [ - "font-palette", - { - "name": "font-palette", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-palette", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/a", - "computedValue": "specified keyword, identifier or <palette-mix()> function. <palette-mix()> must be simplified to a single keyword or identifier if resulting palette is equivalent.", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "font-palette", - "fontPalette" - ], - "syntax": "normal | light | dark | <palette-identifier> | <palette-mix()>", - "extended": [] - } - ], - [ - "font-size", - { - "name": "font-size", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-size", - "initial": "medium", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "refer to parent element’s font size", - "computedValue": "an absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "font-size", - "fontSize" - ], - "syntax": "<absolute-size> | <relative-size> | <length-percentage [0,∞]> | math", - "extended": [] - } - ], - [ - "font-size-adjust", - { - "name": "font-size-adjust", - "href": "https://drafts.csswg.org/css-fonts-5/#propdef-font-size-adjust", - "initial": "none", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "the keyword none, or a pair of a metric keyword and a <number>", - "canonicalOrder": "per grammar", - "animationType": "discrete if the keywords differ, otherwise by computed value type", - "styleDeclaration": [ - "font-size-adjust", - "fontSizeAdjust" - ], - "syntax": "none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number [0,∞]> ]", - "extended": [] - } - ], - [ - "font-stretch", - { - "name": "font-stretch", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-stretch", - "legacyAliasOf": "font-width", - "styleDeclaration": [ - "font-stretch", - "fontStretch" - ], - "extended": [], - "syntax": "normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded" - } - ], - [ - "font-style", - { - "name": "font-style", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-style", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "the keyword specified, plus angle in degrees if specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value type;normal animates as oblique 0deg", - "styleDeclaration": [ - "font-style", - "fontStyle" - ], - "syntax": "normal | italic | left | right | oblique <angle [-90deg,90deg]>?", - "extended": [] - } - ], - [ - "font-synthesis", - { - "name": "font-synthesis", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis", - "initial": "weight style small-caps position", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-synthesis", - "fontSynthesis" - ], - "syntax": "none | [ weight || style || small-caps || position]", - "extended": [] - } - ], - [ - "font-synthesis-position", - { - "name": "font-synthesis-position", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis-position", - "initial": "auto", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-synthesis-position", - "fontSynthesisPosition" - ], - "syntax": "auto | none", - "extended": [] - } - ], - [ - "font-synthesis-small-caps", - { - "name": "font-synthesis-small-caps", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis-small-caps", - "initial": "auto", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-synthesis-small-caps", - "fontSynthesisSmallCaps" - ], - "syntax": "auto | none", - "extended": [] - } - ], - [ - "font-synthesis-style", - { - "name": "font-synthesis-style", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis-style", - "initial": "auto", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "font-synthesis-style", - "fontSynthesisStyle" - ], - "syntax": "auto | none | oblique-only", - "extended": [] - } - ], - [ - "font-synthesis-weight", - { - "name": "font-synthesis-weight", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis-weight", - "initial": "auto", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "font-synthesis-weight", - "fontSynthesisWeight" - ], - "syntax": "auto | none", - "extended": [] - } - ], - [ - "font-variant", - { - "name": "font-variant", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variant", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-variant", - "fontVariant" - ], - "syntax": "normal | none | [ [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ] || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || [ stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) ] || [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ] || [ <east-asian-variant-values> || <east-asian-width-values> || ruby ] || [ sub | super ] || [ text | emoji | unicode ] ]", - "extended": [] - } - ], - [ - "font-variant-alternates", - { - "name": "font-variant-alternates", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-alternates", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-variant-alternates", - "fontVariantAlternates" - ], - "syntax": "normal | [ stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) ]", - "extended": [] - } - ], - [ - "font-variant-caps", - { - "name": "font-variant-caps", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-caps", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-variant-caps", - "fontVariantCaps" - ], - "syntax": "normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps", - "extended": [] - } - ], - [ - "font-variant-east-asian", - { - "name": "font-variant-east-asian", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-east-asian", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-variant-east-asian", - "fontVariantEastAsian" - ], - "syntax": "normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]", - "extended": [] - } - ], - [ - "font-variant-emoji", - { - "name": "font-variant-emoji", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-emoji", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "N/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-variant-emoji", - "fontVariantEmoji" - ], - "syntax": "normal | text | emoji | unicode", - "extended": [] - } - ], - [ - "font-variant-ligatures", - { - "name": "font-variant-ligatures", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-ligatures", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-variant-ligatures", - "fontVariantLigatures" - ], - "syntax": "normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]", - "extended": [] - } - ], - [ - "font-variant-numeric", - { - "name": "font-variant-numeric", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-numeric", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-variant-numeric", - "fontVariantNumeric" - ], - "syntax": "normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]", - "extended": [] - } - ], - [ - "font-variant-position", - { - "name": "font-variant-position", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-position", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "font-variant-position", - "fontVariantPosition" - ], - "syntax": "normal | sub | super", - "extended": [] - } - ], - [ - "font-variation-settings", - { - "name": "font-variation-settings", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-variation-settings", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "the keyword normal or a list, each item a string paired with a number", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "styleDeclaration": [ - "font-variation-settings", - "fontVariationSettings" - ], - "syntax": "normal | [ <opentype-tag> <number> ]#", - "extended": [] - } - ], - [ - "font-weight", - { - "name": "font-weight", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-weight", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "a number, see below", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "font-weight", - "fontWeight" - ], - "syntax": "<font-weight-absolute> | bolder | lighter", - "extended": [] - } - ], - [ - "font-width", - { - "name": "font-width", - "href": "https://drafts.csswg.org/css-fonts-4/#propdef-font-width", - "initial": "normal", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "Not resolved", - "computedValue": "a percentage, see below", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "font-width", - "fontWidth" - ], - "syntax": "normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded", - "extended": [] - } - ], - [ - "footnote-display", - { - "name": "footnote-display", - "href": "https://drafts.csswg.org/css-gcpm-3/#propdef-footnote-display", - "initial": "block", - "appliesTo": "elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "footnote-display", - "footnoteDisplay" - ], - "syntax": "block | inline | compact", - "extended": [] - } - ], - [ - "footnote-policy", - { - "name": "footnote-policy", - "href": "https://drafts.csswg.org/css-gcpm-3/#propdef-footnote-policy", - "initial": "auto", - "appliesTo": "elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "footnote-policy", - "footnotePolicy" - ], - "syntax": "auto | line | block", - "extended": [] - } - ], - [ - "forced-color-adjust", - { - "name": "forced-color-adjust", - "href": "https://drafts.csswg.org/css-color-adjust-1/#propdef-forced-color-adjust", - "initial": "auto", - "appliesTo": "all elements and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "forced-color-adjust", - "forcedColorAdjust" - ], - "syntax": "auto | none | preserve-parent-color", - "extended": [] - } - ], - [ - "gap", - { - "name": "gap", - "href": "https://drafts.csswg.org/css-align-3/#propdef-gap", - "initial": "see individual properties", - "appliesTo": "multi-column containers, flex containers, grid containers", - "inherited": "no", - "percentages": "refer to corresponding dimension of the content area", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "gap" - ], - "syntax": "<'row-gap'> <'column-gap'>?", - "extended": [] - } - ], - [ - "glyph-orientation-vertical", - { - "name": "glyph-orientation-vertical", - "href": "https://drafts.csswg.org/css-writing-modes-4/#propdef-glyph-orientation-vertical", - "initial": "n/a", - "appliesTo": "n/a", - "inherited": "n/a", - "percentages": "n/a", - "computedValue": "n/a", - "canonicalOrder": "n/a", - "animationType": "n/a", - "styleDeclaration": [ - "glyph-orientation-vertical", - "glyphOrientationVertical" - ], - "syntax": "auto | 0deg | 90deg | 0 | 90", - "extended": [] - } - ], - [ - "grid", - { - "name": "grid", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid", - "initial": "none", - "appliesTo": "grid containers", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "grid" - ], - "syntax": "<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>", - "extended": [] - } - ], - [ - "grid-area", - { - "name": "grid-area", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-area", - "initial": "auto", - "appliesTo": "grid items and absolutely-positioned boxes whose containing block is a grid container", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "discrete", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "grid-area", - "gridArea" - ], - "syntax": "<grid-line> [ / <grid-line> ]{0,3}", - "extended": [] - } - ], - [ - "grid-auto-columns", - { - "name": "grid-auto-columns", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-auto-columns", - "initial": "auto", - "appliesTo": "grid containers", - "inherited": "no", - "percentages": "see Track Sizing", - "computedValue": "see Track Sizing", - "canonicalOrder": "per grammar", - "animationType": "if the list lengths match, by computed value type per item; discrete otherwise", - "styleDeclaration": [ - "grid-auto-columns", - "gridAutoColumns" - ], - "syntax": "<track-size>+", - "extended": [] - } - ], - [ - "grid-auto-flow", - { - "name": "grid-auto-flow", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-auto-flow", - "initial": "row", - "appliesTo": "grid containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "grid-auto-flow", - "gridAutoFlow" - ], - "syntax": "[ row | column ] || dense", - "extended": [] - } - ], - [ - "grid-auto-rows", - { - "name": "grid-auto-rows", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-auto-rows", - "initial": "auto", - "appliesTo": "grid containers", - "inherited": "no", - "percentages": "see Track Sizing", - "computedValue": "see Track Sizing", - "canonicalOrder": "per grammar", - "animationType": "if the list lengths match, by computed value type per item; discrete otherwise", - "styleDeclaration": [ - "grid-auto-rows", - "gridAutoRows" - ], - "syntax": "<track-size>+", - "extended": [] - } - ], - [ - "grid-column", - { - "name": "grid-column", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-column", - "initial": "auto", - "appliesTo": "grid items and absolutely-positioned boxes whose containing block is a grid container", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "discrete", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "grid-column", - "gridColumn" - ], - "syntax": "<grid-line> [ / <grid-line> ]?", - "extended": [] - } - ], - [ - "grid-column-end", - { - "name": "grid-column-end", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-column-end", - "initial": "auto", - "appliesTo": "grid items and absolutely-positioned boxes whose containing block is a grid container", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword, identifier, and/or integer", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "grid-column-end", - "gridColumnEnd" - ], - "syntax": "<grid-line>", - "extended": [] - } - ], - [ - "grid-column-start", - { - "name": "grid-column-start", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-column-start", - "initial": "auto", - "appliesTo": "grid items and absolutely-positioned boxes whose containing block is a grid container", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword, identifier, and/or integer", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "grid-column-start", - "gridColumnStart" - ], - "syntax": "<grid-line>", - "extended": [] - } - ], - [ - "grid-row", - { - "name": "grid-row", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-row", - "initial": "auto", - "appliesTo": "grid items and absolutely-positioned boxes whose containing block is a grid container", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "discrete", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "grid-row", - "gridRow" - ], - "syntax": "<grid-line> [ / <grid-line> ]?", - "extended": [] - } - ], - [ - "grid-row-end", - { - "name": "grid-row-end", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-row-end", - "initial": "auto", - "appliesTo": "grid items and absolutely-positioned boxes whose containing block is a grid container", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword, identifier, and/or integer", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "grid-row-end", - "gridRowEnd" - ], - "syntax": "<grid-line>", - "extended": [] - } - ], - [ - "grid-row-start", - { - "name": "grid-row-start", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-row-start", - "initial": "auto", - "appliesTo": "grid items and absolutely-positioned boxes whose containing block is a grid container", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword, identifier, and/or integer", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "grid-row-start", - "gridRowStart" - ], - "syntax": "<grid-line>", - "extended": [] - } - ], - [ - "grid-template", - { - "name": "grid-template", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-template", - "initial": "none", - "appliesTo": "grid containers", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "grid-template", - "gridTemplate" - ], - "syntax": "none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?", - "extended": [] - } - ], - [ - "grid-template-areas", - { - "name": "grid-template-areas", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-template-areas", - "initial": "none", - "appliesTo": "grid containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none or a list of string values", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "grid-template-areas", - "gridTemplateAreas" - ], - "syntax": "none | <string>+", - "extended": [] - } - ], - [ - "grid-template-columns", - { - "name": "grid-template-columns", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-template-columns", - "initial": "none", - "appliesTo": "grid containers", - "inherited": "no", - "percentages": "refer to corresponding dimension of the content area", - "computedValue": "the keyword none or a computed track list", - "canonicalOrder": "per grammar", - "animationType": "if the list lengths match, by computed value type per item in the computed track list (see § 7.2.5 Computed Value of a Track Listing and § 7.2.3.3 Interpolation/Combination of repeat()); discrete otherwise", - "styleDeclaration": [ - "grid-template-columns", - "gridTemplateColumns" - ], - "syntax": "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?", - "extended": [] - } - ], - [ - "grid-template-rows", - { - "name": "grid-template-rows", - "href": "https://drafts.csswg.org/css-grid-2/#propdef-grid-template-rows", - "initial": "none", - "appliesTo": "grid containers", - "inherited": "no", - "percentages": "refer to corresponding dimension of the content area", - "computedValue": "the keyword none or a computed track list", - "canonicalOrder": "per grammar", - "animationType": "if the list lengths match, by computed value type per item in the computed track list (see § 7.2.5 Computed Value of a Track Listing and § 7.2.3.3 Interpolation/Combination of repeat()); discrete otherwise", - "styleDeclaration": [ - "grid-template-rows", - "gridTemplateRows" - ], - "syntax": "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?", - "extended": [] - } - ], - [ - "hanging-punctuation", - { - "name": "hanging-punctuation", - "href": "https://drafts.csswg.org/css-text-4/#propdef-hanging-punctuation", - "initial": "none", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "hanging-punctuation", - "hangingPunctuation" - ], - "syntax": "none | [ first || [ force-end | allow-end ] || last ]", - "extended": [] - } - ], - [ - "height", - { - "name": "height", - "href": "https://drafts.csswg.org/css-sizing-3/#propdef-height", - "initial": "auto", - "appliesTo": "all elements except non-replaced inlines", - "inherited": "no", - "percentages": "relative to width/height of containing block", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value type, recursing into fit-content()", - "logicalPropertyGroup": "size", - "styleDeclaration": [ - "height" - ], - "syntax": "auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/", - "https://drafts.csswg.org/css-sizing-4/" - ] - } - ], - [ - "hyphenate-character", - { - "name": "hyphenate-character", - "href": "https://drafts.csswg.org/css-text-4/#propdef-hyphenate-character", - "initial": "auto", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "hyphenate-character", - "hyphenateCharacter" - ], - "syntax": "auto | <string>", - "extended": [] - } - ], - [ - "hyphenate-limit-chars", - { - "name": "hyphenate-limit-chars", - "href": "https://drafts.csswg.org/css-text-4/#propdef-hyphenate-limit-chars", - "initial": "auto", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "three values, each either the auto keyword or an integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "hyphenate-limit-chars", - "hyphenateLimitChars" - ], - "syntax": "[ auto | <integer> ]{1,3}", - "extended": [] - } - ], - [ - "hyphenate-limit-last", - { - "name": "hyphenate-limit-last", - "href": "https://drafts.csswg.org/css-text-4/#propdef-hyphenate-limit-last", - "initial": "none", - "appliesTo": "block containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "hyphenate-limit-last", - "hyphenateLimitLast" - ], - "syntax": "none | always | column | page | spread", - "extended": [] - } - ], - [ - "hyphenate-limit-lines", - { - "name": "hyphenate-limit-lines", - "href": "https://drafts.csswg.org/css-text-4/#propdef-hyphenate-limit-lines", - "initial": "no-limit", - "appliesTo": "block containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword or integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "hyphenate-limit-lines", - "hyphenateLimitLines" - ], - "syntax": "no-limit | <integer>", - "extended": [] - } - ], - [ - "hyphenate-limit-zone", - { - "name": "hyphenate-limit-zone", - "href": "https://drafts.csswg.org/css-text-4/#propdef-hyphenate-limit-zone", - "initial": "0", - "appliesTo": "block containers", - "inherited": "yes", - "percentages": "refers to length of the line box", - "computedValue": "computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "hyphenate-limit-zone", - "hyphenateLimitZone" - ], - "syntax": "<length-percentage>", - "extended": [] - } - ], - [ - "hyphens", - { - "name": "hyphens", - "href": "https://drafts.csswg.org/css-text-4/#propdef-hyphens", - "initial": "manual", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "hyphens" - ], - "syntax": "none | manual | auto", - "extended": [] - } - ], - [ - "image-orientation", - { - "name": "image-orientation", - "href": "https://drafts.csswg.org/css-images-3/#propdef-image-orientation", - "initial": "from-image", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "the specified keyword, or an <angle>, rounded and normalized (see text), plus optionally a flip keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "image-orientation", - "imageOrientation" - ], - "syntax": "from-image | none | [ <angle> || flip ]", - "extended": [] - } - ], - [ - "image-rendering", - { - "name": "image-rendering", - "href": "https://drafts.csswg.org/css-images-3/#propdef-image-rendering", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "image-rendering", - "imageRendering" - ], - "syntax": "auto | smooth | high-quality | pixelated | crisp-edges", - "extended": [] - } - ], - [ - "image-resolution", - { - "name": "image-resolution", - "href": "https://drafts.csswg.org/css-images-4/#propdef-image-resolution", - "initial": "1dppx", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword(s) and/or <resolution> (possibly adjusted for snap, see below)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "image-resolution", - "imageResolution" - ], - "syntax": "[ from-image || <resolution> ] && snap?", - "extended": [] - } - ], - [ - "initial-letter", - { - "name": "initial-letter", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-initial-letter", - "initial": "normal", - "appliesTo": "certain inline-level boxes and ::first-letter and inside ::marker boxes (see prose)", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the keyword normal or a number paired with an integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "initial-letter", - "initialLetter" - ], - "syntax": "normal | <number [1,∞]> <integer [1,∞]> | <number [1,∞]> && [ drop | raise ]?", - "extended": [] - } - ], - [ - "initial-letter-align", - { - "name": "initial-letter-align", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-initial-letter-align", - "initial": "alphabetic", - "appliesTo": "certain inline-level boxes and ::first-letter and inside ::marker boxes (see prose)", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "initial-letter-align", - "initialLetterAlign" - ], - "syntax": "[ border-box? [ alphabetic | ideographic | hanging | leading ]? ]!", - "extended": [] - } - ], - [ - "initial-letter-wrap", - { - "name": "initial-letter-wrap", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-initial-letter-wrap", - "initial": "none", - "appliesTo": "certain inline-level boxes and ::first-letter and inside ::marker boxes (see prose)", - "inherited": "yes", - "percentages": "relative to logical width of (last fragment of) initial letter", - "computedValue": "specified keyword or computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "initial-letter-wrap", - "initialLetterWrap" - ], - "syntax": "none | first | all | grid | <length-percentage>", - "extended": [] - } - ], - [ - "inline-size", - { - "name": "inline-size", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-inline-size", - "initial": "auto", - "appliesTo": "Same as height and width", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as height, width", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "size", - "styleDeclaration": [ - "inline-size", - "inlineSize" - ], - "syntax": "<'width'>", - "extended": [] - } - ], - [ - "inline-sizing", - { - "name": "inline-sizing", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-inline-sizing", - "initial": "normal", - "appliesTo": "inline boxes, but not ruby container boxes nor internal ruby boxes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "inline-sizing", - "inlineSizing" - ], - "syntax": "normal | stretch", - "extended": [] - } - ], - [ - "inset", - { - "name": "inset", - "href": "https://drafts.csswg.org/css-position-3/#propdef-inset", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "inset" - ], - "syntax": "<'top'>{1,4}", - "extended": [] - } - ], - [ - "inset-block", - { - "name": "inset-block", - "href": "https://drafts.csswg.org/css-position-3/#propdef-inset-block", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "inset-block", - "insetBlock" - ], - "syntax": "<'top'>{1,2}", - "extended": [] - } - ], - [ - "inset-block-end", - { - "name": "inset-block-end", - "href": "https://drafts.csswg.org/css-position-3/#propdef-inset-block-end", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "inset-block-end", - "insetBlockEnd" - ], - "syntax": "auto | <length-percentage>", - "extended": [] - } - ], - [ - "inset-block-start", - { - "name": "inset-block-start", - "href": "https://drafts.csswg.org/css-position-3/#propdef-inset-block-start", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "inset-block-start", - "insetBlockStart" - ], - "syntax": "auto | <length-percentage>", - "extended": [] - } - ], - [ - "inset-inline", - { - "name": "inset-inline", - "href": "https://drafts.csswg.org/css-position-3/#propdef-inset-inline", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "inset-inline", - "insetInline" - ], - "syntax": "<'top'>{1,2}", - "extended": [] - } - ], - [ - "inset-inline-end", - { - "name": "inset-inline-end", - "href": "https://drafts.csswg.org/css-position-3/#propdef-inset-inline-end", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "inset-inline-end", - "insetInlineEnd" - ], - "syntax": "auto | <length-percentage>", - "extended": [] - } - ], - [ - "inset-inline-start", - { - "name": "inset-inline-start", - "href": "https://drafts.csswg.org/css-position-3/#propdef-inset-inline-start", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "inset-inline-start", - "insetInlineStart" - ], - "syntax": "auto | <length-percentage>", - "extended": [] - } - ], - [ - "interpolate-size", - { - "name": "interpolate-size", - "href": "https://drafts.csswg.org/css-values-5/#propdef-interpolate-size", - "initial": "numeric-only", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "interpolate-size", - "interpolateSize" - ], - "syntax": "numeric-only | allow-keywords", - "extended": [] - } - ], - [ - "isolation", - { - "name": "isolation", - "href": "https://drafts.fxtf.org/compositing-2/#propdef-isolation", - "initial": "auto", - "appliesTo": "All elements. In SVG, it applies to container elements, graphics elements and graphics referencing elements. [SVG11]", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "media": "visual", - "animatable": "no", - "styleDeclaration": [ - "isolation" - ], - "syntax": "<isolation-mode>", - "extended": [] - } - ], - [ - "item-cross", - { - "name": "item-cross", - "href": "https://drafts.csswg.org/css-grid-3/#propdef-item-cross", - "initial": "auto", - "appliesTo": "flex containers, grid containers, masonry containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "item-cross", - "itemCross" - ], - "syntax": "[ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse", - "extended": [] - } - ], - [ - "item-direction", - { - "name": "item-direction", - "href": "https://drafts.csswg.org/css-grid-3/#propdef-item-direction", - "initial": "auto", - "appliesTo": "flex containers, grid containers, masonry containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "item-direction", - "itemDirection" - ], - "syntax": "auto | row | column | row-reverse | column-reverse", - "extended": [] - } - ], - [ - "item-flow", - { - "name": "item-flow", - "href": "https://drafts.csswg.org/css-grid-3/#propdef-item-flow", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "item-flow", - "itemFlow" - ], - "syntax": "<'item-direction'> || <'item-wrap'> || <'item-pack'> || <'item-tolerance'>", - "extended": [] - } - ], - [ - "item-pack", - { - "name": "item-pack", - "href": "https://drafts.csswg.org/css-grid-3/#propdef-item-pack", - "initial": "normal", - "appliesTo": "flex containers, grid containers, masonry containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "item-pack", - "itemPack" - ], - "syntax": "normal | dense || balance", - "extended": [] - } - ], - [ - "item-track", - { - "name": "item-track", - "href": "https://drafts.csswg.org/css-grid-3/#propdef-item-track", - "initial": "auto", - "appliesTo": "flex containers, grid containers, masonry containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "item-track", - "itemTrack" - ], - "syntax": "auto | row | column | row-reverse | column-reverse", - "extended": [] - } - ], - [ - "item-wrap", - { - "name": "item-wrap", - "href": "https://drafts.csswg.org/css-grid-3/#propdef-item-wrap", - "initial": "auto", - "appliesTo": "flex containers, grid containers, masonry containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "item-wrap", - "itemWrap" - ], - "syntax": "[ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse", - "extended": [] - } - ], - [ - "justify-content", - { - "name": "justify-content", - "href": "https://drafts.csswg.org/css-align-3/#propdef-justify-content", - "initial": "normal", - "appliesTo": "multicol containers, flex containers, and grid containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "justify-content", - "justifyContent" - ], - "syntax": "normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]", - "extended": [] - } - ], - [ - "justify-items", - { - "name": "justify-items", - "href": "https://drafts.csswg.org/css-align-3/#propdef-justify-items", - "initial": "legacy", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s), except for legacy (see prose)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "justify-items", - "justifyItems" - ], - "syntax": "normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ] | anchor-center", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "justify-self", - { - "name": "justify-self", - "href": "https://drafts.csswg.org/css-align-3/#propdef-justify-self", - "initial": "auto", - "appliesTo": "block-level boxes, absolutely-positioned boxes, and grid items", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "justify-self", - "justifySelf" - ], - "syntax": "auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | anchor-center", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "left", - { - "name": "left", - "href": "https://drafts.csswg.org/css-position-3/#propdef-left", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "left" - ], - "syntax": "auto | <length-percentage> | <anchor()> | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "letter-spacing", - { - "name": "letter-spacing", - "href": "https://drafts.csswg.org/css-text-4/#propdef-letter-spacing", - "initial": "normal", - "appliesTo": "inline boxes and text", - "inherited": "yes", - "percentages": "relative to computed font-size, i.e. 1em", - "computedValue": "an absolute length and/or a percentage", - "canonicalOrder": "n/a", - "animationType": "by computed value type", - "styleDeclaration": [ - "letter-spacing", - "letterSpacing" - ], - "syntax": "normal | <length-percentage>", - "extended": [] - } - ], - [ - "lighting-color", - { - "name": "lighting-color", - "href": "https://drafts.fxtf.org/filter-effects-1/#propdef-lighting-color", - "initial": "white", - "appliesTo": "feDiffuseLighting and feSpecularLighting elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "lighting-color", - "lightingColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "line-break", - { - "name": "line-break", - "href": "https://drafts.csswg.org/css-text-4/#propdef-line-break", - "initial": "auto", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "line-break", - "lineBreak" - ], - "syntax": "auto | loose | normal | strict | anywhere", - "extended": [] - } - ], - [ - "line-clamp", - { - "name": "line-clamp", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-line-clamp", - "initial": "none", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "line-clamp", - "lineClamp" - ], - "syntax": "none | [<integer [1,∞]> || <'block-ellipsis'>] -webkit-legacy?", - "extended": [] - } - ], - [ - "line-fit-edge", - { - "name": "line-fit-edge", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-line-fit-edge", - "initial": "leading", - "appliesTo": "inline boxes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "the specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "line-fit-edge", - "lineFitEdge" - ], - "syntax": "leading | <text-edge>", - "extended": [] - } - ], - [ - "line-grid", - { - "name": "line-grid", - "href": "https://drafts.csswg.org/css-line-grid-1/#propdef-line-grid", - "initial": "match-parent", - "appliesTo": "block, flex and grid containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "line-grid", - "lineGrid" - ], - "syntax": "match-parent | create", - "extended": [] - } - ], - [ - "line-height", - { - "name": "line-height", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-line-height", - "initial": "normal", - "appliesTo": "non-replaced inline boxes and SVG text content elements", - "inherited": "yes", - "percentages": "computed relative to 1em", - "computedValue": "the specified keyword, a number, or a computed <length> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "line-height", - "lineHeight" - ], - "syntax": "normal | <number [0,∞]> | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "line-height-step", - { - "name": "line-height-step", - "href": "https://drafts.csswg.org/css-rhythm-1/#propdef-line-height-step", - "initial": "0", - "appliesTo": "block containers", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "line-height-step", - "lineHeightStep" - ], - "syntax": "<length [0,∞]>", - "extended": [] - } - ], - [ - "line-padding", - { - "name": "line-padding", - "href": "https://drafts.csswg.org/css-text-4/#propdef-line-padding", - "initial": "0", - "appliesTo": "inline boxes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "line-padding", - "linePadding" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "line-snap", - { - "name": "line-snap", - "href": "https://drafts.csswg.org/css-line-grid-1/#propdef-line-snap", - "initial": "none", - "appliesTo": "block container elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "line-snap", - "lineSnap" - ], - "syntax": "none | baseline | contain", - "extended": [] - } - ], - [ - "list-style", - { - "name": "list-style", - "href": "https://drafts.csswg.org/css-lists-3/#propdef-list-style", - "initial": "see individual properties", - "appliesTo": "list items", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "list-style", - "listStyle" - ], - "syntax": "<'list-style-position'> || <'list-style-image'> || <'list-style-type'>", - "extended": [] - } - ], - [ - "list-style-image", - { - "name": "list-style-image", - "href": "https://drafts.csswg.org/css-lists-3/#propdef-list-style-image", - "initial": "none", - "appliesTo": "list items", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "the keyword noneor the computed <image>", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "list-style-image", - "listStyleImage" - ], - "syntax": "<image> | none", - "extended": [] - } - ], - [ - "list-style-position", - { - "name": "list-style-position", - "href": "https://drafts.csswg.org/css-lists-3/#propdef-list-style-position", - "initial": "outside", - "appliesTo": "list items", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "keyword, but see prose", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "list-style-position", - "listStylePosition" - ], - "syntax": "inside | outside", - "extended": [] - } - ], - [ - "list-style-type", - { - "name": "list-style-type", - "href": "https://drafts.csswg.org/css-lists-3/#propdef-list-style-type", - "initial": "disc", - "appliesTo": "list items", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "list-style-type", - "listStyleType" - ], - "syntax": "<counter-style> | <string> | none", - "extended": [] - } - ], - [ - "margin", - { - "name": "margin", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "margin" - ], - "syntax": "<'margin-top'>{1,4}", - "extended": [] - } - ], - [ - "margin-block", - { - "name": "margin-block", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-margin-block", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "margin-block", - "marginBlock" - ], - "syntax": "<'margin-top'>{1,2}", - "extended": [] - } - ], - [ - "margin-block-end", - { - "name": "margin-block-end", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-margin-block-end", - "initial": "0", - "appliesTo": "Same as margin-top", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as corresponding margin-* properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-block-end", - "marginBlockEnd" - ], - "syntax": "<'margin-top'>", - "extended": [] - } - ], - [ - "margin-block-start", - { - "name": "margin-block-start", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-margin-block-start", - "initial": "0", - "appliesTo": "Same as margin-top", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as corresponding margin-* properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-block-start", - "marginBlockStart" - ], - "syntax": "<'margin-top'>", - "extended": [] - } - ], - [ - "margin-bottom", - { - "name": "margin-bottom", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin-bottom", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-bottom", - "marginBottom" - ], - "syntax": "<length-percentage> | auto | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "margin-break", - { - "name": "margin-break", - "href": "https://drafts.csswg.org/css-break-4/#propdef-margin-break", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "margin-break", - "marginBreak" - ], - "syntax": "auto | keep | discard", - "extended": [] - } - ], - [ - "margin-inline", - { - "name": "margin-inline", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-margin-inline", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "margin-inline", - "marginInline" - ], - "syntax": "<'margin-top'>{1,2}", - "extended": [] - } - ], - [ - "margin-inline-end", - { - "name": "margin-inline-end", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-margin-inline-end", - "initial": "0", - "appliesTo": "Same as margin-top", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as corresponding margin-* properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-inline-end", - "marginInlineEnd" - ], - "syntax": "<'margin-top'>", - "extended": [] - } - ], - [ - "margin-inline-start", - { - "name": "margin-inline-start", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-margin-inline-start", - "initial": "0", - "appliesTo": "Same as margin-top", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as corresponding margin-* properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-inline-start", - "marginInlineStart" - ], - "syntax": "<'margin-top'>", - "extended": [] - } - ], - [ - "margin-left", - { - "name": "margin-left", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin-left", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-left", - "marginLeft" - ], - "syntax": "<length-percentage> | auto | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "margin-right", - { - "name": "margin-right", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin-right", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-right", - "marginRight" - ], - "syntax": "<length-percentage> | auto | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "margin-top", - { - "name": "margin-top", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin-top", - "initial": "0", - "appliesTo": "all elements except internal table elements, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "margin", - "styleDeclaration": [ - "margin-top", - "marginTop" - ], - "syntax": "<length-percentage> | auto | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "margin-trim", - { - "name": "margin-trim", - "href": "https://drafts.csswg.org/css-box-4/#propdef-margin-trim", - "initial": "none", - "appliesTo": "block containers, multi-column containers, flex containers, grid containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "a set of zero to four keywords indicating which sides to trim", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "margin-trim", - "marginTrim" - ], - "syntax": "none | [ block || inline ] | [ block-start || inline-start || block-end || inline-end ]", - "extended": [] - } - ], - [ - "marker", - { - "name": "marker", - "href": "https://svgwg.org/svg2-draft/painting.html#MarkerProperty", - "initial": "not defined for shorthand properties", - "appliesTo": "shapes", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "see individual properties", - "animationType": "discrete", - "styleDeclaration": [ - "marker" - ], - "syntax": "none | <marker-ref>", - "extended": [] - } - ], - [ - "marker-end", - { - "name": "marker-end", - "href": "https://svgwg.org/svg2-draft/painting.html#MarkerEndProperty", - "initial": "none", - "appliesTo": "shapes", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified, but with <url> values (that are part of a <marker-ref>) made absolute", - "animationType": "discrete", - "styleDeclaration": [ - "marker-end", - "markerEnd" - ], - "syntax": "none | <marker-ref>", - "extended": [] - } - ], - [ - "marker-mid", - { - "name": "marker-mid", - "href": "https://svgwg.org/svg2-draft/painting.html#MarkerMidProperty", - "initial": "none", - "appliesTo": "shapes", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified, but with <url> values (that are part of a <marker-ref>) made absolute", - "animationType": "discrete", - "styleDeclaration": [ - "marker-mid", - "markerMid" - ], - "syntax": "none | <marker-ref>", - "extended": [] - } - ], - [ - "marker-side", - { - "name": "marker-side", - "href": "https://drafts.csswg.org/css-lists-3/#propdef-marker-side", - "initial": "match-self", - "appliesTo": "list items", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "marker-side", - "markerSide" - ], - "syntax": "match-self | match-parent", - "extended": [] - } - ], - [ - "marker-start", - { - "name": "marker-start", - "href": "https://svgwg.org/svg2-draft/painting.html#MarkerStartProperty", - "initial": "none", - "appliesTo": "shapes", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified, but with <url> values (that are part of a <marker-ref>) made absolute", - "animationType": "discrete", - "styleDeclaration": [ - "marker-start", - "markerStart" - ], - "syntax": "none | <marker-ref>", - "extended": [] - } - ], - [ - "mask", - { - "name": "mask", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask", - "initial": "see individual properties", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "see individual properties", - "media": "visual", - "styleDeclaration": [ - "mask" - ], - "syntax": "<mask-layer>#", - "extended": [] - } - ], - [ - "mask-border", - { - "name": "mask-border", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-border", - "initial": "See individual properties", - "appliesTo": "See individual properties", - "inherited": "no", - "percentages": "n/a", - "computedValue": "See individual properties", - "canonicalOrder": "per grammar", - "animationType": "See individual properties", - "media": "visual", - "styleDeclaration": [ - "mask-border", - "maskBorder" - ], - "syntax": "<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>", - "extended": [] - } - ], - [ - "mask-border-mode", - { - "name": "mask-border-mode", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-border-mode", - "initial": "alpha", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-border-mode", - "maskBorderMode" - ], - "syntax": "luminance | alpha", - "extended": [] - } - ], - [ - "mask-border-outset", - { - "name": "mask-border-outset", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-border-outset", - "initial": "0", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "all <length>s made absolute, otherwise as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "mask-border-outset", - "maskBorderOutset" - ], - "syntax": "[ <length> | <number> ]{1,4}", - "extended": [] - } - ], - [ - "mask-border-repeat", - { - "name": "mask-border-repeat", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-border-repeat", - "initial": "stretch", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-border-repeat", - "maskBorderRepeat" - ], - "syntax": "[ stretch | repeat | round | space ]{1,2}", - "extended": [] - } - ], - [ - "mask-border-slice", - { - "name": "mask-border-slice", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-border-slice", - "initial": "0", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "refer to size of the mask border image", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "mask-border-slice", - "maskBorderSlice" - ], - "syntax": "[ <number> | <percentage> ]{1,4} fill?", - "extended": [] - } - ], - [ - "mask-border-source", - { - "name": "mask-border-source", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-border-source", - "initial": "none", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "they keyword none or the computed <image>", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-border-source", - "maskBorderSource" - ], - "syntax": "none | <image>", - "extended": [] - } - ], - [ - "mask-border-width", - { - "name": "mask-border-width", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-border-width", - "initial": "auto", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "relative to width/height of the mask border image area", - "computedValue": "all <length>s made absolute, otherwise as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "mask-border-width", - "maskBorderWidth" - ], - "syntax": "[ <length-percentage> | <number> | auto ]{1,4}", - "extended": [] - } - ], - [ - "mask-clip", - { - "name": "mask-clip", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-clip", - "initial": "border-box", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "list, each item the keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-clip", - "maskClip" - ], - "syntax": "[ <coord-box> | no-clip ]#", - "extended": [] - } - ], - [ - "mask-composite", - { - "name": "mask-composite", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-composite", - "initial": "add", - "appliesTo": "All elements. In SVG, it applies to container elements without the defs element and all graphics elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "list, each item the keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-composite", - "maskComposite" - ], - "syntax": "<compositing-operator>#", - "extended": [] - } - ], - [ - "mask-image", - { - "name": "mask-image", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-image", - "initial": "none", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "list, each item the keyword none, a computed <image>, or a computed <url>", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-image", - "maskImage" - ], - "syntax": "<mask-reference>#", - "extended": [] - } - ], - [ - "mask-mode", - { - "name": "mask-mode", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-mode", - "initial": "match-source", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "list, each item the keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-mode", - "maskMode" - ], - "syntax": "<masking-mode>#", - "extended": [] - } - ], - [ - "mask-origin", - { - "name": "mask-origin", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-origin", - "initial": "border-box", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "list, each item the keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-origin", - "maskOrigin" - ], - "syntax": "<coord-box>#", - "extended": [] - } - ], - [ - "mask-position", - { - "name": "mask-position", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-position", - "initial": "0% 0%", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "refer to size of mask painting area minus size of mask layer image; see text background-position [CSS3BG]", - "computedValue": "list, each item consists of two keywords representing the origin and two offsets from that origin, each given as an absolute length (if given a <length>), otherwise as a percentage.", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "mask-position", - "maskPosition" - ], - "syntax": "<position>#", - "extended": [] - } - ], - [ - "mask-repeat", - { - "name": "mask-repeat", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-repeat", - "initial": "repeat", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "list, each item a pair of keywords, one per dimension", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-repeat", - "maskRepeat" - ], - "syntax": "<repeat-style>#", - "extended": [] - } - ], - [ - "mask-size", - { - "name": "mask-size", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-size", - "initial": "auto", - "appliesTo": "All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element", - "inherited": "no", - "percentages": "n/a", - "computedValue": "list, each item as specified, but with lengths made absolute", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "mask-size", - "maskSize" - ], - "syntax": "<bg-size>#", - "extended": [] - } - ], - [ - "mask-type", - { - "name": "mask-type", - "href": "https://drafts.fxtf.org/css-masking-1/#propdef-mask-type", - "initial": "luminance", - "appliesTo": "mask elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "mask-type", - "maskType" - ], - "syntax": "luminance | alpha", - "extended": [] - } - ], - [ - "max-block-size", - { - "name": "max-block-size", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-max-block-size", - "initial": "none", - "appliesTo": "same as height and width", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as max-height, max-width", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "max-size", - "styleDeclaration": [ - "max-block-size", - "maxBlockSize" - ], - "syntax": "<'max-width'>", - "extended": [] - } - ], - [ - "max-height", - { - "name": "max-height", - "href": "https://drafts.csswg.org/css-sizing-3/#propdef-max-height", - "initial": "none", - "appliesTo": "all elements that accept width or height", - "inherited": "no", - "percentages": "relative to width/height of containing block", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value, recursing into fit-content()", - "logicalPropertyGroup": "max-size", - "styleDeclaration": [ - "max-height", - "maxHeight" - ], - "syntax": "none | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/", - "https://drafts.csswg.org/css-sizing-4/" - ] - } - ], - [ - "max-inline-size", - { - "name": "max-inline-size", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-max-inline-size", - "initial": "none", - "appliesTo": "same as height and width", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as max-height, max-width", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "max-size", - "styleDeclaration": [ - "max-inline-size", - "maxInlineSize" - ], - "syntax": "<'max-width'>", - "extended": [] - } - ], - [ - "max-lines", - { - "name": "max-lines", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-max-lines", - "initial": "none", - "appliesTo": "block containers which are also either line-clamp containers or fragmentation containers that capture region breaks", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the keyword none or an integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "max-lines", - "maxLines" - ], - "syntax": "none | <integer [1,∞]>", - "extended": [] - } - ], - [ - "max-width", - { - "name": "max-width", - "href": "https://drafts.csswg.org/css-sizing-3/#propdef-max-width", - "initial": "none", - "appliesTo": "all elements that accept width or height", - "inherited": "no", - "percentages": "relative to width/height of containing block", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value, recursing into fit-content()", - "logicalPropertyGroup": "max-size", - "styleDeclaration": [ - "max-width", - "maxWidth" - ], - "syntax": "none | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/", - "https://drafts.csswg.org/css-sizing-4/" - ] - } - ], - [ - "min-block-size", - { - "name": "min-block-size", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-min-block-size", - "initial": "0", - "appliesTo": "same as height and width", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as min-height, min-width", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "min-size", - "styleDeclaration": [ - "min-block-size", - "minBlockSize" - ], - "syntax": "<'min-width'>", - "extended": [] - } - ], - [ - "min-height", - { - "name": "min-height", - "href": "https://drafts.csswg.org/css-sizing-3/#propdef-min-height", - "initial": "auto", - "appliesTo": "all elements that accept width or height", - "inherited": "no", - "percentages": "relative to width/height of containing block", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value, recursing into fit-content()", - "logicalPropertyGroup": "min-size", - "styleDeclaration": [ - "min-height", - "minHeight" - ], - "syntax": "auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/", - "https://drafts.csswg.org/css-sizing-4/" - ] - } - ], - [ - "min-inline-size", - { - "name": "min-inline-size", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-min-inline-size", - "initial": "0", - "appliesTo": "same as height and width", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as min-height, min-width", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "min-size", - "styleDeclaration": [ - "min-inline-size", - "minInlineSize" - ], - "syntax": "<'min-width'>", - "extended": [] - } - ], - [ - "min-intrinsic-sizing", - { - "name": "min-intrinsic-sizing", - "href": "https://drafts.csswg.org/css-sizing-4/#propdef-min-intrinsic-sizing", - "initial": "legacy", - "appliesTo": "all elements except inline boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "min-intrinsic-sizing", - "minIntrinsicSizing" - ], - "syntax": "legacy | zero-if-scroll || zero-if-extrinsic", - "extended": [] - } - ], - [ - "min-width", - { - "name": "min-width", - "href": "https://drafts.csswg.org/css-sizing-3/#propdef-min-width", - "initial": "auto", - "appliesTo": "all elements that accept width or height", - "inherited": "no", - "percentages": "relative to width/height of containing block", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value, recursing into fit-content()", - "logicalPropertyGroup": "min-size", - "styleDeclaration": [ - "min-width", - "minWidth" - ], - "syntax": "auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/", - "https://drafts.csswg.org/css-sizing-4/" - ] - } - ], - [ - "mix-blend-mode", - { - "name": "mix-blend-mode", - "href": "https://drafts.fxtf.org/compositing-2/#propdef-mix-blend-mode", - "initial": "normal", - "appliesTo": "All elements. In SVG, it applies to container elements, graphics elements and graphics referencing elements. [SVG11]", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "media": "visual", - "animatable": "no", - "styleDeclaration": [ - "mix-blend-mode", - "mixBlendMode" - ], - "syntax": "<blend-mode> | plus-darker | plus-lighter", - "extended": [] - } - ], - [ - "nav-down", - { - "name": "nav-down", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-nav-down", - "initial": "auto", - "appliesTo": "all enabled elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "nav-down", - "navDown" - ], - "syntax": "auto | <id> [ current | root | <target-name> ]?", - "extended": [] - } - ], - [ - "nav-left", - { - "name": "nav-left", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-nav-left", - "initial": "auto", - "appliesTo": "all enabled elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "nav-left", - "navLeft" - ], - "syntax": "auto | <id> [ current | root | <target-name> ]?", - "extended": [] - } - ], - [ - "nav-right", - { - "name": "nav-right", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-nav-right", - "initial": "auto", - "appliesTo": "all enabled elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "nav-right", - "navRight" - ], - "syntax": "auto | <id> [ current | root | <target-name> ]?", - "extended": [] - } - ], - [ - "nav-up", - { - "name": "nav-up", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-nav-up", - "initial": "auto", - "appliesTo": "all enabled elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "nav-up", - "navUp" - ], - "syntax": "auto | <id> [ current | root | <target-name> ]?", - "extended": [] - } - ], - [ - "object-fit", - { - "name": "object-fit", - "href": "https://drafts.csswg.org/css-images-4/#propdef-object-fit", - "initial": "fill", - "appliesTo": "replaced elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "object-fit", - "objectFit" - ], - "syntax": "fill | none | [contain | cover] || scale-down", - "extended": [] - } - ], - [ - "object-position", - { - "name": "object-position", - "href": "https://drafts.csswg.org/css-images-3/#propdef-object-position", - "initial": "50% 50%", - "appliesTo": "replaced elements", - "inherited": "no", - "percentages": "refer to width and height of element itself", - "computedValue": "as for background-position", - "canonicalOrder": "the horizontal component of the <position>, followed by the vertical component", - "animationType": "as for background-position", - "styleDeclaration": [ - "object-position", - "objectPosition" - ], - "syntax": "<position>", - "extended": [] - } - ], - [ - "offset", - { - "name": "offset", - "href": "https://drafts.fxtf.org/motion-1/#propdef-offset", - "initial": "see individual properties", - "appliesTo": "transformable elements", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "offset" - ], - "syntax": "[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?", - "extended": [] - } - ], - [ - "offset-anchor", - { - "name": "offset-anchor", - "href": "https://drafts.fxtf.org/motion-1/#propdef-offset-anchor", - "initial": "auto", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "relative to the width and the height of the element’s reference box", - "computedValue": "the auto keyword or a computed <position>", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "offset-anchor", - "offsetAnchor" - ], - "syntax": "auto | <position>", - "extended": [] - } - ], - [ - "offset-distance", - { - "name": "offset-distance", - "href": "https://drafts.fxtf.org/motion-1/#propdef-offset-distance", - "initial": "0", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "relative to the offset path length", - "computedValue": "a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "offset-distance", - "offsetDistance" - ], - "syntax": "<length-percentage>", - "extended": [] - } - ], - [ - "offset-path", - { - "name": "offset-path", - "href": "https://drafts.fxtf.org/motion-1/#propdef-offset-path", - "initial": "none", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "offset-path", - "offsetPath" - ], - "syntax": "none | <offset-path> || <coord-box>", - "extended": [] - } - ], - [ - "offset-position", - { - "name": "offset-position", - "href": "https://drafts.fxtf.org/motion-1/#propdef-offset-position", - "initial": "normal", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "Refer to the size of containing block", - "computedValue": "The normal or auto keywords, or a computed <position>", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "offset-position", - "offsetPosition" - ], - "syntax": "normal | auto | <position>", - "extended": [] - } - ], - [ - "offset-rotate", - { - "name": "offset-rotate", - "href": "https://drafts.fxtf.org/motion-1/#propdef-offset-rotate", - "initial": "auto", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "computed <angle> value, optionally preceded by auto", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "offset-rotate", - "offsetRotate" - ], - "syntax": "[ auto | reverse ] || <angle>", - "extended": [] - } - ], - [ - "opacity", - { - "name": "opacity", - "href": "https://drafts.csswg.org/css-color-4/#propdef-opacity", - "initial": "1", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "map to the range [0,1]", - "computedValue": "specified number, clamped to the range [0,1]", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "opacity" - ], - "syntax": "<opacity-value>", - "extended": [] - } - ], - [ - "order", - { - "name": "order", - "href": "https://drafts.csswg.org/css-display-4/#propdef-order", - "initial": "0", - "appliesTo": "flex items and grid items", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "order" - ], - "syntax": "<integer>", - "extended": [] - } - ], - [ - "orphans", - { - "name": "orphans", - "href": "https://drafts.csswg.org/css-break-4/#propdef-orphans", - "initial": "2", - "appliesTo": "block containers that establish an inline formatting context", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "orphans" - ], - "syntax": "<integer [1,∞]>", - "extended": [] - } - ], - [ - "outline", - { - "name": "outline", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-outline", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "outline" - ], - "syntax": "<'outline-width'> || <'outline-style'> || <'outline-color'>", - "extended": [] - } - ], - [ - "outline-color", - { - "name": "outline-color", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-outline-color", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see below", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "outline-color", - "outlineColor" - ], - "syntax": "auto | <'border-top-color'>", - "extended": [] - } - ], - [ - "outline-offset", - { - "name": "outline-offset", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-outline-offset", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "outline-offset", - "outlineOffset" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "outline-style", - { - "name": "outline-style", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-outline-style", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "outline-style", - "outlineStyle" - ], - "syntax": "auto | <outline-line-style>", - "extended": [] - } - ], - [ - "outline-width", - { - "name": "outline-width", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-outline-width", - "initial": "medium", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "absolute length, snapped as a border width", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "outline-width", - "outlineWidth" - ], - "syntax": "<line-width>", - "extended": [] - } - ], - [ - "overflow", - { - "name": "overflow", - "href": "https://drafts.csswg.org/css-overflow-3/#propdef-overflow", - "initial": "visible", - "appliesTo": "block containers [CSS2], flex containers [CSS3-FLEXBOX], and grid containers [CSS3-GRID-LAYOUT]", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "discrete", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "overflow" - ], - "syntax": "<'overflow-block'>{1,2}", - "extended": [] - } - ], - [ - "overflow-anchor", - { - "name": "overflow-anchor", - "href": "https://drafts.csswg.org/css-scroll-anchoring-1/#propdef-overflow-anchor", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "overflow-anchor", - "overflowAnchor" - ], - "syntax": "auto | none", - "extended": [] - } - ], - [ - "overflow-block", - { - "name": "overflow-block", - "href": "https://drafts.csswg.org/css-overflow-3/#propdef-overflow-block", - "initial": "visible", - "appliesTo": "block containers [CSS2], flex containers [CSS3-FLEXBOX], grid containers [CSS3-GRID-LAYOUT]", - "inherited": "no", - "percentages": "N/A", - "computedValue": "usually specified value, but see text", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "overflow", - "styleDeclaration": [ - "overflow-block", - "overflowBlock" - ], - "syntax": "visible | hidden | clip | scroll | auto", - "extended": [] - } - ], - [ - "overflow-clip-margin", - { - "name": "overflow-clip-margin", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "overflow-clip-margin", - "overflowClipMargin" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-block", - { - "name": "overflow-clip-margin-block", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-block", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "overflow-clip-margin-block", - "overflowClipMarginBlock" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-block-end", - { - "name": "overflow-clip-margin-block-end", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-block-end", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "the computed <length> and a <visual-box> keyword", - "animationType": "per computed value if the <visual-box> values match; otherwise discrete", - "canonicalOrder": "per grammar", - "logicalPropertyGroup": "overflow-clip-margin", - "styleDeclaration": [ - "overflow-clip-margin-block-end", - "overflowClipMarginBlockEnd" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-block-start", - { - "name": "overflow-clip-margin-block-start", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-block-start", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "the computed <length> and a <visual-box> keyword", - "animationType": "per computed value if the <visual-box> values match; otherwise discrete", - "canonicalOrder": "per grammar", - "logicalPropertyGroup": "overflow-clip-margin", - "styleDeclaration": [ - "overflow-clip-margin-block-start", - "overflowClipMarginBlockStart" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-bottom", - { - "name": "overflow-clip-margin-bottom", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-bottom", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "the computed <length> and a <visual-box> keyword", - "animationType": "per computed value if the <visual-box> values match; otherwise discrete", - "canonicalOrder": "per grammar", - "logicalPropertyGroup": "overflow-clip-margin", - "styleDeclaration": [ - "overflow-clip-margin-bottom", - "overflowClipMarginBottom" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-inline", - { - "name": "overflow-clip-margin-inline", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-inline", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "overflow-clip-margin-inline", - "overflowClipMarginInline" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-inline-end", - { - "name": "overflow-clip-margin-inline-end", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-inline-end", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "the computed <length> and a <visual-box> keyword", - "animationType": "per computed value if the <visual-box> values match; otherwise discrete", - "canonicalOrder": "per grammar", - "logicalPropertyGroup": "overflow-clip-margin", - "styleDeclaration": [ - "overflow-clip-margin-inline-end", - "overflowClipMarginInlineEnd" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-inline-start", - { - "name": "overflow-clip-margin-inline-start", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-inline-start", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "the computed <length> and a <visual-box> keyword", - "animationType": "per computed value if the <visual-box> values match; otherwise discrete", - "canonicalOrder": "per grammar", - "logicalPropertyGroup": "overflow-clip-margin", - "styleDeclaration": [ - "overflow-clip-margin-inline-start", - "overflowClipMarginInlineStart" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-left", - { - "name": "overflow-clip-margin-left", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-left", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "the computed <length> and a <visual-box> keyword", - "animationType": "per computed value if the <visual-box> values match; otherwise discrete", - "canonicalOrder": "per grammar", - "logicalPropertyGroup": "overflow-clip-margin", - "styleDeclaration": [ - "overflow-clip-margin-left", - "overflowClipMarginLeft" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-right", - { - "name": "overflow-clip-margin-right", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-right", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "the computed <length> and a <visual-box> keyword", - "animationType": "per computed value if the <visual-box> values match; otherwise discrete", - "canonicalOrder": "per grammar", - "logicalPropertyGroup": "overflow-clip-margin", - "styleDeclaration": [ - "overflow-clip-margin-right", - "overflowClipMarginRight" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-clip-margin-top", - { - "name": "overflow-clip-margin-top", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-top", - "initial": "0px", - "appliesTo": "boxes to which overflow applies", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "the computed <length> and a <visual-box> keyword", - "animationType": "per computed value if the <visual-box> values match; otherwise discrete", - "canonicalOrder": "per grammar", - "logicalPropertyGroup": "overflow-clip-margin", - "styleDeclaration": [ - "overflow-clip-margin-top", - "overflowClipMarginTop" - ], - "syntax": "<visual-box> || <length [0,∞]>", - "extended": [] - } - ], - [ - "overflow-inline", - { - "name": "overflow-inline", - "href": "https://drafts.csswg.org/css-overflow-3/#propdef-overflow-inline", - "initial": "visible", - "appliesTo": "block containers [CSS2], flex containers [CSS3-FLEXBOX], grid containers [CSS3-GRID-LAYOUT]", - "inherited": "no", - "percentages": "N/A", - "computedValue": "usually specified value, but see text", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "overflow", - "styleDeclaration": [ - "overflow-inline", - "overflowInline" - ], - "syntax": "visible | hidden | clip | scroll | auto", - "extended": [] - } - ], - [ - "overflow-wrap", - { - "name": "overflow-wrap", - "href": "https://drafts.csswg.org/css-text-4/#propdef-overflow-wrap", - "initial": "normal", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "overflow-wrap", - "overflowWrap" - ], - "syntax": "normal | break-word | anywhere", - "extended": [] - } - ], - [ - "overflow-x", - { - "name": "overflow-x", - "href": "https://drafts.csswg.org/css-overflow-3/#propdef-overflow-x", - "initial": "visible", - "appliesTo": "block containers [CSS2], flex containers [CSS3-FLEXBOX], grid containers [CSS3-GRID-LAYOUT]", - "inherited": "no", - "percentages": "N/A", - "computedValue": "usually specified value, but see text", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "overflow", - "styleDeclaration": [ - "overflow-x", - "overflowX" - ], - "syntax": "visible | hidden | clip | scroll | auto", - "extended": [] - } - ], - [ - "overflow-y", - { - "name": "overflow-y", - "href": "https://drafts.csswg.org/css-overflow-3/#propdef-overflow-y", - "initial": "visible", - "appliesTo": "block containers [CSS2], flex containers [CSS3-FLEXBOX], grid containers [CSS3-GRID-LAYOUT]", - "inherited": "no", - "percentages": "N/A", - "computedValue": "usually specified value, but see text", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "overflow", - "styleDeclaration": [ - "overflow-y", - "overflowY" - ], - "syntax": "visible | hidden | clip | scroll | auto", - "extended": [] - } - ], - [ - "overlay", - { - "name": "overlay", - "href": "https://drafts.csswg.org/css-position-4/#propdef-overlay", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "see prose", - "styleDeclaration": [ - "overlay" - ], - "syntax": "none | auto", - "extended": [] - } - ], - [ - "overscroll-behavior", - { - "name": "overscroll-behavior", - "href": "https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior", - "initial": "auto auto", - "appliesTo": "scroll container elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "overscroll-behavior", - "overscrollBehavior" - ], - "syntax": "[ contain | none | auto ]{1,2}", - "extended": [] - } - ], - [ - "overscroll-behavior-block", - { - "name": "overscroll-behavior-block", - "href": "https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior-block", - "initial": "auto", - "appliesTo": "scroll container elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "overscroll-behavior", - "media": "visual", - "styleDeclaration": [ - "overscroll-behavior-block", - "overscrollBehaviorBlock" - ], - "syntax": "contain | none | auto", - "extended": [] - } - ], - [ - "overscroll-behavior-inline", - { - "name": "overscroll-behavior-inline", - "href": "https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior-inline", - "initial": "auto", - "appliesTo": "scroll container elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "overscroll-behavior", - "media": "visual", - "styleDeclaration": [ - "overscroll-behavior-inline", - "overscrollBehaviorInline" - ], - "syntax": "contain | none | auto", - "extended": [] - } - ], - [ - "overscroll-behavior-x", - { - "name": "overscroll-behavior-x", - "href": "https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior-x", - "initial": "auto", - "appliesTo": "scroll container elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "overscroll-behavior", - "media": "visual", - "styleDeclaration": [ - "overscroll-behavior-x", - "overscrollBehaviorX" - ], - "syntax": "contain | none | auto", - "extended": [] - } - ], - [ - "overscroll-behavior-y", - { - "name": "overscroll-behavior-y", - "href": "https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior-y", - "initial": "auto", - "appliesTo": "scroll container elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "logicalPropertyGroup": "overscroll-behavior", - "media": "visual", - "styleDeclaration": [ - "overscroll-behavior-y", - "overscrollBehaviorY" - ], - "syntax": "contain | none | auto", - "extended": [] - } - ], - [ - "padding", - { - "name": "padding", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "padding" - ], - "syntax": "<'padding-top'>{1,4}", - "extended": [] - } - ], - [ - "padding-block", - { - "name": "padding-block", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-padding-block", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "padding-block", - "paddingBlock" - ], - "syntax": "<'padding-top'>{1,2}", - "extended": [] - } - ], - [ - "padding-block-end", - { - "name": "padding-block-end", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-padding-block-end", - "initial": "0", - "appliesTo": "Same as padding-top", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as corresponding padding-* properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-block-end", - "paddingBlockEnd" - ], - "syntax": "<'padding-top'>", - "extended": [] - } - ], - [ - "padding-block-start", - { - "name": "padding-block-start", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-padding-block-start", - "initial": "0", - "appliesTo": "Same as padding-top", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as corresponding padding-* properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-block-start", - "paddingBlockStart" - ], - "syntax": "<'padding-top'>", - "extended": [] - } - ], - [ - "padding-bottom", - { - "name": "padding-bottom", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding-bottom", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-bottom", - "paddingBottom" - ], - "syntax": "<length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "padding-inline", - { - "name": "padding-inline", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-padding-inline", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "padding-inline", - "paddingInline" - ], - "syntax": "<'padding-top'>{1,2}", - "extended": [] - } - ], - [ - "padding-inline-end", - { - "name": "padding-inline-end", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-padding-inline-end", - "initial": "0", - "appliesTo": "Same as padding-top", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as corresponding padding-* properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-inline-end", - "paddingInlineEnd" - ], - "syntax": "<'padding-top'>", - "extended": [] - } - ], - [ - "padding-inline-start", - { - "name": "padding-inline-start", - "href": "https://drafts.csswg.org/css-logical-1/#propdef-padding-inline-start", - "initial": "0", - "appliesTo": "Same as padding-top", - "inherited": "no", - "percentages": "As for the corresponding physical property", - "computedValue": "Same as corresponding padding-* properties", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-inline-start", - "paddingInlineStart" - ], - "syntax": "<'padding-top'>", - "extended": [] - } - ], - [ - "padding-left", - { - "name": "padding-left", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding-left", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-left", - "paddingLeft" - ], - "syntax": "<length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "padding-right", - { - "name": "padding-right", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding-right", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-right", - "paddingRight" - ], - "syntax": "<length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "padding-top", - { - "name": "padding-top", - "href": "https://drafts.csswg.org/css-box-4/#propdef-padding-top", - "initial": "0", - "appliesTo": "all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers", - "inherited": "no", - "percentages": "refer to logical width of containing block", - "computedValue": "a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "padding", - "styleDeclaration": [ - "padding-top", - "paddingTop" - ], - "syntax": "<length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "page", - { - "name": "page", - "href": "https://drafts.csswg.org/css-page-3/#propdef-page", - "initial": "auto", - "appliesTo": "boxes that create class A break points", - "inherited": "no (but see prose)", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "page" - ], - "syntax": "auto | <custom-ident>", - "extended": [] - } - ], - [ - "page-break-after", - { - "name": "page-break-after", - "href": "https://drafts.csswg.org/css2/#propdef-page-break-after", - "initial": "auto", - "appliesTo": "block-level elements (but see text)", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "media": "visual, paged", - "styleDeclaration": [ - "page-break-after", - "pageBreakAfter" - ], - "syntax": "auto | always | avoid | left | right | inherit", - "extended": [] - } - ], - [ - "page-break-before", - { - "name": "page-break-before", - "href": "https://drafts.csswg.org/css2/#propdef-page-break-before", - "initial": "auto", - "appliesTo": "block-level elements (but see text)", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "media": "visual, paged", - "styleDeclaration": [ - "page-break-before", - "pageBreakBefore" - ], - "syntax": "auto | always | avoid | left | right | inherit", - "extended": [] - } - ], - [ - "page-break-inside", - { - "name": "page-break-inside", - "href": "https://drafts.csswg.org/css2/#propdef-page-break-inside", - "initial": "auto", - "appliesTo": "block-level elements (but see text)", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "media": "visual, paged", - "styleDeclaration": [ - "page-break-inside", - "pageBreakInside" - ], - "syntax": "avoid | auto | inherit", - "extended": [] - } - ], - [ - "pause", - { - "name": "pause", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-pause", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "pause" - ], - "syntax": "<'pause-before'> <'pause-after'>?", - "extended": [] - } - ], - [ - "pause-after", - { - "name": "pause-after", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-pause-after", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "pause-after", - "pauseAfter" - ], - "syntax": "<time [0s,∞]> | none | x-weak | weak | medium | strong | x-strong", - "extended": [] - } - ], - [ - "pause-before", - { - "name": "pause-before", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-pause-before", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "pause-before", - "pauseBefore" - ], - "syntax": "<time [0s,∞]> | none | x-weak | weak | medium | strong | x-strong", - "extended": [] - } - ], - [ - "perspective", - { - "name": "perspective", - "href": "https://drafts.csswg.org/css-transforms-2/#propdef-perspective", - "initial": "none", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the keyword none or an absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "perspective" - ], - "syntax": "none | <length [0,∞]>", - "extended": [] - } - ], - [ - "perspective-origin", - { - "name": "perspective-origin", - "href": "https://drafts.csswg.org/css-transforms-2/#propdef-perspective-origin", - "initial": "50% 50%", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "refer to the size of the reference box", - "computedValue": "see background-position", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "perspective-origin", - "perspectiveOrigin" - ], - "syntax": "<position>", - "extended": [] - } - ], - [ - "place-content", - { - "name": "place-content", - "href": "https://drafts.csswg.org/css-align-3/#propdef-place-content", - "initial": "normal", - "appliesTo": "see individual properties", - "inherited": "no", - "percentages": "n/a", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "place-content", - "placeContent" - ], - "syntax": "<'align-content'> <'justify-content'>?", - "extended": [] - } - ], - [ - "place-items", - { - "name": "place-items", - "href": "https://drafts.csswg.org/css-align-3/#propdef-place-items", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "place-items", - "placeItems" - ], - "syntax": "<'align-items'> <'justify-items'>?", - "extended": [] - } - ], - [ - "place-self", - { - "name": "place-self", - "href": "https://drafts.csswg.org/css-align-3/#propdef-place-self", - "initial": "auto", - "appliesTo": "see individual properties", - "inherited": "no", - "percentages": "n/a", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "place-self", - "placeSelf" - ], - "syntax": "<'align-self'> <'justify-self'>?", - "extended": [] - } - ], - [ - "pointer-events", - { - "name": "pointer-events", - "href": "https://svgwg.org/svg2-draft/interact.html#PointerEventsProperty", - "initial": "auto", - "appliesTo": "container elements, graphics elements and ‘use’", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified", - "animationType": "discrete", - "styleDeclaration": [ - "pointer-events", - "pointerEvents" - ], - "syntax": "auto | bounding-box | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | none", - "extended": [] - } - ], - [ - "position", - { - "name": "position", - "href": "https://drafts.csswg.org/css-position-3/#propdef-position", - "initial": "static", - "appliesTo": "all elements except table-column-group and table-column", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "position" - ], - "syntax": "static | relative | absolute | sticky | fixed | <running()>", - "extended": [ - "https://drafts.csswg.org/css-gcpm-3/" - ] - } - ], - [ - "position-anchor", - { - "name": "position-anchor", - "href": "https://drafts.csswg.org/css-anchor-position-1/#propdef-position-anchor", - "initial": "auto", - "appliesTo": "absolutely positioned boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "position-anchor", - "positionAnchor" - ], - "syntax": "auto | <anchor-name>", - "extended": [] - } - ], - [ - "position-area", - { - "name": "position-area", - "href": "https://drafts.csswg.org/css-anchor-position-1/#propdef-position-area", - "initial": "none", - "appliesTo": "positioned boxes with a default anchor box", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none or a pair of keywords, see § 3.1.3 Computed Value and Serialization of <position-area>", - "canonicalOrder": "per grammar", - "animationType": "TBD", - "styleDeclaration": [ - "position-area", - "positionArea" - ], - "syntax": "none | <position-area>", - "extended": [] - } - ], - [ - "position-try", - { - "name": "position-try", - "href": "https://drafts.csswg.org/css-anchor-position-1/#propdef-position-try", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "position-try", - "positionTry" - ], - "syntax": "<'position-try-order'>? <'position-try-fallbacks'>", - "extended": [] - } - ], - [ - "position-try-fallbacks", - { - "name": "position-try-fallbacks", - "href": "https://drafts.csswg.org/css-anchor-position-1/#propdef-position-try-fallbacks", - "initial": "none", - "appliesTo": "absolutely positioned boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "position-try-fallbacks", - "positionTryFallbacks" - ], - "syntax": "none | [ [<dashed-ident> || <try-tactic>] | <position-area> ]#", - "extended": [] - } - ], - [ - "position-try-order", - { - "name": "position-try-order", - "href": "https://drafts.csswg.org/css-anchor-position-1/#propdef-position-try-order", - "initial": "normal", - "appliesTo": "absolutely positioned boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "position-try-order", - "positionTryOrder" - ], - "syntax": "normal | <try-size>", - "extended": [] - } - ], - [ - "position-visibility", - { - "name": "position-visibility", - "href": "https://drafts.csswg.org/css-anchor-position-1/#propdef-position-visibility", - "initial": "anchors-visible", - "appliesTo": "absolutely positioned boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "position-visibility", - "positionVisibility" - ], - "syntax": "always | [ anchors-valid || anchors-visible || no-overflow ]", - "extended": [] - } - ], - [ - "print-color-adjust", - { - "name": "print-color-adjust", - "href": "https://drafts.csswg.org/css-color-adjust-1/#propdef-print-color-adjust", - "initial": "economy", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "print-color-adjust", - "printColorAdjust" - ], - "syntax": "economy | exact", - "extended": [] - } - ], - [ - "quotes", - { - "name": "quotes", - "href": "https://drafts.csswg.org/css-content-3/#propdef-quotes", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "the keyword none, the keyword auto or match-parent, or a list, each item a pair of string values", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "quotes" - ], - "syntax": "auto | none | match-parent | [ <string> <string> ]+", - "extended": [] - } - ], - [ - "reading-flow", - { - "name": "reading-flow", - "href": "https://drafts.csswg.org/css-display-4/#propdef-reading-flow", - "initial": "normal", - "appliesTo": "block, flex and grid containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "reading-flow", - "readingFlow" - ], - "syntax": "normal | source-order | flex-visual | flex-flow | grid-rows | grid-columns | grid-order", - "extended": [] - } - ], - [ - "region-fragment", - { - "name": "region-fragment", - "href": "https://drafts.csswg.org/css-regions-1/#propdef-region-fragment", - "initial": "auto", - "appliesTo": "CSS Regions", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "region-fragment", - "regionFragment" - ], - "syntax": "auto | break", - "extended": [] - } - ], - [ - "resize", - { - "name": "resize", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-resize", - "initial": "none", - "appliesTo": "elements that are scroll containers and optionally replaced elements such as images, videos, and iframes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "resize" - ], - "syntax": "none | both | horizontal | vertical | block | inline", - "extended": [] - } - ], - [ - "rest", - { - "name": "rest", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-rest", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "rest" - ], - "syntax": "<'rest-before'> <'rest-after'>?", - "extended": [] - } - ], - [ - "rest-after", - { - "name": "rest-after", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-rest-after", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "rest-after", - "restAfter" - ], - "syntax": "<time [0s,∞]> | none | x-weak | weak | medium | strong | x-strong", - "extended": [] - } - ], - [ - "rest-before", - { - "name": "rest-before", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-rest-before", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "rest-before", - "restBefore" - ], - "syntax": "<time [0s,∞]> | none | x-weak | weak | medium | strong | x-strong", - "extended": [] - } - ], - [ - "right", - { - "name": "right", - "href": "https://drafts.csswg.org/css-position-3/#propdef-right", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "right" - ], - "syntax": "auto | <length-percentage> | <anchor()> | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "rotate", - { - "name": "rotate", - "href": "https://drafts.csswg.org/css-transforms-2/#propdef-rotate", - "initial": "none", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none, or an <angle> with an axis consisting of a list of three <number>s", - "canonicalOrder": "per grammar", - "animationType": "as SLERP, but see below for none", - "styleDeclaration": [ - "rotate" - ], - "syntax": "none | <angle> | [ x | y | z | <number>{3} ] && <angle>", - "extended": [] - } - ], - [ - "row-gap", - { - "name": "row-gap", - "href": "https://drafts.csswg.org/css-align-3/#propdef-row-gap", - "initial": "normal", - "appliesTo": "multi-column containers, flex containers, grid containers", - "inherited": "no", - "percentages": "see § 8.3 Percentages In gap Properties", - "computedValue": "specified keyword, else a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "row-gap", - "rowGap" - ], - "syntax": "normal | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "row-rule", - { - "name": "row-rule", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-row-rule", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "row-rule", - "rowRule" - ], - "syntax": "<gap-rule-list> | <gap-auto-rule-list>", - "extended": [] - } - ], - [ - "row-rule-break", - { - "name": "row-rule-break", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-break", - "initial": "spanning-item", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "row-rule-break", - "rowRuleBreak" - ], - "syntax": "none | spanning-item | intersection", - "extended": [] - } - ], - [ - "row-rule-color", - { - "name": "row-rule-color", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-color", - "initial": "currentcolor", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "repeatable list, see § 3.4.1 Interpolation behavior.", - "styleDeclaration": [ - "row-rule-color", - "rowRuleColor" - ], - "syntax": "<line-color-list> | <auto-line-color-list>", - "extended": [] - } - ], - [ - "row-rule-outset", - { - "name": "row-rule-outset", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-outset", - "initial": "50%", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "refer to the crossing gap width", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "row-rule-outset", - "rowRuleOutset" - ], - "syntax": "<length-percentage>", - "extended": [] - } - ], - [ - "row-rule-style", - { - "name": "row-rule-style", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-style", - "initial": "none", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "row-rule-style", - "rowRuleStyle" - ], - "syntax": "<line-style-list> | <auto-line-style-list>", - "extended": [] - } - ], - [ - "row-rule-width", - { - "name": "row-rule-width", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-width", - "initial": "medium", - "appliesTo": "grid containers, flex containers, multicol containers, and masonry containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "list of absolute lengths, snapped as a border width", - "canonicalOrder": "per grammar", - "animationType": "repeatable list, see § 3.4.1 Interpolation behavior.", - "styleDeclaration": [ - "row-rule-width", - "rowRuleWidth" - ], - "syntax": "<line-width-list> | <auto-line-width-list>", - "extended": [] - } - ], - [ - "ruby-align", - { - "name": "ruby-align", - "href": "https://drafts.csswg.org/css-ruby-1/#propdef-ruby-align", - "initial": "space-around", - "appliesTo": "ruby bases, ruby annotations, ruby base containers, ruby annotation containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "ruby-align", - "rubyAlign" - ], - "syntax": "start | center | space-between | space-around", - "extended": [] - } - ], - [ - "ruby-merge", - { - "name": "ruby-merge", - "href": "https://drafts.csswg.org/css-ruby-1/#propdef-ruby-merge", - "initial": "separate", - "appliesTo": "interlinear ruby annotation containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "ruby-merge", - "rubyMerge" - ], - "syntax": "separate | merge | auto", - "extended": [] - } - ], - [ - "ruby-overhang", - { - "name": "ruby-overhang", - "href": "https://drafts.csswg.org/css-ruby-1/#propdef-ruby-overhang", - "initial": "auto", - "appliesTo": "ruby annotation containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "ruby-overhang", - "rubyOverhang" - ], - "syntax": "auto | none", - "extended": [] - } - ], - [ - "ruby-position", - { - "name": "ruby-position", - "href": "https://drafts.csswg.org/css-ruby-1/#propdef-ruby-position", - "initial": "alternate", - "appliesTo": "ruby annotation containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "ruby-position", - "rubyPosition" - ], - "syntax": "[ alternate || [ over | under ] ] | inter-character", - "extended": [] - } - ], - [ - "rule", - { - "name": "rule", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-rule", - "initial": "see individual properties", - "appliesTo": "Same as column-rule and row-rule", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "rule" - ], - "syntax": "<'column-rule'>", - "extended": [] - } - ], - [ - "rule-break", - { - "name": "rule-break", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-rule-break", - "initial": "see individual properties", - "appliesTo": "Same as column-rule-break and row-rule-break", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "rule-break", - "ruleBreak" - ], - "syntax": "<'column-rule-break'>", - "extended": [] - } - ], - [ - "rule-color", - { - "name": "rule-color", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-rule-color", - "initial": "see individual properties", - "appliesTo": "Same as column-rule-color and row-rule-color", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "rule-color", - "ruleColor" - ], - "syntax": "<'column-rule-color'>", - "extended": [] - } - ], - [ - "rule-outset", - { - "name": "rule-outset", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-rule-outset", - "initial": "see individual properties", - "appliesTo": "Same as column-rule-outset and row-rule-outset", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "rule-outset", - "ruleOutset" - ], - "syntax": "<'column-rule-outset'>", - "extended": [] - } - ], - [ - "rule-style", - { - "name": "rule-style", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-rule-style", - "initial": "see individual properties", - "appliesTo": "Same as column-rule-style and row-rule-style", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "rule-style", - "ruleStyle" - ], - "syntax": "<'column-rule-style'>", - "extended": [] - } - ], - [ - "rule-width", - { - "name": "rule-width", - "href": "https://drafts.csswg.org/css-gaps-1/#propdef-rule-width", - "initial": "see individual properties", - "appliesTo": "Same as column-rule-width and row-rule-width", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "rule-width", - "ruleWidth" - ], - "syntax": "<'column-rule-width'>", - "extended": [] - } - ], - [ - "scale", - { - "name": "scale", - "href": "https://drafts.csswg.org/css-transforms-2/#propdef-scale", - "initial": "none", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none, or a list of 3 <number>s", - "canonicalOrder": "per grammar", - "animationType": "by computed value, but see below for none", - "styleDeclaration": [ - "scale" - ], - "syntax": "none | [ <number> | <percentage> ]{1,3}", - "extended": [] - } - ], - [ - "scroll-behavior", - { - "name": "scroll-behavior", - "href": "https://drafts.csswg.org/css-overflow-3/#propdef-scroll-behavior", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "scroll-behavior", - "scrollBehavior" - ], - "syntax": "auto | smooth", - "extended": [] - } - ], - [ - "scroll-margin", - { - "name": "scroll-margin", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "per side, an absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "scroll-margin", - "scrollMargin" - ], - "syntax": "<length>{1,4}", - "extended": [] - } - ], - [ - "scroll-margin-block", - { - "name": "scroll-margin-block", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "see individual properties", - "animationType": "by computed value type", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "scroll-margin-block", - "scrollMarginBlock" - ], - "syntax": "<length>{1,2}", - "extended": [] - } - ], - [ - "scroll-margin-block-end", - { - "name": "scroll-margin-block-end", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block-end", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-margin", - "styleDeclaration": [ - "scroll-margin-block-end", - "scrollMarginBlockEnd" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "scroll-margin-block-start", - { - "name": "scroll-margin-block-start", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block-start", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-margin", - "styleDeclaration": [ - "scroll-margin-block-start", - "scrollMarginBlockStart" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "scroll-margin-bottom", - { - "name": "scroll-margin-bottom", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-bottom", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-margin", - "styleDeclaration": [ - "scroll-margin-bottom", - "scrollMarginBottom" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "scroll-margin-inline", - { - "name": "scroll-margin-inline", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "see individual properties", - "animationType": "by computed value type", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "scroll-margin-inline", - "scrollMarginInline" - ], - "syntax": "<length>{1,2}", - "extended": [] - } - ], - [ - "scroll-margin-inline-end", - { - "name": "scroll-margin-inline-end", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline-end", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-margin", - "styleDeclaration": [ - "scroll-margin-inline-end", - "scrollMarginInlineEnd" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "scroll-margin-inline-start", - { - "name": "scroll-margin-inline-start", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline-start", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-margin", - "styleDeclaration": [ - "scroll-margin-inline-start", - "scrollMarginInlineStart" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "scroll-margin-left", - { - "name": "scroll-margin-left", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-left", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-margin", - "styleDeclaration": [ - "scroll-margin-left", - "scrollMarginLeft" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "scroll-margin-right", - { - "name": "scroll-margin-right", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-right", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-margin", - "styleDeclaration": [ - "scroll-margin-right", - "scrollMarginRight" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "scroll-margin-top", - { - "name": "scroll-margin-top", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-top", - "initial": "0", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-margin", - "styleDeclaration": [ - "scroll-margin-top", - "scrollMarginTop" - ], - "syntax": "<length>", - "extended": [] - } - ], - [ - "scroll-marker-group", - { - "name": "scroll-marker-group", - "href": "https://drafts.csswg.org/css-overflow-5/#propdef-scroll-marker-group", - "initial": "none", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "scroll-marker-group", - "scrollMarkerGroup" - ], - "syntax": "none | before | after", - "extended": [] - } - ], - [ - "scroll-padding", - { - "name": "scroll-padding", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the corresponding dimension of the scroll container’s scrollport", - "computedValue": "per side, either the keyword auto or a computed <length-percentage> value", - "animationType": "by computed value type", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "scroll-padding", - "scrollPadding" - ], - "syntax": "[ auto | <length-percentage [0,∞]> ]{1,4}", - "extended": [] - } - ], - [ - "scroll-padding-block", - { - "name": "scroll-padding-block", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "see individual properties", - "animationType": "by computed value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "scroll-padding-block", - "scrollPaddingBlock" - ], - "syntax": "[ auto | <length-percentage [0,∞]> ]{1,2}", - "extended": [] - } - ], - [ - "scroll-padding-block-end", - { - "name": "scroll-padding-block-end", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block-end", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-padding", - "styleDeclaration": [ - "scroll-padding-block-end", - "scrollPaddingBlockEnd" - ], - "syntax": "auto | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "scroll-padding-block-start", - { - "name": "scroll-padding-block-start", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block-start", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-padding", - "styleDeclaration": [ - "scroll-padding-block-start", - "scrollPaddingBlockStart" - ], - "syntax": "auto | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "scroll-padding-bottom", - { - "name": "scroll-padding-bottom", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-bottom", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-padding", - "styleDeclaration": [ - "scroll-padding-bottom", - "scrollPaddingBottom" - ], - "syntax": "auto | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "scroll-padding-inline", - { - "name": "scroll-padding-inline", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "see individual properties", - "animationType": "by computed value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "scroll-padding-inline", - "scrollPaddingInline" - ], - "syntax": "[ auto | <length-percentage [0,∞]> ]{1,2}", - "extended": [] - } - ], - [ - "scroll-padding-inline-end", - { - "name": "scroll-padding-inline-end", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline-end", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-padding", - "styleDeclaration": [ - "scroll-padding-inline-end", - "scrollPaddingInlineEnd" - ], - "syntax": "auto | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "scroll-padding-inline-start", - { - "name": "scroll-padding-inline-start", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline-start", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-padding", - "styleDeclaration": [ - "scroll-padding-inline-start", - "scrollPaddingInlineStart" - ], - "syntax": "auto | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "scroll-padding-left", - { - "name": "scroll-padding-left", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-left", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-padding", - "styleDeclaration": [ - "scroll-padding-left", - "scrollPaddingLeft" - ], - "syntax": "auto | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "scroll-padding-right", - { - "name": "scroll-padding-right", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-right", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-padding", - "styleDeclaration": [ - "scroll-padding-right", - "scrollPaddingRight" - ], - "syntax": "auto | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "scroll-padding-top", - { - "name": "scroll-padding-top", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-top", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "relative to the scroll container’s scrollport", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "scroll-padding", - "styleDeclaration": [ - "scroll-padding-top", - "scrollPaddingTop" - ], - "syntax": "auto | <length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "scroll-snap-align", - { - "name": "scroll-snap-align", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-snap-align", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "two keywords", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "scroll-snap-align", - "scrollSnapAlign" - ], - "syntax": "[ none | start | end | center ]{1,2}", - "extended": [] - } - ], - [ - "scroll-snap-stop", - { - "name": "scroll-snap-stop", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-snap-stop", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "scroll-snap-stop", - "scrollSnapStop" - ], - "syntax": "normal | always", - "extended": [] - } - ], - [ - "scroll-snap-type", - { - "name": "scroll-snap-type", - "href": "https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-snap-type", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "scroll-snap-type", - "scrollSnapType" - ], - "syntax": "none | [ x | y | block | inline | both ] [ mandatory | proximity ]?", - "extended": [] - } - ], - [ - "scroll-timeline", - { - "name": "scroll-timeline", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-scroll-timeline", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "not animatable", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "scroll-timeline", - "scrollTimeline" - ], - "syntax": "[ <'scroll-timeline-name'> <'scroll-timeline-axis'>? ]#", - "extended": [] - } - ], - [ - "scroll-timeline-axis", - { - "name": "scroll-timeline-axis", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-scroll-timeline-axis", - "initial": "block", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "a list of the keywords specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "scroll-timeline-axis", - "scrollTimelineAxis" - ], - "syntax": "[ block | inline | x | y ]#", - "extended": [] - } - ], - [ - "scroll-timeline-name", - { - "name": "scroll-timeline-name", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-scroll-timeline-name", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none or a list of CSS identifiers", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "scroll-timeline-name", - "scrollTimelineName" - ], - "syntax": "[ none | <dashed-ident> ]#", - "extended": [] - } - ], - [ - "scrollbar-color", - { - "name": "scrollbar-color", - "href": "https://drafts.csswg.org/css-scrollbars-1/#propdef-scrollbar-color", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword or two computed colors", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "scrollbar-color", - "scrollbarColor" - ], - "syntax": "auto | <color>{2}", - "extended": [] - } - ], - [ - "scrollbar-gutter", - { - "name": "scrollbar-gutter", - "href": "https://drafts.csswg.org/css-overflow-3/#propdef-scrollbar-gutter", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "scrollbar-gutter", - "scrollbarGutter" - ], - "syntax": "auto | stable && both-edges?", - "extended": [] - } - ], - [ - "scrollbar-width", - { - "name": "scrollbar-width", - "href": "https://drafts.csswg.org/css-scrollbars-1/#propdef-scrollbar-width", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "scrollbar-width", - "scrollbarWidth" - ], - "syntax": "auto | thin | none", - "extended": [] - } - ], - [ - "shape-image-threshold", - { - "name": "shape-image-threshold", - "href": "https://drafts.csswg.org/css-shapes-1/#propdef-shape-image-threshold", - "initial": "0", - "appliesTo": "floats", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified number, clamped to the range [0,1]", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "shape-image-threshold", - "shapeImageThreshold" - ], - "syntax": "<opacity-value>", - "extended": [] - } - ], - [ - "shape-inside", - { - "name": "shape-inside", - "href": "https://drafts.csswg.org/css-shapes-2/#propdef-shape-inside", - "initial": "auto", - "appliesTo": "block-level elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "computed lengths for <basic-shape>, the absolute URL for <url>, otherwise as specified", - "canonicalOrder": "per grammar", - "animationType": "as defined for <basic-shape>, otherwise discrete", - "styleDeclaration": [ - "shape-inside", - "shapeInside" - ], - "syntax": "auto | outside-shape | [ <basic-shape> || shape-box ] | <image> | display", - "extended": [] - } - ], - [ - "shape-margin", - { - "name": "shape-margin", - "href": "https://drafts.csswg.org/css-shapes-1/#propdef-shape-margin", - "initial": "0", - "appliesTo": "floats and initial letter boxes", - "inherited": "no", - "percentages": "refer to the inline size of the containing block", - "computedValue": "computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "shape-margin", - "shapeMargin" - ], - "syntax": "<length-percentage [0,∞]>", - "extended": [] - } - ], - [ - "shape-outside", - { - "name": "shape-outside", - "href": "https://drafts.csswg.org/css-shapes-1/#propdef-shape-outside", - "initial": "none", - "appliesTo": "floats and initial letter boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as defined for <basic-shape> (with <shape-box> following, if supplied); else the computed <image>; else the keyword as specified", - "canonicalOrder": "per grammar", - "animationType": "as defined for <basic-shape>, otherwise discrete", - "styleDeclaration": [ - "shape-outside", - "shapeOutside" - ], - "syntax": "none | [ <basic-shape> || <shape-box> ] | <image>", - "extended": [] - } - ], - [ - "shape-rendering", - { - "name": "shape-rendering", - "href": "https://svgwg.org/svg2-draft/painting.html#ShapeRenderingProperty", - "initial": "auto", - "appliesTo": "shapes", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified", - "animationType": "discrete", - "styleDeclaration": [ - "shape-rendering", - "shapeRendering" - ], - "syntax": "auto | optimizeSpeed | crispEdges | geometricPrecision", - "extended": [] - } - ], - [ - "slider-orientation", - { - "name": "slider-orientation", - "href": "https://drafts.csswg.org/css-forms-1/#propdef-slider-orientation", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "slider-orientation", - "sliderOrientation" - ], - "syntax": "auto | left-to-right | right-to-left | top-to-bottom | bottom-to-top", - "extended": [] - } - ], - [ - "spatial-navigation-action", - { - "name": "spatial-navigation-action", - "href": "https://drafts.csswg.org/css-nav-1/#propdef-spatial-navigation-action", - "initial": "auto", - "appliesTo": "scroll containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "spatial-navigation-action", - "spatialNavigationAction" - ], - "syntax": "auto | focus | scroll", - "extended": [] - } - ], - [ - "spatial-navigation-contain", - { - "name": "spatial-navigation-contain", - "href": "https://drafts.csswg.org/css-nav-1/#propdef-spatial-navigation-contain", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "spatial-navigation-contain", - "spatialNavigationContain" - ], - "syntax": "auto | contain", - "extended": [] - } - ], - [ - "spatial-navigation-function", - { - "name": "spatial-navigation-function", - "href": "https://drafts.csswg.org/css-nav-1/#propdef-spatial-navigation-function", - "initial": "normal", - "appliesTo": "spatial navigation containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "spatial-navigation-function", - "spatialNavigationFunction" - ], - "syntax": "normal | grid", - "extended": [] - } - ], - [ - "speak", - { - "name": "speak", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-speak", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "speak" - ], - "syntax": "auto | never | always", - "extended": [] - } - ], - [ - "speak-as", - { - "name": "speak-as", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-speak-as", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "speak-as", - "speakAs" - ], - "syntax": "normal | spell-out || digits || [ literal-punctuation | no-punctuation ]", - "extended": [] - } - ], - [ - "stop-color", - { - "name": "stop-color", - "href": "https://svgwg.org/svg2-draft/pservers.html#StopColorProperty", - "styleDeclaration": [ - "stop-color", - "stopColor" - ], - "extended": [] - } - ], - [ - "stop-opacity", - { - "name": "stop-opacity", - "href": "https://svgwg.org/svg2-draft/pservers.html#StopOpacityProperty", - "styleDeclaration": [ - "stop-opacity", - "stopOpacity" - ], - "extended": [] - } - ], - [ - "string-set", - { - "name": "string-set", - "href": "https://drafts.csswg.org/css-content-3/#propdef-string-set", - "initial": "none", - "appliesTo": "all elements, but not pseudo-elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the keyword none or a list, each item an identifier paired with a list of string values", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "string-set", - "stringSet" - ], - "syntax": "none | [ <custom-ident> <string>+ ]#", - "extended": [] - } - ], - [ - "stroke", - { - "name": "stroke", - "href": "https://svgwg.org/svg2-draft/painting.html#StrokeProperty", - "initial": "none", - "appliesTo": "shapes and text content elements", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified, but with <color> values computed and <url> values made absolute", - "animationType": "by computed value", - "styleDeclaration": [ - "stroke" - ], - "syntax": "<paint>", - "extended": [] - } - ], - [ - "stroke-align", - { - "name": "stroke-align", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-align", - "initial": "center", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "stroke-align", - "strokeAlign" - ], - "syntax": "center | inset | outset", - "extended": [] - } - ], - [ - "stroke-alignment", - { - "name": "stroke-alignment", - "href": "https://svgwg.org/specs/strokes/#StrokeAlignmentProperty", - "initial": "center", - "appliesTo": "shapes and text content elements", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computed value": "as specified", - "animatable": "yes", - "styleDeclaration": [ - "stroke-alignment", - "strokeAlignment" - ], - "syntax": "center | inner | outer", - "extended": [] - } - ], - [ - "stroke-break", - { - "name": "stroke-break", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-break", - "initial": "bounding-box", - "appliesTo": "all elements", - "inherited": "?", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "stroke-break", - "strokeBreak" - ], - "syntax": "bounding-box | slice | clone", - "extended": [] - } - ], - [ - "stroke-color", - { - "name": "stroke-color", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-color", - "initial": "transparent", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "the computed color", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "stroke-color", - "strokeColor" - ], - "syntax": "<color>#", - "extended": [] - } - ], - [ - "stroke-dash-corner", - { - "name": "stroke-dash-corner", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-dash-corner", - "initial": "none", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified value, with lengths made absolute", - "canonicalOrder": "per grammar", - "animationType": "by computed value if <length>, otherwise discrete", - "media": "visual", - "styleDeclaration": [ - "stroke-dash-corner", - "strokeDashCorner" - ], - "syntax": "none | <length>", - "extended": [] - } - ], - [ - "stroke-dash-justify", - { - "name": "stroke-dash-justify", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-dash-justify", - "initial": "none", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified value, with lengths made absolute", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "stroke-dash-justify", - "strokeDashJustify" - ], - "syntax": "none | [ stretch | compress ] || [ dashes || gaps ]", - "extended": [] - } - ], - [ - "stroke-dashadjust", - { - "name": "stroke-dashadjust", - "href": "https://svgwg.org/specs/strokes/#StrokeDashadjustProperty", - "initial": "none", - "appliesTo": "shapes and text content elements", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computed value": "as specified", - "animatable": "yes", - "styleDeclaration": [ - "stroke-dashadjust", - "strokeDashadjust" - ], - "syntax": "none | [stretch | compress] [dashes | gaps]?", - "extended": [] - } - ], - [ - "stroke-dasharray", - { - "name": "stroke-dasharray", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-dasharray", - "initial": "none", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "relative to the scaled viewport size", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "stroke-dasharray", - "strokeDasharray" - ], - "syntax": "none | [<length-percentage> | <number>]+#", - "extended": [] - } - ], - [ - "stroke-dashcorner", - { - "name": "stroke-dashcorner", - "href": "https://svgwg.org/specs/strokes/#StrokeDashcornerProperty", - "initial": "none", - "appliesTo": "shapes and text content elements", - "inherited": "yes", - "percentages": "refer to the size of the current viewport (see Units)", - "media": "visual", - "computed value": "absolute length or keyword specified", - "animatable": "yes", - "styleDeclaration": [ - "stroke-dashcorner", - "strokeDashcorner" - ], - "syntax": "none | <length>", - "extended": [] - } - ], - [ - "stroke-dashoffset", - { - "name": "stroke-dashoffset", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-dashoffset", - "initial": "0", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "relative to the scaled viewport size", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "stroke-dashoffset", - "strokeDashoffset" - ], - "syntax": "<length-percentage> | <number>", - "extended": [] - } - ], - [ - "stroke-image", - { - "name": "stroke-image", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-image", - "initial": "none", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified, with any <image> computed", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "stroke-image", - "strokeImage" - ], - "syntax": "<paint>#", - "extended": [] - } - ], - [ - "stroke-linecap", - { - "name": "stroke-linecap", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-linecap", - "initial": "butt", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "stroke-linecap", - "strokeLinecap" - ], - "syntax": "butt | round | square", - "extended": [] - } - ], - [ - "stroke-linejoin", - { - "name": "stroke-linejoin", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-linejoin", - "initial": "miter", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "stroke-linejoin", - "strokeLinejoin" - ], - "syntax": "[ crop | arcs | miter ] || [ bevel | round | fallback ]", - "extended": [] - } - ], - [ - "stroke-miterlimit", - { - "name": "stroke-miterlimit", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-miterlimit", - "initial": "4", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "a number", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "stroke-miterlimit", - "strokeMiterlimit" - ], - "syntax": "<number>", - "extended": [] - } - ], - [ - "stroke-opacity", - { - "name": "stroke-opacity", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-opacity", - "initial": "1", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "the specified value converted to a <number>, clamped to the range [0,1]", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "stroke-opacity", - "strokeOpacity" - ], - "syntax": "<'opacity'>", - "extended": [] - } - ], - [ - "stroke-origin", - { - "name": "stroke-origin", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-origin", - "initial": "match-parent", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "stroke-origin", - "strokeOrigin" - ], - "syntax": "match-parent | fill-box | stroke-box | content-box | padding-box | border-box", - "extended": [] - } - ], - [ - "stroke-position", - { - "name": "stroke-position", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-position", - "initial": "0% 0%", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "A list, each item consisting of: a pair of offsets (horizontal and vertical) from the top left origin each given as a combination of an absolute length and a percentage", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "stroke-position", - "strokePosition" - ], - "syntax": "<position>#", - "extended": [] - } - ], - [ - "stroke-repeat", - { - "name": "stroke-repeat", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-repeat", - "initial": "repeat", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "A list, each item consisting of: two keywords, one per dimension", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "stroke-repeat", - "strokeRepeat" - ], - "syntax": "<repeat-style>#", - "extended": [] - } - ], - [ - "stroke-size", - { - "name": "stroke-size", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-size", - "initial": "auto", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "as specified, but with lengths made absolute and omitted auto keywords filled in", - "canonicalOrder": "per grammar", - "animationType": "repeatable list", - "media": "visual", - "styleDeclaration": [ - "stroke-size", - "strokeSize" - ], - "syntax": "<bg-size>#", - "extended": [] - } - ], - [ - "stroke-width", - { - "name": "stroke-width", - "href": "https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-width", - "initial": "1px", - "appliesTo": "text and SVG shapes", - "inherited": "yes", - "percentages": "relative to the scaled viewport size", - "computedValue": "the absolute length, or percentage", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "media": "visual", - "styleDeclaration": [ - "stroke-width", - "strokeWidth" - ], - "syntax": "[<length-percentage> | <number>]#", - "extended": [] - } - ], - [ - "tab-size", - { - "name": "tab-size", - "href": "https://drafts.csswg.org/css-text-4/#propdef-tab-size", - "initial": "8", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "the specified number or absolute length", - "canonicalOrder": "n/a", - "animationType": "by computed value type", - "styleDeclaration": [ - "tab-size", - "tabSize" - ], - "syntax": "<number [0,∞]> | <length [0,∞]>", - "extended": [] - } - ], - [ - "table-layout", - { - "name": "table-layout", - "href": "https://drafts.csswg.org/css-tables-3/#propdef-table-layout", - "initial": "auto", - "appliesTo": "table grid boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "table-layout", - "tableLayout" - ], - "syntax": "auto | fixed", - "extended": [] - } - ], - [ - "text-align", - { - "name": "text-align", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-align", - "initial": "start", - "appliesTo": "block containers", - "inherited": "yes", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "discrete", - "canonicalOrder": "n/a", - "styleDeclaration": [ - "text-align", - "textAlign" - ], - "syntax": "start | end | left | right | center | <string> | justify | match-parent | justify-all", - "extended": [] - } - ], - [ - "text-align-all", - { - "name": "text-align-all", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-align-all", - "initial": "start", - "appliesTo": "block containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "keyword as specified, except for match-parent which computes as defined above", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "text-align-all", - "textAlignAll" - ], - "syntax": "start | end | left | right | center | <string> | justify | match-parent", - "extended": [] - } - ], - [ - "text-align-last", - { - "name": "text-align-last", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-align-last", - "initial": "auto", - "appliesTo": "block containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "keyword as specified, except for match-parent which computes as defined above", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "text-align-last", - "textAlignLast" - ], - "syntax": "auto | start | end | left | right | center | justify | match-parent", - "extended": [] - } - ], - [ - "text-anchor", - { - "name": "text-anchor", - "href": "https://svgwg.org/svg2-draft/text.html#TextAnchorProperty", - "initial": "start", - "appliesTo": "text content elements", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified", - "animationType": "discrete", - "styleDeclaration": [ - "text-anchor", - "textAnchor" - ], - "syntax": "start | middle | end", - "extended": [] - } - ], - [ - "text-autospace", - { - "name": "text-autospace", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-autospace", - "initial": "normal", - "appliesTo": "text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-autospace", - "textAutospace" - ], - "syntax": "normal | <autospace> | auto", - "extended": [] - } - ], - [ - "text-box", - { - "name": "text-box", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-text-box", - "initial": "normal", - "appliesTo": "block containers, multi-column containers, and inline boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-box", - "textBox" - ], - "syntax": "normal | <'text-box-trim'> || <'text-box-edge'>", - "extended": [] - } - ], - [ - "text-box-edge", - { - "name": "text-box-edge", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-text-box-edge", - "initial": "auto", - "appliesTo": "block containers and inline boxes", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "the specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-box-edge", - "textBoxEdge" - ], - "syntax": "auto | <text-edge>", - "extended": [] - } - ], - [ - "text-box-trim", - { - "name": "text-box-trim", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-text-box-trim", - "initial": "none", - "appliesTo": "block containers, multi-column containers, and inline boxes", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-box-trim", - "textBoxTrim" - ], - "syntax": "none | trim-start | trim-end | trim-both", - "extended": [] - } - ], - [ - "text-combine-upright", - { - "name": "text-combine-upright", - "href": "https://drafts.csswg.org/css-writing-modes-4/#propdef-text-combine-upright", - "initial": "none", - "appliesTo": "inline boxes and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword, plus integer if digits", - "canonicalOrder": "n/a", - "animationType": "not animatable", - "styleDeclaration": [ - "text-combine-upright", - "textCombineUpright" - ], - "syntax": "none | all | [ digits <integer [2,4]>? ]", - "extended": [] - } - ], - [ - "text-decoration", - { - "name": "text-decoration", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "text-decoration", - "textDecoration" - ], - "syntax": "<'text-decoration-line'> || <'text-decoration-thickness'> || <'text-decoration-style'> || <'text-decoration-color'>", - "extended": [] - } - ], - [ - "text-decoration-color", - { - "name": "text-decoration-color", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-color", - "initial": "currentcolor", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "computed color", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "text-decoration-color", - "textDecorationColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "text-decoration-line", - { - "name": "text-decoration-line", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-line", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no (but see prose, above)", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-decoration-line", - "textDecorationLine" - ], - "syntax": "none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error", - "extended": [] - } - ], - [ - "text-decoration-skip", - { - "name": "text-decoration-skip", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip", - "initial": "See individual properties", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "See individual properties", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-decoration-skip", - "textDecorationSkip" - ], - "syntax": "none | auto", - "extended": [] - } - ], - [ - "text-decoration-skip-box", - { - "name": "text-decoration-skip-box", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip-box", - "initial": "none", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-decoration-skip-box", - "textDecorationSkipBox" - ], - "syntax": "none | all", - "extended": [] - } - ], - [ - "text-decoration-skip-ink", - { - "name": "text-decoration-skip-ink", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip-ink", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-decoration-skip-ink", - "textDecorationSkipInk" - ], - "syntax": "auto | none | all", - "extended": [] - } - ], - [ - "text-decoration-skip-self", - { - "name": "text-decoration-skip-self", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip-self", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword(s) except for skip-all, see below", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-decoration-skip-self", - "textDecorationSkipSelf" - ], - "syntax": "auto | skip-all | [ skip-underline || skip-overline || skip-line-through ] | no-skip", - "extended": [] - } - ], - [ - "text-decoration-skip-spaces", - { - "name": "text-decoration-skip-spaces", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip-spaces", - "initial": "start end", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-decoration-skip-spaces", - "textDecorationSkipSpaces" - ], - "syntax": "none | all | [ start || end ]", - "extended": [] - } - ], - [ - "text-decoration-style", - { - "name": "text-decoration-style", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-style", - "initial": "solid", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-decoration-style", - "textDecorationStyle" - ], - "syntax": "solid | double | dotted | dashed | wavy", - "extended": [] - } - ], - [ - "text-decoration-thickness", - { - "name": "text-decoration-thickness", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-thickness", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "text-decoration-thickness", - "textDecorationThickness" - ], - "syntax": "auto | from-font | <length-percentage>", - "extended": [] - } - ], - [ - "text-emphasis", - { - "name": "text-emphasis", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis", - "initial": "see individual properties", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "text-emphasis", - "textEmphasis" - ], - "syntax": "<'text-emphasis-style'> || <'text-emphasis-color'>", - "extended": [] - } - ], - [ - "text-emphasis-color", - { - "name": "text-emphasis-color", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis-color", - "initial": "currentcolor", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "computed color", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "text-emphasis-color", - "textEmphasisColor" - ], - "syntax": "<color>", - "extended": [] - } - ], - [ - "text-emphasis-position", - { - "name": "text-emphasis-position", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis-position", - "initial": "over right", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-emphasis-position", - "textEmphasisPosition" - ], - "syntax": "[ over | under ] && [ right | left ]?", - "extended": [] - } - ], - [ - "text-emphasis-skip", - { - "name": "text-emphasis-skip", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis-skip", - "initial": "spaces punctuation", - "appliesTo": "text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-emphasis-skip", - "textEmphasisSkip" - ], - "syntax": "spaces || punctuation || symbols || narrow", - "extended": [] - } - ], - [ - "text-emphasis-style", - { - "name": "text-emphasis-style", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis-style", - "initial": "none", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "the keyword none, a pair of keywords representing the shape and fill, or a string", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-emphasis-style", - "textEmphasisStyle" - ], - "syntax": "none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>", - "extended": [] - } - ], - [ - "text-group-align", - { - "name": "text-group-align", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-group-align", - "initial": "none", - "appliesTo": "block containers", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-group-align", - "textGroupAlign" - ], - "syntax": "none | start | end | left | right | center", - "extended": [] - } - ], - [ - "text-indent", - { - "name": "text-indent", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-indent", - "initial": "0", - "appliesTo": "block containers", - "inherited": "yes", - "percentages": "refers to block container’s own inline-axis inner size", - "computedValue": "computed <length-percentage> value, plus any specified keywords", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "text-indent", - "textIndent" - ], - "syntax": "[ <length-percentage> ] && hanging? && each-line?", - "extended": [] - } - ], - [ - "text-justify", - { - "name": "text-justify", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-justify", - "initial": "auto", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword (except for the distribute legacy value)", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "text-justify", - "textJustify" - ], - "syntax": "[ auto | none | inter-word | inter-character | ruby ] || no-compress", - "extended": [] - } - ], - [ - "text-orientation", - { - "name": "text-orientation", - "href": "https://drafts.csswg.org/css-writing-modes-4/#propdef-text-orientation", - "initial": "mixed", - "appliesTo": "all elements except table row groups, rows, column groups, and columns; and text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "n/a", - "animationType": "not animatable", - "styleDeclaration": [ - "text-orientation", - "textOrientation" - ], - "syntax": "mixed | upright | sideways", - "extended": [] - } - ], - [ - "text-overflow", - { - "name": "text-overflow", - "href": "https://drafts.csswg.org/css-overflow-4/#propdef-text-overflow", - "initial": "clip", - "appliesTo": "block containers", - "inherited": "no", - "percentages": "refer to the width of the line box", - "computedValue": "as specified, with lengths made absolute", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "text-overflow", - "textOverflow" - ], - "syntax": "[ clip | ellipsis | <string> | fade | <fade()> ]{1,2}", - "extended": [] - } - ], - [ - "text-rendering", - { - "name": "text-rendering", - "href": "https://svgwg.org/svg2-draft/painting.html#TextRenderingProperty", - "initial": "auto", - "appliesTo": "‘text’", - "inherited": "yes", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified", - "animationType": "discrete", - "styleDeclaration": [ - "text-rendering", - "textRendering" - ], - "syntax": "auto | optimizeSpeed | optimizeLegibility | geometricPrecision", - "extended": [] - } - ], - [ - "text-shadow", - { - "name": "text-shadow", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-shadow", - "initial": "none", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "either the keyword none or a list, each item consisting of four absolute lengths plus a computed color and optionally also an inset keyword", - "canonicalOrder": "per grammar", - "animationType": "as shadow list", - "styleDeclaration": [ - "text-shadow", - "textShadow" - ], - "syntax": "none | <shadow>#", - "extended": [] - } - ], - [ - "text-spacing", - { - "name": "text-spacing", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-spacing", - "initial": "see individual properties", - "appliesTo": "text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword(s)", - "animationType": "discrete", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "text-spacing", - "textSpacing" - ], - "syntax": "none | auto | <spacing-trim> || <autospace>", - "extended": [] - } - ], - [ - "text-spacing-trim", - { - "name": "text-spacing-trim", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-spacing-trim", - "initial": "normal", - "appliesTo": "text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-spacing-trim", - "textSpacingTrim" - ], - "syntax": "<spacing-trim> | auto", - "extended": [] - } - ], - [ - "text-transform", - { - "name": "text-transform", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-transform", - "initial": "none", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "text-transform", - "textTransform" - ], - "syntax": "none | [capitalize | uppercase | lowercase ] || full-width || full-size-kana | math-auto", - "extended": [] - } - ], - [ - "text-underline-offset", - { - "name": "text-underline-offset", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-underline-offset", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "text-underline-offset", - "textUnderlineOffset" - ], - "syntax": "auto | <length-percentage>", - "extended": [] - } - ], - [ - "text-underline-position", - { - "name": "text-underline-position", - "href": "https://drafts.csswg.org/css-text-decor-4/#propdef-text-underline-position", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-underline-position", - "textUnderlinePosition" - ], - "syntax": "auto | [ from-font | under ] || [ left | right ]", - "extended": [] - } - ], - [ - "text-wrap", - { - "name": "text-wrap", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-wrap", - "initial": "wrap", - "appliesTo": "see individual properties", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "canonicalOrder": "per grammar", - "animationType": "see individual properties", - "styleDeclaration": [ - "text-wrap", - "textWrap" - ], - "syntax": "<'text-wrap-mode'> || <'text-wrap-style'>", - "extended": [] - } - ], - [ - "text-wrap-mode", - { - "name": "text-wrap-mode", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-wrap-mode", - "initial": "wrap", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-wrap-mode", - "textWrapMode" - ], - "syntax": "wrap | nowrap", - "extended": [] - } - ], - [ - "text-wrap-style", - { - "name": "text-wrap-style", - "href": "https://drafts.csswg.org/css-text-4/#propdef-text-wrap-style", - "initial": "auto", - "appliesTo": "block containers hat establish an inline formatting context", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "text-wrap-style", - "textWrapStyle" - ], - "syntax": "auto | balance | stable | pretty | avoid-orphans", - "extended": [] - } - ], - [ - "timeline-scope", - { - "name": "timeline-scope", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-timeline-scope", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none or a list of CSS identifiers", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "timeline-scope", - "timelineScope" - ], - "syntax": "none | all | <dashed-ident>#", - "extended": [] - } - ], - [ - "top", - { - "name": "top", - "href": "https://drafts.csswg.org/css-position-3/#propdef-top", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "refer to size of containing block; see prose", - "computedValue": "the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "logicalPropertyGroup": "inset", - "styleDeclaration": [ - "top" - ], - "syntax": "auto | <length-percentage> | <anchor()> | <anchor-size()>", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/" - ] - } - ], - [ - "transform", - { - "name": "transform", - "href": "https://drafts.csswg.org/css-transforms-1/#propdef-transform", - "initial": "none", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "refer to the size of reference box", - "computedValue": "as specified, but with lengths made absolute", - "canonicalOrder": "per grammar", - "animationType": "transform list, see interpolation rules", - "styleDeclaration": [ - "transform" - ], - "syntax": "none | <transform-list>", - "extended": [] - } - ], - [ - "transform-box", - { - "name": "transform-box", - "href": "https://drafts.csswg.org/css-transforms-1/#propdef-transform-box", - "initial": "view-box", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "transform-box", - "transformBox" - ], - "syntax": "content-box | border-box | fill-box | stroke-box | view-box", - "extended": [] - } - ], - [ - "transform-origin", - { - "name": "transform-origin", - "href": "https://drafts.csswg.org/css-transforms-1/#propdef-transform-origin", - "initial": "50% 50%", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "refer to the size of reference box", - "computedValue": "see background-position", - "canonicalOrder": "per grammar", - "animationType": "by computed value", - "styleDeclaration": [ - "transform-origin", - "transformOrigin" - ], - "syntax": "[ left | center | right | top | bottom | <length-percentage> ] | [ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ] <length>? | [ [ center | left | right ] && [ center | top | bottom ] ] <length>?", - "extended": [] - } - ], - [ - "transform-style", - { - "name": "transform-style", - "href": "https://drafts.csswg.org/css-transforms-2/#propdef-transform-style", - "initial": "flat", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "usedValue": "flat if a grouping property is present, specified keyword otherwise", - "styleDeclaration": [ - "transform-style", - "transformStyle" - ], - "syntax": "flat | preserve-3d", - "extended": [] - } - ], - [ - "transition", - { - "name": "transition", - "href": "https://drafts.csswg.org/css-transitions-1/#propdef-transition", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "not animatable", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "transition" - ], - "syntax": "<single-transition>#", - "extended": [] - } - ], - [ - "transition-behavior", - { - "name": "transition-behavior", - "href": "https://drafts.csswg.org/css-transitions-2/#propdef-transition-behavior", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "transition-behavior", - "transitionBehavior" - ], - "syntax": "<transition-behavior-value>#", - "extended": [] - } - ], - [ - "transition-delay", - { - "name": "transition-delay", - "href": "https://drafts.csswg.org/css-transitions-1/#propdef-transition-delay", - "initial": "0s", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a duration", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "transition-delay", - "transitionDelay" - ], - "syntax": "<time>#", - "extended": [] - } - ], - [ - "transition-duration", - { - "name": "transition-duration", - "href": "https://drafts.csswg.org/css-transitions-1/#propdef-transition-duration", - "initial": "0s", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "list, each item a duration", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "transition-duration", - "transitionDuration" - ], - "syntax": "<time [0s,∞]>#", - "extended": [] - } - ], - [ - "transition-property", - { - "name": "transition-property", - "href": "https://drafts.csswg.org/css-transitions-1/#propdef-transition-property", - "initial": "all", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "the keyword none else a list of identifiers", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "transition-property", - "transitionProperty" - ], - "syntax": "none | <single-transition-property>#", - "extended": [] - } - ], - [ - "transition-timing-function", - { - "name": "transition-timing-function", - "href": "https://drafts.csswg.org/css-transitions-1/#propdef-transition-timing-function", - "initial": "ease", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "transition-timing-function", - "transitionTimingFunction" - ], - "syntax": "<easing-function>#", - "extended": [] - } - ], - [ - "translate", - { - "name": "translate", - "href": "https://drafts.csswg.org/css-transforms-2/#propdef-translate", - "initial": "none", - "appliesTo": "transformable elements", - "inherited": "no", - "percentages": "relative to the width of the reference box (for the first value) or the height (for the second value)", - "computedValue": "the keyword none or a pair of computed <length-percentage> values and an absolute length", - "canonicalOrder": "per grammar", - "animationType": "by computed value, but see below for none", - "styleDeclaration": [ - "translate" - ], - "syntax": "none | <length-percentage> [ <length-percentage> <length>? ]?", - "extended": [] - } - ], - [ - "unicode-bidi", - { - "name": "unicode-bidi", - "href": "https://drafts.csswg.org/css-writing-modes-4/#propdef-unicode-bidi", - "initial": "normal", - "appliesTo": "all elements, but see prose", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "unicode-bidi", - "unicodeBidi" - ], - "syntax": "normal | embed | isolate | bidi-override | isolate-override | plaintext", - "extended": [] - } - ], - [ - "user-select", - { - "name": "user-select", - "href": "https://drafts.csswg.org/css-ui-4/#propdef-user-select", - "initial": "auto", - "appliesTo": "all elements, and optionally to the ::before and ::after pseudo-elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "user-select", - "userSelect" - ], - "syntax": "auto | text | none | contain | all", - "extended": [] - } - ], - [ - "vector-effect", - { - "name": "vector-effect", - "href": "https://svgwg.org/svg2-draft/coords.html#VectorEffectProperty", - "initial": "none", - "appliesTo": "graphics elements and ‘use’", - "inherited": "no", - "percentages": "N/A", - "media": "visual", - "computedValue": "as specified", - "animationType": "discrete", - "styleDeclaration": [ - "vector-effect", - "vectorEffect" - ], - "syntax": "none | non-scaling-stroke | non-scaling-size | non-rotation | fixed-position", - "extended": [] - } - ], - [ - "vertical-align", - { - "name": "vertical-align", - "href": "https://drafts.csswg.org/css-inline-3/#propdef-vertical-align", - "initial": "baseline", - "appliesTo": "see individual properties", - "inherited": "no", - "percentages": "N/A", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "vertical-align", - "verticalAlign" - ], - "syntax": "[ first | last] || <'alignment-baseline'> || <'baseline-shift'>", - "extended": [] - } - ], - [ - "view-timeline", - { - "name": "view-timeline", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-view-timeline", - "initial": "see individual properties", - "appliesTo": "all elements", - "inherited": "see individual properties", - "percentages": "see individual properties", - "computedValue": "see individual properties", - "animationType": "see individual properties", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "view-timeline", - "viewTimeline" - ], - "syntax": "[ <'view-timeline-name'> [ <'view-timeline-axis'> || <'view-timeline-inset'> ]? ]#", - "extended": [] - } - ], - [ - "view-timeline-axis", - { - "name": "view-timeline-axis", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-view-timeline-axis", - "initial": "block", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "a list of the keywords specified", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "view-timeline-axis", - "viewTimelineAxis" - ], - "syntax": "[ block | inline | x | y ]#", - "extended": [] - } - ], - [ - "view-timeline-inset", - { - "name": "view-timeline-inset", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-view-timeline-inset", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "relative to the corresponding dimension of the relevant scrollport", - "computedValue": "a list consisting of two-value pairs representing the start and end insets each as either the keyword auto or a computed <length-percentage> value", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "view-timeline-inset", - "viewTimelineInset" - ], - "syntax": "[ [ auto | <length-percentage> ]{1,2} ]#", - "extended": [] - } - ], - [ - "view-timeline-name", - { - "name": "view-timeline-name", - "href": "https://drafts.csswg.org/scroll-animations-1/#propdef-view-timeline-name", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "the keyword none or a list of CSS identifiers", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "view-timeline-name", - "viewTimelineName" - ], - "syntax": "[ none | <dashed-ident> ]#", - "extended": [] - } - ], - [ - "view-transition-class", - { - "name": "view-transition-class", - "href": "https://drafts.csswg.org/css-view-transitions-2/#propdef-view-transition-class", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "view-transition-class", - "viewTransitionClass" - ], - "syntax": "none | <custom-ident>+", - "extended": [] - } - ], - [ - "view-transition-group", - { - "name": "view-transition-group", - "href": "https://drafts.csswg.org/css-view-transitions-2/#propdef-view-transition-group", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "view-transition-group", - "viewTransitionGroup" - ], - "syntax": "normal | contain | nearest | <custom-ident>", - "extended": [] - } - ], - [ - "view-transition-name", - { - "name": "view-transition-name", - "href": "https://drafts.csswg.org/css-view-transitions-2/#propdef-view-transition-name", - "initial": "none", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "view-transition-name", - "viewTransitionName" - ], - "syntax": "none | <custom-ident>", - "extended": [] - } - ], - [ - "visibility", - { - "name": "visibility", - "href": "https://drafts.csswg.org/css-display-4/#propdef-visibility", - "initial": "visible", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "media": "visual", - "styleDeclaration": [ - "visibility" - ], - "syntax": "visible | hidden | force-hidden | collapse", - "extended": [] - } - ], - [ - "voice-balance", - { - "name": "voice-balance", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-voice-balance", - "initial": "center", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "the specified value resolved to a <number> between -100 and 100 (inclusive)", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "voice-balance", - "voiceBalance" - ], - "syntax": "<number> | left | center | right | leftwards | rightwards", - "extended": [] - } - ], - [ - "voice-duration", - { - "name": "voice-duration", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-voice-duration", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "voice-duration", - "voiceDuration" - ], - "syntax": "auto | <time [0s,∞]>", - "extended": [] - } - ], - [ - "voice-family", - { - "name": "voice-family", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-voice-family", - "initial": "implementation-dependent", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "voice-family", - "voiceFamily" - ], - "syntax": "[[<family-name> | <generic-voice>],]* [<family-name> | <generic-voice>] | preserve", - "extended": [] - } - ], - [ - "voice-pitch", - { - "name": "voice-pitch", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-voice-pitch", - "initial": "medium", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "refer to inherited value", - "computedValue": "one of the predefined pitch keywords if only the keyword is specified by itself, otherwise an absolute frequency calculated by converting the keyword value (if any) to a fixed frequency based on the current voice-family and by applying the specified relative offset (if any)", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "voice-pitch", - "voicePitch" - ], - "syntax": "<frequency [0Hz,∞]> && absolute | [[x-low | low | medium | high | x-high] || [<frequency> | <semitones> | <percentage>]]", - "extended": [] - } - ], - [ - "voice-range", - { - "name": "voice-range", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-voice-range", - "initial": "medium", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "refer to inherited value", - "computedValue": "one of the predefined pitch keywords if only the keyword is specified by itself, otherwise an absolute frequency calculated by converting the keyword value (if any) to a fixed frequency based on the current voice-family and by applying the specified relative offset (if any)", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "voice-range", - "voiceRange" - ], - "syntax": "<frequency [0Hz,∞]> && absolute | [[x-low | low | medium | high | x-high] || [<frequency> | <semitones> | <percentage>]]", - "extended": [] - } - ], - [ - "voice-rate", - { - "name": "voice-rate", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-voice-rate", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "refer to default value", - "computedValue": "a keyword value, and optionally also a percentage relative to the keyword (if not 100%)", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "voice-rate", - "voiceRate" - ], - "syntax": "[normal | x-slow | slow | medium | fast | x-fast] || <percentage [0,∞]>", - "extended": [] - } - ], - [ - "voice-stress", - { - "name": "voice-stress", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-voice-stress", - "initial": "normal", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "voice-stress", - "voiceStress" - ], - "syntax": "normal | strong | moderate | none | reduced", - "extended": [] - } - ], - [ - "voice-volume", - { - "name": "voice-volume", - "href": "https://drafts.csswg.org/css-speech-1/#propdef-voice-volume", - "initial": "medium", - "appliesTo": "all elements", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "silent, or a keyword value and optionally also a decibel offset (if not zero)", - "canonicalOrder": "per grammar", - "styleDeclaration": [ - "voice-volume", - "voiceVolume" - ], - "syntax": "silent | [[x-soft | soft | medium | loud | x-loud] || <decibel>]", - "extended": [] - } - ], - [ - "white-space", - { - "name": "white-space", - "href": "https://drafts.csswg.org/css-text-4/#propdef-white-space", - "initial": "normal", - "appliesTo": "text", - "inherited": "see individual properties", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "white-space", - "whiteSpace" - ], - "syntax": "normal | pre | pre-wrap | pre-line | <'white-space-collapse'> || <'text-wrap-mode'> || <'white-space-trim'>", - "extended": [] - } - ], - [ - "white-space-collapse", - { - "name": "white-space-collapse", - "href": "https://drafts.csswg.org/css-text-4/#propdef-white-space-collapse", - "initial": "collapse", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "white-space-collapse", - "whiteSpaceCollapse" - ], - "syntax": "collapse | discard | preserve | preserve-breaks | preserve-spaces | break-spaces", - "extended": [] - } - ], - [ - "white-space-trim", - { - "name": "white-space-trim", - "href": "https://drafts.csswg.org/css-text-4/#propdef-white-space-trim", - "initial": "none", - "appliesTo": "inline boxes and block containers", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword(s)", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "white-space-trim", - "whiteSpaceTrim" - ], - "syntax": "none | discard-before || discard-after || discard-inner", - "extended": [] - } - ], - [ - "widows", - { - "name": "widows", - "href": "https://drafts.csswg.org/css-break-4/#propdef-widows", - "initial": "2", - "appliesTo": "block containers that establish an inline formatting context", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified integer", - "canonicalOrder": "per grammar", - "animationType": "by computed value type", - "styleDeclaration": [ - "widows" - ], - "syntax": "<integer [1,∞]>", - "extended": [] - } - ], - [ - "width", - { - "name": "width", - "href": "https://drafts.csswg.org/css-sizing-3/#propdef-width", - "initial": "auto", - "appliesTo": "all elements except non-replaced inlines", - "inherited": "no", - "percentages": "relative to width/height of containing block", - "computedValue": "as specified, with <length-percentage> values computed", - "canonicalOrder": "per grammar", - "animationType": "by computed value type, recursing into fit-content()", - "logicalPropertyGroup": "size", - "styleDeclaration": [ - "width" - ], - "syntax": "auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain", - "extended": [ - "https://drafts.csswg.org/css-anchor-position-1/", - "https://drafts.csswg.org/css-sizing-4/" - ] - } - ], - [ - "will-change", - { - "name": "will-change", - "href": "https://drafts.csswg.org/css-will-change-1/#propdef-will-change", - "initial": "auto", - "appliesTo": "all elements", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "per grammar", - "animationType": "not animatable", - "styleDeclaration": [ - "will-change", - "willChange" - ], - "syntax": "auto | <animateable-feature>#", - "extended": [] - } - ], - [ - "word-break", - { - "name": "word-break", - "href": "https://drafts.csswg.org/css-text-4/#propdef-word-break", - "initial": "normal", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "word-break", - "wordBreak" - ], - "syntax": "normal | break-all | keep-all | manual | auto-phrase | break-word", - "extended": [] - } - ], - [ - "word-space-transform", - { - "name": "word-space-transform", - "href": "https://drafts.csswg.org/css-text-4/#propdef-word-space-transform", - "initial": "none", - "appliesTo": "text", - "inherited": "yes", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "word-space-transform", - "wordSpaceTransform" - ], - "syntax": "none | [ space | ideographic-space ] && auto-phrase?", - "extended": [] - } - ], - [ - "word-spacing", - { - "name": "word-spacing", - "href": "https://drafts.csswg.org/css-text-4/#propdef-word-spacing", - "initial": "normal", - "appliesTo": "text", - "inherited": "yes", - "percentages": "relative to computed font-size, i.e. 1em", - "computedValue": "an absolute length and/or a percentage", - "canonicalOrder": "n/a", - "animationType": "by computed value type", - "styleDeclaration": [ - "word-spacing", - "wordSpacing" - ], - "syntax": "normal | <length-percentage>", - "extended": [] - } - ], - [ - "word-wrap", - { - "name": "word-wrap", - "href": "https://drafts.csswg.org/css-text-4/#propdef-word-wrap", - "initial": "normal", - "appliesTo": "text", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "n/a", - "animationType": "discrete", - "styleDeclaration": [ - "word-wrap", - "wordWrap" - ], - "syntax": "normal | break-word | anywhere", - "extended": [] - } - ], - [ - "wrap-after", - { - "name": "wrap-after", - "href": "https://drafts.csswg.org/css-text-4/#propdef-wrap-after", - "initial": "auto", - "appliesTo": "inline-level boxes and flex items", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "wrap-after", - "wrapAfter" - ], - "syntax": "auto | avoid | avoid-line | avoid-flex | line | flex", - "extended": [] - } - ], - [ - "wrap-before", - { - "name": "wrap-before", - "href": "https://drafts.csswg.org/css-text-4/#propdef-wrap-before", - "initial": "auto", - "appliesTo": "inline-level boxes and flex items", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "wrap-before", - "wrapBefore" - ], - "syntax": "auto | avoid | avoid-line | avoid-flex | line | flex", - "extended": [] - } - ], - [ - "wrap-flow", - { - "name": "wrap-flow", - "href": "https://drafts.csswg.org/css-exclusions-1/#propdef-wrap-flow", - "initial": "auto", - "appliesTo": "block-level elements.", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified except for element’s whose float computed value is not none, in which case the computed value is auto.", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "wrap-flow", - "wrapFlow" - ], - "syntax": "auto | both | start | end | minimum | maximum | clear", - "extended": [] - } - ], - [ - "wrap-inside", - { - "name": "wrap-inside", - "href": "https://drafts.csswg.org/css-text-4/#propdef-wrap-inside", - "initial": "auto", - "appliesTo": "inline boxes", - "inherited": "no", - "percentages": "n/a", - "computedValue": "specified keyword", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "wrap-inside", - "wrapInside" - ], - "syntax": "auto | avoid", - "extended": [] - } - ], - [ - "wrap-through", - { - "name": "wrap-through", - "href": "https://drafts.csswg.org/css-exclusions-1/#propdef-wrap-through", - "initial": "wrap", - "appliesTo": "block-level elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "animationType": "discrete", - "styleDeclaration": [ - "wrap-through", - "wrapThrough" - ], - "syntax": "wrap | none", - "extended": [] - } - ], - [ - "writing-mode", - { - "name": "writing-mode", - "href": "https://drafts.csswg.org/css-writing-modes-4/#propdef-writing-mode", - "initial": "horizontal-tb", - "appliesTo": "All elements except table row groups, table column groups, table rows, table columns, ruby base containers, ruby annotation containers", - "inherited": "yes", - "percentages": "n/a", - "computedValue": "specified value", - "canonicalOrder": "n/a", - "animationType": "not animatable", - "styleDeclaration": [ - "writing-mode", - "writingMode" - ], - "syntax": "horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr", - "extended": [] - } - ], - [ - "z-index", - { - "name": "z-index", - "href": "https://drafts.csswg.org/css2/#propdef-z-index", - "initial": "auto", - "appliesTo": "positioned elements", - "inherited": "no", - "percentages": "N/A", - "computedValue": "as specified", - "canonicalOrder": "per grammar", - "media": "visual", - "styleDeclaration": [ - "z-index", - "zIndex" - ], - "syntax": "auto | <integer> | inherit", - "extended": [] - } - ] -]); diff --git a/vanilla/node_modules/cssstyle/lib/normalize.js b/vanilla/node_modules/cssstyle/lib/normalize.js deleted file mode 100644 index bc39b70..0000000 --- a/vanilla/node_modules/cssstyle/lib/normalize.js +++ /dev/null @@ -1,1574 +0,0 @@ -"use strict"; - -const propertyDefinitions = require("./generated/propertyDefinitions"); -const { hasVarFunc, isGlobalKeyword, isValidPropertyValue, splitValue } = require("./parsers"); -const background = require("./properties/background"); -const backgroundColor = require("./properties/backgroundColor"); -const backgroundSize = require("./properties/backgroundSize"); -const border = require("./properties/border"); -const borderWidth = require("./properties/borderWidth"); -const borderStyle = require("./properties/borderStyle"); -const borderColor = require("./properties/borderColor"); -const borderTop = require("./properties/borderTop"); -const borderRight = require("./properties/borderRight"); -const borderBottom = require("./properties/borderBottom"); -const borderLeft = require("./properties/borderLeft"); -const flex = require("./properties/flex"); -const font = require("./properties/font"); -const margin = require("./properties/margin"); -const padding = require("./properties/padding"); - -/* constants */ -const BORDER_IMAGE = "border-image"; -const TOP = "top"; -const RIGHT = "right"; -const BOTTOM = "bottom"; -const LEFT = "left"; -const WIDTH = "width"; -const STYLE = "style"; -const COLOR = "color"; -const NONE = "none"; -const TRBL_INDICES = { - [TOP]: 0, - [RIGHT]: 1, - [BOTTOM]: 2, - [LEFT]: 3 -}; - -/* shorthands */ -const shorthandProperties = new Map([ - [background.property, background], - [ - border.property, - { - definition: border.definition, - parse: border.parse, - shorthandFor: new Map([ - ...border.shorthandFor, - ...border.positionShorthandFor, - [BORDER_IMAGE, null] - ]) - } - ], - [borderWidth.property, borderWidth], - [borderStyle.property, borderStyle], - [borderColor.property, borderColor], - [borderTop.property, borderTop], - [borderRight.property, borderRight], - [borderBottom.property, borderBottom], - [borderLeft.property, borderLeft], - ["flex", flex], - ["font", font], - ["margin", margin], - ["padding", padding] -]); - -/* borders */ -const borderProperties = new Set([ - border.property, - BORDER_IMAGE, - ...border.shorthandFor.keys(), - ...border.positionShorthandFor.keys(), - ...borderTop.shorthandFor.keys(), - ...borderRight.shorthandFor.keys(), - ...borderBottom.shorthandFor.keys(), - ...borderLeft.shorthandFor.keys() -]); -const borderPositions = new Set([TOP, RIGHT, BOTTOM, LEFT]); -const borderLines = new Set([WIDTH, STYLE, COLOR]); - -/** - * Ensures consistent object shape. - * - * @param {string} property - The property name. - * @param {string} [value=""] - The property value. - * @param {string} [priority=""] - The priority. - * @returns {Object} The property item object. - */ -const createPropertyItem = (property, value = "", priority = "") => ({ - property, - value, - priority -}); - -/** - * Retrieves a property item from the map or creates a default one if it doesn't exist. - * - * @param {string} property - The name of the property. - * @param {Map} properties - The map containing all properties. - * @returns {Object} The property item containing name, value, and priority. - */ -const getPropertyItem = (property, properties) => { - const propertyItem = properties.get(property) ?? createPropertyItem(property); - return propertyItem; -}; - -/** - * Calculates the value for a specific position (top, right, bottom, left) - * based on the array of values provided for a shorthand property. - * - * @param {string[]} positionValues - The values extracted from the shorthand property. - * @param {string} position - The specific position (top, right, bottom, left) to retrieve. - * @returns {string} The calculated value for the position. - */ -const getPositionValue = (positionValues, position) => { - const [val1, val2, val3, val4] = positionValues; - const index = TRBL_INDICES[position] ?? -1; - // If a specific position (top, right, bottom, left) is requested. - if (index !== -1) { - switch (positionValues.length) { - case 2: { - // Index 0 (Top) & 2 (Bottom) -> val1 - // Index 1 (Right) & 3 (Left) -> val2 - return index % 2 === 0 ? val1 : val2; - } - case 3: { - // Index 0 (Top) -> val1 - // Index 1 (Right) & 3 (Left) -> val2 - // Index 2 (Bottom) -> val3 - if (index === 2) { - return val3; - } - return index % 2 === 0 ? val1 : val2; - } - case 4: { - return positionValues[index]; - } - case 1: - default: { - return val1; - } - } - } - // Fallback logic for when no specific position is requested. - switch (positionValues.length) { - case 2: { - if (val1 === val2) { - return val1; - } - return `${val1} ${val2}`; - } - case 3: { - if (val1 === val3) { - if (val1 === val2) { - return val1; - } - return `${val1} ${val2}`; - } - return `${val1} ${val2} ${val3}`; - } - case 4: { - if (val2 === val4) { - if (val1 === val3) { - if (val1 === val2) { - return val1; - } - return `${val1} ${val2}`; - } - return `${val1} ${val2} ${val3}`; - } - return `${val1} ${val2} ${val3} ${val4}`; - } - case 1: - default: { - return val1; - } - } -}; - -/** - * Replaces the background shorthand property based on individual longhand values. - * - * @param {string} property - The specific background longhand property being updated. - * @param {Map} properties - The map of all properties. - * @param {Object} opt - Parsing options including global object and configurations. - * @returns {string} The constructed background shorthand string. - */ -const replaceBackgroundShorthand = (property, properties, opt) => { - const { value: propertyValue } = properties.get(property); - const parsedValue = background.shorthandFor.get(property).parse(propertyValue, opt); - const values = splitValue(parsedValue, { - delimiter: "," - }); - const { value: shorthandValue } = properties.get(background.property); - const bgValues = background.parse(shorthandValue, opt); - const bgLength = bgValues.length; - if (property === backgroundColor.property) { - bgValues[bgLength - 1][property] = parsedValue[0]; - } else { - for (let i = 0; i < bgLength; i++) { - bgValues[i][property] = values[i]; - } - } - const backgrounds = []; - for (const bgValue of bgValues) { - const bg = []; - for (const [longhand, value] of Object.entries(bgValue)) { - if (!value || value === background.initialValues.get(longhand)) { - continue; - } - if (longhand === backgroundSize.property) { - bg.push(`/ ${value}`); - } else { - bg.push(value); - } - } - backgrounds.push(bg.join(" ")); - } - return backgrounds.join(", "); -}; - -/** - * Checks if a property value matches the value within a border shorthand. - * - * @param {string} property - The property to check. - * @param {string} value - The value to compare. - * @param {string} shorthandValue - The shorthand string to parse and compare against. - * @param {Object} [opt={}] - Parsing options. - * @returns {boolean} True if the value matches the shorthand's value. - */ -const matchesBorderShorthandValue = (property, value, shorthandValue, opt = {}) => { - const { globalObject, options } = opt; - const obj = border.parse(shorthandValue, { - globalObject, - options - }); - if (Object.hasOwn(obj, property)) { - return value === obj[property]; - } - return value === border.initialValues.get(property); -}; - -/** - * Replaces or updates a value within a border shorthand string. - * - * @param {string} value - The new value to insert. - * @param {string} shorthandValue - The existing shorthand string. - * @param {Object} [opt={}] - Parsing options. - * @returns {string} The updated border shorthand string. - */ -const replaceBorderShorthandValue = (value, shorthandValue, opt = {}) => { - const { globalObject, options } = opt; - const borderFirstInitialKey = border.initialValues.keys().next().value; - const borderFirstInitialValue = border.initialValues.get(borderFirstInitialKey); - const parseOpt = { - globalObject, - options - }; - const valueObj = border.parse(value, parseOpt); - const shorthandObj = shorthandValue - ? border.parse(shorthandValue, parseOpt) - : { - [borderFirstInitialKey]: borderFirstInitialValue - }; - const keys = border.shorthandFor.keys(); - for (const key of keys) { - const initialValue = border.initialValues.get(key); - let parsedValue = initialValue; - if (Object.hasOwn(valueObj, key)) { - parsedValue = valueObj[key]; - } - if (parsedValue === initialValue) { - if (key === borderFirstInitialKey) { - if (!Object.hasOwn(shorthandObj, key)) { - shorthandObj[key] = parsedValue; - } - } else { - delete shorthandObj[key]; - } - } else { - shorthandObj[key] = parsedValue; - if ( - shorthandObj[borderFirstInitialKey] && - shorthandObj[borderFirstInitialKey] === borderFirstInitialValue - ) { - delete shorthandObj[borderFirstInitialKey]; - } - } - } - return Object.values(shorthandObj).join(" "); -}; - -/** - * Replaces a value at a specific position (top, right, bottom, left) within a position shorthand. - * - * @param {string} value - The new value to set. - * @param {string[]} positionValues - The array of existing position values. - * @param {string} position - The position to update. - * @returns {string} The updated shorthand string. - */ -const replacePositionValue = (value, positionValues, position) => { - const index = TRBL_INDICES[position] ?? -1; - let currentValues = positionValues; - if (index !== -1) { - // Loop for reducing array length (instead of recursion) - while (true) { - const [val1, val2, val3, val4] = currentValues; - switch (currentValues.length) { - case 2: { - if (val1 === val2) { - currentValues = [val1]; - continue; - } - switch (index) { - // Top - case 0: { - if (val1 === value) { - return currentValues.join(" "); - } - return `${value} ${val2} ${val1}`; - } - // Right - case 1: { - if (val2 === value) { - return currentValues.join(" "); - } - return `${val1} ${value} ${val1} ${val2}`; - } - // Bottom - case 2: { - if (val1 === value) { - return currentValues.join(" "); - } - return `${val1} ${val2} ${value}`; - } - // Left - case 3: - default: { - if (val2 === value) { - return currentValues.join(" "); - } - return `${val1} ${val2} ${val1} ${value}`; - } - } - } - case 3: { - if (val1 === val3) { - currentValues = [val1, val2]; - continue; - } - switch (index) { - // Top - case 0: { - if (val1 === value) { - return currentValues.join(" "); - } else if (val3 === value) { - return `${value} ${val2}`; - } - return `${value} ${val2} ${val3}`; - } - // Right - case 1: { - if (val2 === value) { - return currentValues.join(" "); - } - return `${val1} ${value} ${val3} ${val2}`; - } - // Bottom - case 2: { - if (val3 === value) { - return currentValues.join(" "); - } else if (val1 === value) { - return `${val1} ${val2}`; - } - return `${val1} ${val2} ${value}`; - } - // Left - case 3: - default: { - if (val2 === value) { - return currentValues.join(" "); - } - return `${val1} ${val2} ${val3} ${value}`; - } - } - } - case 4: { - if (val2 === val4) { - currentValues = [val1, val2, val3]; - continue; - } - switch (index) { - // Top - case 0: { - if (val1 === value) { - return currentValues.join(" "); - } - return `${value} ${val2} ${val3} ${val4}`; - } - // Right - case 1: { - if (val2 === value) { - return currentValues.join(" "); - } else if (val4 === value) { - return `${val1} ${value} ${val3}`; - } - return `${val1} ${value} ${val3} ${val4}`; - } - // Bottom - case 2: { - if (val3 === value) { - return currentValues.join(" "); - } - return `${val1} ${val2} ${value} ${val4}`; - } - // Left - case 3: - default: { - if (val4 === value) { - return currentValues.join(" "); - } else if (val2 === value) { - return `${val1} ${val2} ${val3}`; - } - return `${val1} ${val2} ${val3} ${value}`; - } - } - } - case 1: - default: { - const [val] = currentValues; - if (val === value) { - return currentValues.join(" "); - } - switch (index) { - // Top - case 0: { - return `${value} ${val} ${val}`; - } - // Right - case 1: { - return `${val} ${value} ${val} ${val}`; - } - // Bottom - case 2: { - return `${val} ${val} ${value}`; - } - // Left - case 3: - default: { - return `${val} ${val} ${val} ${value}`; - } - } - } - } - } - } - // Fallback logic for when no specific position is requested. - const [val1, val2, val3, val4] = currentValues; - switch (currentValues.length) { - case 2: { - if (val1 === val2) { - return val1; - } - return `${val1} ${val2}`; - } - case 3: { - if (val1 === val3) { - if (val1 === val2) { - return val1; - } - return `${val1} ${val2}`; - } - return `${val1} ${val2} ${val3}`; - } - case 4: { - if (val2 === val4) { - if (val1 === val3) { - if (val1 === val2) { - return val1; - } - return `${val1} ${val2}`; - } - return `${val1} ${val2} ${val3}`; - } - return `${val1} ${val2} ${val3} ${val4}`; - } - case 1: - default: { - return val1; - } - } -}; - -/** - * Handles border property preparation when the value is a string. - * - * @param {Object} params - The parameters object. - * @param {string} params.property - The property name. - * @param {string} params.value - The property value. - * @param {string} params.priority - The property priority. - * @param {Map} params.properties - The map of properties. - * @param {Object} params.parts - The split property name parts. - * @param {Object} params.opt - Parsing options. - * @param {Map} params.borderItems - The map to store processed border items. - */ -const prepareBorderStringValue = ({ - property, - value, - priority, - properties, - parts, - opt, - borderItems -}) => { - const { prop1, prop2, prop3 } = parts; - const { globalObject, options } = opt; - const parseOpt = { - globalObject, - options - }; - const shorthandItem = getPropertyItem(border.property, properties); - const imageItem = getPropertyItem(BORDER_IMAGE, properties); - // Handle longhand properties. - if (prop3) { - const lineProperty = `${prop1}-${prop3}`; - const lineItem = getPropertyItem(lineProperty, properties); - const positionProperty = `${prop1}-${prop2}`; - const positionItem = getPropertyItem(positionProperty, properties); - const longhandProperty = `${prop1}-${prop2}-${prop3}`; - const longhandItem = getPropertyItem(longhandProperty, properties); - longhandItem.value = value; - longhandItem.priority = priority; - const propertyValue = hasVarFunc(value) ? "" : value; - if (propertyValue === "") { - shorthandItem.value = ""; - lineItem.value = ""; - positionItem.value = ""; - } else if (isGlobalKeyword(propertyValue)) { - if (shorthandItem.value !== propertyValue) { - shorthandItem.value = ""; - } - if (lineItem.value !== propertyValue) { - lineItem.value = ""; - } - if (positionItem.value !== propertyValue) { - positionItem.value = ""; - } - } else { - if ( - shorthandItem.value && - !matchesBorderShorthandValue(lineProperty, propertyValue, shorthandItem.value, parseOpt) - ) { - shorthandItem.value = ""; - } - if (lineItem.value) { - lineItem.value = replacePositionValue(propertyValue, splitValue(lineItem.value), prop2); - } - if ( - positionItem.value && - !matchesBorderShorthandValue(lineProperty, propertyValue, positionItem.value, parseOpt) - ) { - positionItem.value = ""; - } - } - borderItems.set(border.property, shorthandItem); - borderItems.set(BORDER_IMAGE, imageItem); - borderItems.set(lineProperty, lineItem); - borderItems.set(positionProperty, positionItem); - borderItems.set(longhandProperty, longhandItem); - // Handle side-specific border shorthands (border-top, border-right, border-bottom, border-left). - } else if (prop2 && borderPositions.has(prop2)) { - const lineWidthProperty = `${prop1}-width`; - const lineWidthItem = getPropertyItem(lineWidthProperty, properties); - const lineStyleProperty = `${prop1}-style`; - const lineStyleItem = getPropertyItem(lineStyleProperty, properties); - const lineColorProperty = `${prop1}-color`; - const lineColorItem = getPropertyItem(lineColorProperty, properties); - const positionProperty = `${prop1}-${prop2}`; - const positionItem = getPropertyItem(positionProperty, properties); - positionItem.value = value; - positionItem.priority = priority; - const propertyValue = hasVarFunc(value) ? "" : value; - if (propertyValue === "") { - shorthandItem.value = ""; - lineWidthItem.value = ""; - lineStyleItem.value = ""; - lineColorItem.value = ""; - } else if (isGlobalKeyword(propertyValue)) { - if (shorthandItem.value !== propertyValue) { - shorthandItem.value = ""; - } - if (lineWidthItem.value !== propertyValue) { - lineWidthItem.value = ""; - } - if (lineStyleItem.value !== propertyValue) { - lineStyleItem.value = ""; - } - if (lineColorItem.value !== propertyValue) { - lineColorItem.value = ""; - } - } else { - if ( - shorthandItem.value && - !matchesBorderShorthandValue(property, propertyValue, shorthandItem.value, parseOpt) - ) { - shorthandItem.value = ""; - } - if ( - lineWidthItem.value && - isValidPropertyValue(lineWidthProperty, propertyValue, globalObject) - ) { - lineWidthItem.value = propertyValue; - } - if ( - lineStyleItem.value && - isValidPropertyValue(lineStyleProperty, propertyValue, globalObject) - ) { - lineStyleItem.value = propertyValue; - } - if ( - lineColorItem.value && - isValidPropertyValue(lineColorProperty, propertyValue, globalObject) - ) { - lineColorItem.value = propertyValue; - } - } - for (const line of borderLines) { - const longhandProperty = `${prop1}-${prop2}-${line}`; - const longhandItem = getPropertyItem(longhandProperty, properties); - longhandItem.value = propertyValue; - longhandItem.priority = priority; - borderItems.set(longhandProperty, longhandItem); - } - borderItems.set(border.property, shorthandItem); - borderItems.set(BORDER_IMAGE, imageItem); - borderItems.set(lineWidthProperty, lineWidthItem); - borderItems.set(lineStyleProperty, lineStyleItem); - borderItems.set(lineColorProperty, lineColorItem); - borderItems.set(positionProperty, positionItem); - // Handle property-specific border shorthands (border-width, border-style, border-color). - } else if (prop2 && borderLines.has(prop2)) { - const lineProperty = `${prop1}-${prop2}`; - const lineItem = getPropertyItem(lineProperty, properties); - lineItem.value = value; - lineItem.priority = priority; - const propertyValue = hasVarFunc(value) ? "" : value; - if (propertyValue === "") { - shorthandItem.value = ""; - } else if (isGlobalKeyword(propertyValue)) { - if (shorthandItem.value !== propertyValue) { - shorthandItem.value = ""; - } - } - for (const position of borderPositions) { - const positionProperty = `${prop1}-${position}`; - const positionItem = getPropertyItem(positionProperty, properties); - const longhandProperty = `${prop1}-${position}-${prop2}`; - const longhandItem = getPropertyItem(longhandProperty, properties); - if (propertyValue) { - positionItem.value = replaceBorderShorthandValue( - propertyValue, - positionItem.value, - parseOpt - ); - } else { - positionItem.value = ""; - } - longhandItem.value = propertyValue; - longhandItem.priority = priority; - borderItems.set(positionProperty, positionItem); - borderItems.set(longhandProperty, longhandItem); - } - borderItems.set(border.property, shorthandItem); - borderItems.set(BORDER_IMAGE, imageItem); - borderItems.set(lineProperty, lineItem); - // Handle border shorthand. - } else { - const propertyValue = hasVarFunc(value) ? "" : value; - imageItem.value = propertyValue ? NONE : ""; - for (const line of borderLines) { - const lineProperty = `${prop1}-${line}`; - const lineItem = getPropertyItem(lineProperty, properties); - lineItem.value = propertyValue; - lineItem.priority = priority; - borderItems.set(lineProperty, lineItem); - } - for (const position of borderPositions) { - const positionProperty = `${prop1}-${position}`; - const positionItem = getPropertyItem(positionProperty, properties); - positionItem.value = propertyValue; - positionItem.priority = priority; - borderItems.set(positionProperty, positionItem); - for (const line of borderLines) { - const longhandProperty = `${positionProperty}-${line}`; - const longhandItem = getPropertyItem(longhandProperty, properties); - longhandItem.value = propertyValue; - longhandItem.priority = priority; - borderItems.set(longhandProperty, longhandItem); - } - } - borderItems.set(property, shorthandItem); - borderItems.set(BORDER_IMAGE, imageItem); - } -}; - -/** - * Handles border property preparation when the value is an array. - * - * @param {Object} params - The parameters object. - * @param {Array} params.value - The property value. - * @param {string} params.priority - The property priority. - * @param {Map} params.properties - The map of properties. - * @param {Object} params.parts - The split property name parts. - * @param {Object} params.opt - Parsing options. - * @param {Map} params.borderItems - The map to store processed border items. - */ -const prepareBorderArrayValue = ({ value, priority, properties, parts, opt, borderItems }) => { - const { prop1, prop2 } = parts; - const { globalObject, options } = opt; - const parseOpt = { - globalObject, - options - }; - if (!value.length || !borderLines.has(prop2)) { - return; - } - const shorthandItem = getPropertyItem(border.property, properties); - const imageItem = getPropertyItem(BORDER_IMAGE, properties); - const lineProperty = `${prop1}-${prop2}`; - const lineItem = getPropertyItem(lineProperty, properties); - if (value.length === 1) { - const [propertyValue] = value; - if (shorthandItem.value) { - if (hasVarFunc(shorthandItem.value)) { - shorthandItem.value = ""; - } else if (propertyValue) { - shorthandItem.value = replaceBorderShorthandValue( - propertyValue, - shorthandItem.value, - parseOpt - ); - } - } - } else { - shorthandItem.value = ""; - } - lineItem.value = value.join(" "); - lineItem.priority = priority; - const positionValues = {}; - const [val1, val2, val3, val4] = value; - switch (value.length) { - case 2: { - positionValues.top = val1; - positionValues.right = val2; - positionValues.bottom = val1; - positionValues.left = val2; - break; - } - case 3: { - positionValues.top = val1; - positionValues.right = val2; - positionValues.bottom = val3; - positionValues.left = val2; - break; - } - case 4: { - positionValues.top = val1; - positionValues.right = val2; - positionValues.bottom = val3; - positionValues.left = val4; - break; - } - case 1: - default: { - positionValues.top = val1; - positionValues.right = val1; - positionValues.bottom = val1; - positionValues.left = val1; - } - } - for (const position of borderPositions) { - const positionProperty = `${prop1}-${position}`; - const positionItem = getPropertyItem(positionProperty, properties); - if (positionItem.value && positionValues[position]) { - positionItem.value = replaceBorderShorthandValue( - positionValues[position], - positionItem.value, - parseOpt - ); - } - const longhandProperty = `${positionProperty}-${prop2}`; - const longhandItem = getPropertyItem(longhandProperty, properties); - longhandItem.value = positionValues[position]; - longhandItem.priority = priority; - borderItems.set(positionProperty, positionItem); - borderItems.set(longhandProperty, longhandItem); - } - borderItems.set(border.property, shorthandItem); - borderItems.set(BORDER_IMAGE, imageItem); - borderItems.set(lineProperty, lineItem); -}; - -/** - * Handles border property preparation when the value is an object. - * - * @param {Object} params - The parameters object. - * @param {string} params.property - The property name. - * @param {Object} params.value - The property value. - * @param {string} params.priority - The property priority. - * @param {Map} params.properties - The map of properties. - * @param {Object} params.parts - The split property name parts. - * @param {Object} params.opt - Parsing options. - * @param {Map} params.borderItems - The map to store processed border items. - */ -const prepareBorderObjectValue = ({ - property, - value, - priority, - properties, - parts, - opt, - borderItems -}) => { - const { prop1, prop2 } = parts; - const { globalObject, options } = opt; - const parseOpt = { - globalObject, - options - }; - const imageItem = getPropertyItem(BORDER_IMAGE, properties); - // Handle position shorthands. - if (prop2) { - if (!borderPositions.has(prop2)) { - return; - } - const shorthandItem = getPropertyItem(border.property, properties); - const lineWidthProperty = `${prop1}-width`; - const lineWidthItem = getPropertyItem(lineWidthProperty, properties); - const lineStyleProperty = `${prop1}-style`; - const lineStyleItem = getPropertyItem(lineStyleProperty, properties); - const lineColorProperty = `${prop1}-color`; - const lineColorItem = getPropertyItem(lineColorProperty, properties); - const positionProperty = `${prop1}-${prop2}`; - const positionItem = getPropertyItem(positionProperty, properties); - if (shorthandItem.value) { - for (const positionValue of Object.values(value)) { - if (!matchesBorderShorthandValue(property, positionValue, shorthandItem.value, parseOpt)) { - shorthandItem.value = ""; - break; - } - } - } - positionItem.value = Object.values(value).join(" "); - positionItem.priority = priority; - for (const line of borderLines) { - const longhandProperty = `${prop1}-${prop2}-${line}`; - const longhandItem = getPropertyItem(longhandProperty, properties); - const itemValue = Object.hasOwn(value, longhandProperty) - ? value[longhandProperty] - : border.initialValues.get(`${prop1}-${line}`); - if (line === WIDTH && lineWidthItem.value) { - lineWidthItem.value = replacePositionValue( - itemValue, - splitValue(lineWidthItem.value), - prop2 - ); - } else if (line === STYLE && lineStyleItem.value) { - lineStyleItem.value = replacePositionValue( - itemValue, - splitValue(lineStyleItem.value), - prop2 - ); - } else if (line === COLOR && lineColorItem.value) { - lineColorItem.value = replacePositionValue( - itemValue, - splitValue(lineColorItem.value), - prop2 - ); - } - longhandItem.value = itemValue; - longhandItem.priority = priority; - borderItems.set(longhandProperty, longhandItem); - } - borderItems.set(border.property, shorthandItem); - borderItems.set(BORDER_IMAGE, imageItem); - borderItems.set(lineWidthProperty, lineWidthItem); - borderItems.set(lineStyleProperty, lineStyleItem); - borderItems.set(lineColorProperty, lineColorItem); - borderItems.set(positionProperty, positionItem); - // Handle border shorthand. - } else { - const shorthandItem = getPropertyItem(prop1, properties); - const lineWidthProperty = `${prop1}-width`; - const lineWidthItem = getPropertyItem(lineWidthProperty, properties); - const lineStyleProperty = `${prop1}-style`; - const lineStyleItem = getPropertyItem(lineStyleProperty, properties); - const lineColorProperty = `${prop1}-color`; - const lineColorItem = getPropertyItem(lineColorProperty, properties); - const propertyValue = Object.values(value).join(" "); - shorthandItem.value = propertyValue; - shorthandItem.priority = priority; - imageItem.value = propertyValue ? NONE : ""; - if (Object.hasOwn(value, lineWidthProperty)) { - lineWidthItem.value = value[lineWidthProperty]; - } else { - lineWidthItem.value = border.initialValues.get(lineWidthProperty); - } - lineWidthItem.priority = priority; - if (Object.hasOwn(value, lineStyleProperty)) { - lineStyleItem.value = value[lineStyleProperty]; - } else { - lineStyleItem.value = border.initialValues.get(lineStyleProperty); - } - lineStyleItem.priority = priority; - if (Object.hasOwn(value, lineColorProperty)) { - lineColorItem.value = value[lineColorProperty]; - } else { - lineColorItem.value = border.initialValues.get(lineColorProperty); - } - lineColorItem.priority = priority; - for (const position of borderPositions) { - const positionProperty = `${prop1}-${position}`; - const positionItem = getPropertyItem(positionProperty, properties); - positionItem.value = propertyValue; - positionItem.priority = priority; - for (const line of borderLines) { - const longhandProperty = `${positionProperty}-${line}`; - const longhandItem = getPropertyItem(longhandProperty, properties); - const lineProperty = `${prop1}-${line}`; - if (Object.hasOwn(value, lineProperty)) { - longhandItem.value = value[lineProperty]; - } else { - longhandItem.value = border.initialValues.get(lineProperty); - } - longhandItem.priority = priority; - borderItems.set(longhandProperty, longhandItem); - } - borderItems.set(positionProperty, positionItem); - } - borderItems.set(property, shorthandItem); - borderItems.set(BORDER_IMAGE, imageItem); - borderItems.set(lineWidthProperty, lineWidthItem); - borderItems.set(lineStyleProperty, lineStyleItem); - borderItems.set(lineColorProperty, lineColorItem); - } -}; - -/** - * Prepares border properties by splitting shorthands and handling updates. - * - * @param {string} property - The border property name. - * @param {string|Array|Object} value - The value of the property. - * @param {string} priority - The priority of the property (e.g., "important"). - * @param {Map} properties - The map of all properties. - * @param {Object} [opt={}] - Parsing options. - * @returns {Map|undefined} A map of expanded or updated border properties. - */ -const prepareBorderProperties = (property, value, priority, properties, opt = {}) => { - if (typeof property !== "string" || value === null) { - return; - } - if (!property.startsWith(border.property)) { - return; - } - let prop2, prop3; - if (property.length > border.property.length) { - // Check if next char is '-' - if (property.charCodeAt(border.property.length) !== 45) { - return; - } - // property is like "border-..." - const remainder = property.substring(border.property.length + 1); - const hyphenIndex = remainder.indexOf("-"); - if (hyphenIndex !== -1) { - prop2 = remainder.substring(0, hyphenIndex); - prop3 = remainder.substring(hyphenIndex + 1); - } else { - prop2 = remainder; - } - } - if ( - (borderPositions.has(prop2) && prop3 && !borderLines.has(prop3)) || - (borderLines.has(prop2) && prop3) - ) { - return; - } - const parts = { - prop1: border.property, - prop2, - prop3 - }; - const borderItems = new Map(); - if (typeof value === "string") { - prepareBorderStringValue({ - property, - value, - priority, - properties, - parts, - opt, - borderItems - }); - } else if (Array.isArray(value)) { - prepareBorderArrayValue({ - value, - priority, - properties, - parts, - opt, - borderItems - }); - } else if (value && typeof value === "object") { - prepareBorderObjectValue({ - property, - value, - priority, - properties, - parts, - opt, - borderItems - }); - } - if (!borderItems.has(border.property)) { - return; - } - const borderProps = new Map([[border.property, borderItems.get(border.property)]]); - for (const line of borderLines) { - const lineProperty = `${border.property}-${line}`; - const lineItem = borderItems.get(lineProperty) ?? getPropertyItem(lineProperty, properties); - borderProps.set(lineProperty, lineItem); - } - for (const position of borderPositions) { - const positionProperty = `${border.property}-${position}`; - const positionItem = - borderItems.get(positionProperty) ?? getPropertyItem(positionProperty, properties); - borderProps.set(positionProperty, positionItem); - for (const line of borderLines) { - const longhandProperty = `${border.property}-${position}-${line}`; - const longhandItem = - borderItems.get(longhandProperty) ?? getPropertyItem(longhandProperty, properties); - borderProps.set(longhandProperty, longhandItem); - } - } - const borderImageItem = borderItems.get(BORDER_IMAGE) ?? createPropertyItem(BORDER_IMAGE); - borderProps.set(BORDER_IMAGE, borderImageItem); - return borderProps; -}; - -/** - * Generates a border line shorthand property if all line components are present. - * - * @param {Map} items - The map of collected property items. - * @param {string} property - The shorthand property name to generate. - * @param {string} [priority=""] - The priority of the property. - * @returns {Array} A key-value pair for the generated property. - */ -const generateBorderLineShorthand = (items, property, priority = "") => { - const values = []; - for (const [, item] of items) { - const { value: itemValue } = item; - values.push(itemValue); - } - const value = getPositionValue(values); - return [property, createPropertyItem(property, value, priority)]; -}; - -/** - * Generates a border position shorthand property if all position components are present. - * - * @param {Map} items - The map of collected property items. - * @param {string} property - The shorthand property name to generate. - * @param {string} [priority=""] - The priority of the property. - * @returns {Array} A key-value pair for the generated property. - */ -const generateBorderPositionShorthand = (items, property, priority = "") => { - const values = []; - for (const [, item] of items) { - const { value: itemValue } = item; - values.push(itemValue); - } - const value = values.join(" "); - return [property, createPropertyItem(property, value, priority)]; -}; - -/** - * Generates a border shorthand property if all components match. - * - * @param {Array} items - The collection of property values. - * @param {string} property - The shorthand property name to generate. - * @param {string} [priority=""] - The priority of the property. - * @returns {Array|undefined} A key-value pair for the generated property or undefined. - */ -const generateBorderShorthand = (items, property, priority = "") => { - const values = new Set(items); - if (values.size === 1) { - const value = values.keys().next().value; - return [property, createPropertyItem(property, value, priority)]; - } -}; - -const borderCollectionConfig = { - [WIDTH]: { - shorthand: borderWidth.property, - generator: generateBorderLineShorthand - }, - [STYLE]: { - shorthand: borderStyle.property, - generator: generateBorderLineShorthand - }, - [COLOR]: { - shorthand: borderColor.property, - generator: generateBorderLineShorthand - }, - [TOP]: { - shorthand: borderTop.property, - generator: generateBorderPositionShorthand - }, - [RIGHT]: { - shorthand: borderRight.property, - generator: generateBorderPositionShorthand - }, - [BOTTOM]: { - shorthand: borderBottom.property, - generator: generateBorderPositionShorthand - }, - [LEFT]: { - shorthand: borderLeft.property, - generator: generateBorderPositionShorthand - } -}; - -/** - * Processes and consolidates border-related longhands into shorthands where possible. - * - * @param {Map} properties - The map of current properties. - * @returns {Map} The updated map with consolidated border properties. - */ -const prepareBorderShorthands = (properties) => { - const borderCollections = {}; - for (const key of Object.keys(borderCollectionConfig)) { - borderCollections[key] = { - ...borderCollectionConfig[key], - items: new Map(), - priorityItems: new Map() - }; - } - for (const [property, item] of properties) { - const { priority, value } = item; - let positionPart, linePart; - // We can assume property starts with "border-" - const firstHyphen = property.indexOf("-"); - if (firstHyphen !== -1) { - const remainder = property.substring(firstHyphen + 1); - const secondHyphen = remainder.indexOf("-"); - if (secondHyphen !== -1) { - positionPart = remainder.substring(0, secondHyphen); - linePart = remainder.substring(secondHyphen + 1); - } else { - positionPart = remainder; - linePart = undefined; - } - } - if (linePart && borderCollections[linePart]) { - const collection = borderCollections[linePart]; - if (priority) { - collection.priorityItems.set(property, { property, value, priority }); - } else { - collection.items.set(property, { property, value, priority }); - } - } - if (positionPart && borderCollections[positionPart]) { - const collection = borderCollections[positionPart]; - if (priority) { - collection.priorityItems.set(property, { property, value, priority }); - } else { - collection.items.set(property, { property, value, priority }); - } - } - } - const shorthandItems = []; - const shorthandPriorityItems = []; - for (const [key, collection] of Object.entries(borderCollections)) { - const { shorthand, generator, items, priorityItems } = collection; - const requiredSize = borderLines.has(key) ? 4 : 3; - if (items.size === requiredSize) { - const [property, item] = generator(items, shorthand) ?? []; - if (property && item) { - properties.set(property, item); - if (borderPositions.has(key) && properties.has(BORDER_IMAGE)) { - const { value: imageValue } = properties.get(BORDER_IMAGE); - if (imageValue === NONE) { - shorthandItems.push(item.value); - } - } - } - } else if (priorityItems.size === requiredSize) { - const [property, item] = generator(priorityItems, shorthand, "important") ?? []; - if (property && item) { - properties.set(property, item); - if (borderPositions.has(key) && properties.has(BORDER_IMAGE)) { - const { value: imageValue } = properties.get(BORDER_IMAGE); - if (imageValue === NONE) { - shorthandPriorityItems.push(item.value); - } - } - } - } - } - const mixedPriorities = shorthandItems.length && shorthandPriorityItems.length; - const imageItem = createPropertyItem(BORDER_IMAGE, NONE); - if (shorthandItems.length === 4) { - const [property, item] = generateBorderShorthand(shorthandItems, border.property) ?? []; - if (property && item) { - properties.set(property, item); - properties.delete(BORDER_IMAGE); - properties.set(BORDER_IMAGE, imageItem); - } - } else if (shorthandPriorityItems.length === 4) { - const [property, item] = - generateBorderShorthand(shorthandPriorityItems, border.property, "important") ?? []; - if (property && item) { - properties.set(property, item); - properties.delete(BORDER_IMAGE); - properties.set(BORDER_IMAGE, imageItem); - } - } else if (properties.has(BORDER_IMAGE)) { - const { value: imageValue } = properties.get(BORDER_IMAGE); - if (imageValue === NONE) { - if (mixedPriorities) { - properties.delete(BORDER_IMAGE); - properties.set(BORDER_IMAGE, imageItem); - } else { - properties.delete(BORDER_IMAGE); - } - } - } - if (mixedPriorities) { - const items = []; - const priorityItems = []; - for (const item of properties) { - const [, { priority }] = item; - if (priority) { - priorityItems.push(item); - } else { - items.push(item); - } - } - const firstPropertyKey = properties.keys().next().value; - const { priority: firstPropertyPriority } = properties.get(firstPropertyKey); - if (firstPropertyPriority) { - return new Map([...priorityItems, ...items]); - } - return new Map([...items, ...priorityItems]); - } - if (properties.has(BORDER_IMAGE)) { - properties.delete(BORDER_IMAGE); - properties.set(BORDER_IMAGE, imageItem); - } - return properties; -}; - -/** - * Processes shorthand properties from the shorthands map. - * - * @param {Map} shorthands - The map containing shorthand property groups. - * @returns {Map} A map of processed shorthand properties. - */ -const processShorthandProperties = (shorthands) => { - const shorthandItems = new Map(); - for (const [property, item] of shorthands) { - const shorthandItem = shorthandProperties.get(property); - if (item.size === shorthandItem.shorthandFor.size && shorthandItem.position) { - const positionValues = []; - let priority = ""; - for (const { value: longhandValue, priority: longhandPriority } of item.values()) { - positionValues.push(longhandValue); - if (longhandPriority) { - priority = longhandPriority; - } - } - const value = getPositionValue(positionValues, shorthandItem.position); - shorthandItems.set(property, createPropertyItem(property, value, priority)); - } - } - return shorthandItems; -}; - -/** - * Updates the longhand properties map with a new property item. - * If a property with normal priority already exists, it will be overwritten by the new item. - * If the existing property has "important" priority, it will not be overwritten. - * - * @param {string} property - The CSS property name. - * @param {Object} item - The property item object containing value and priority. - * @param {Map} longhandProperties - The map of longhand properties to update. - */ -const updateLonghandProperties = (property, item, longhandProperties) => { - if (longhandProperties.has(property)) { - const { priority: longhandPriority } = longhandProperties.get(property); - if (!longhandPriority) { - longhandProperties.delete(property); - longhandProperties.set(property, item); - } - } else { - longhandProperties.set(property, item); - } -}; - -/** - * Processes border properties from the borders map, expanding and normalizing them. - * - * @param {Map} borders - The map containing accumulated border properties. - * @param {Object} parseOpt - Options for parsing values. - * @returns {Map} A map of fully processed and normalized border properties. - */ -const processBorderProperties = (borders, parseOpt) => { - const longhandProperties = new Map(); - for (const [property, item] of borders) { - if (shorthandProperties.has(property)) { - const { value, priority } = item; - if (property === border.property) { - const lineItems = border.parse(value, parseOpt); - for (const [key, initialValue] of border.initialValues) { - if (!Object.hasOwn(lineItems, key)) { - lineItems[key] = initialValue; - } - } - for (const lineProperty of Object.keys(lineItems)) { - let namePart, linePart; - const hyphenIndex = lineProperty.indexOf("-"); - if (hyphenIndex !== -1) { - namePart = lineProperty.substring(0, hyphenIndex); - linePart = lineProperty.substring(hyphenIndex + 1); - } else { - // fallback for safety, though lineProperty from border.parse keys - // should have hyphen - namePart = lineProperty; - linePart = ""; - } - const lineValue = lineItems[lineProperty]; - for (const position of borderPositions) { - const longhandProperty = `${namePart}-${position}-${linePart}`; - const longhandItem = createPropertyItem(longhandProperty, lineValue, priority); - updateLonghandProperties(longhandProperty, longhandItem, longhandProperties); - } - } - if (value) { - longhandProperties.set(BORDER_IMAGE, createPropertyItem(BORDER_IMAGE, NONE, priority)); - } - } else { - const shorthandItem = shorthandProperties.get(property); - const parsedItem = shorthandItem.parse(value, parseOpt); - if (Array.isArray(parsedItem)) { - let namePart, linePart; - const hyphenIndex = property.indexOf("-"); - if (hyphenIndex !== -1) { - namePart = property.substring(0, hyphenIndex); - linePart = property.substring(hyphenIndex + 1); - } else { - namePart = property; - } - for (const position of borderPositions) { - const longhandProperty = `${namePart}-${position}-${linePart}`; - const longhandValue = getPositionValue(parsedItem, position); - const longhandItem = createPropertyItem(longhandProperty, longhandValue, priority); - updateLonghandProperties(longhandProperty, longhandItem, longhandProperties); - } - } else if (parsedItem) { - for (const [key, initialValue] of shorthandItem.initialValues) { - if (!Object.hasOwn(parsedItem, key)) { - parsedItem[key] = initialValue; - } - } - for (const longhandProperty of Object.keys(parsedItem)) { - const longhandValue = parsedItem[longhandProperty]; - const longhandItem = createPropertyItem(longhandProperty, longhandValue, priority); - updateLonghandProperties(longhandProperty, longhandItem, longhandProperties); - } - } - } - } else if (longhandProperties.has(property)) { - const { priority } = longhandProperties.get(property); - if (!priority) { - longhandProperties.delete(property); - longhandProperties.set(property, item); - } - } else { - longhandProperties.set(property, item); - } - } - const borderItems = prepareBorderShorthands(longhandProperties); - return borderItems; -}; - -/** - * Normalize and prepare CSS properties, handling shorthands and longhands. - * - * @param {Map} properties - The initial map of properties. - * @param {Object} [opt={}] - Parsing options. - * @returns {Map} The normalized map of properties. - */ -const prepareProperties = (properties, opt = {}) => { - const { globalObject, options } = opt; - const parseOpt = { - globalObject, - options - }; - const parsedProperties = new Map(); - const shorthands = new Map(); - const borders = new Map(); - let hasPrecedingBackground = false; - for (const [property, item] of properties) { - const { value, priority } = item; - const { logicalPropertyGroup: shorthandProperty } = propertyDefinitions.get(property) ?? {}; - if (borderProperties.has(property)) { - borders.set(property, { property, value, priority }); - } else if (shorthandProperties.has(shorthandProperty)) { - if (!shorthands.has(shorthandProperty)) { - shorthands.set(shorthandProperty, new Map()); - } - const longhandItems = shorthands.get(shorthandProperty); - if (longhandItems.size) { - const firstPropertyKey = longhandItems.keys().next().value; - const { priority: firstPropertyPriority } = longhandItems.get(firstPropertyKey); - if (priority === firstPropertyPriority) { - longhandItems.set(property, { property, value, priority }); - shorthands.set(shorthandProperty, longhandItems); - } else { - parsedProperties.delete(shorthandProperty); - } - } else { - longhandItems.set(property, { property, value, priority }); - shorthands.set(shorthandProperty, longhandItems); - } - parsedProperties.set(property, item); - } else if (shorthandProperties.has(property)) { - const shorthandItem = shorthandProperties.get(property); - const parsedValues = shorthandItem.parse(value, parseOpt); - let omitShorthandProperty = false; - if (Array.isArray(parsedValues)) { - const [parsedValue] = parsedValues; - if (typeof parsedValue === "string") { - for (const [longhandProperty, longhandItem] of shorthandItem.shorthandFor) { - if (!priority && properties.has(longhandProperty)) { - const { priority: longhandPriority } = properties.get(longhandProperty); - if (longhandPriority) { - omitShorthandProperty = true; - continue; - } - } - const { position } = longhandItem; - const longhandValue = getPositionValue([parsedValue], position); - parsedProperties.set( - longhandProperty, - createPropertyItem(longhandProperty, longhandValue, priority) - ); - } - } else if (parsedValue) { - for (const longhandProperty of Object.keys(parsedValue)) { - const longhandValue = parsedValue[longhandProperty]; - parsedProperties.set( - longhandProperty, - createPropertyItem(longhandProperty, longhandValue, priority) - ); - } - } - } else if (parsedValues && typeof parsedValues !== "string") { - for (const longhandProperty of Object.keys(parsedValues)) { - const longhandValue = parsedValues[longhandProperty]; - parsedProperties.set( - longhandProperty, - createPropertyItem(longhandProperty, longhandValue, priority) - ); - } - } - if (!omitShorthandProperty) { - if (property === background.property) { - hasPrecedingBackground = true; - } - parsedProperties.set(property, createPropertyItem(property, value, priority)); - } - } else { - parsedProperties.set(property, createPropertyItem(property, value, priority)); - if (hasPrecedingBackground) { - const { value: shorthandValue, priority: shorthandPriority } = properties.get( - background.property - ); - if ((!shorthandPriority || priority) && !hasVarFunc(shorthandValue)) { - const replacedShorthandValue = replaceBackgroundShorthand( - property, - parsedProperties, - parseOpt - ); - properties.delete(background.property); - properties.set( - background.property, - createPropertyItem(background.property, replacedShorthandValue, shorthandPriority) - ); - } - } - } - } - if (shorthands.size) { - const shorthandItems = processShorthandProperties(shorthands); - for (const [property, item] of shorthandItems) { - parsedProperties.set(property, item); - } - } - if (borders.size) { - const borderItems = processBorderProperties(borders, parseOpt); - for (const [property, item] of borderItems) { - parsedProperties.set(property, item); - } - } - return parsedProperties; -}; - -/** - * Cleans up redundancy in border properties by removing longhands that are covered by shorthands. - * - * @param {Map} properties - The map of properties to normalize. - * @returns {Map} The normalized properties map. - */ -const normalizeProperties = (properties) => { - if (properties.has(border.property)) { - for (const line of borderLines) { - properties.delete(`${border.property}-${line}`); - } - for (const position of borderPositions) { - properties.delete(`${border.property}-${position}`); - for (const line of borderLines) { - properties.delete(`${border.property}-${position}-${line}`); - } - } - properties.delete(`${border.property}-image`); - } - for (const line of borderLines) { - const lineProperty = `${border.property}-${line}`; - if (properties.has(lineProperty)) { - for (const position of borderPositions) { - const positionProperty = `${border.property}-${position}`; - const longhandProperty = `${border.property}-${position}-${line}`; - properties.delete(positionProperty); - properties.delete(longhandProperty); - } - } - } - for (const position of borderPositions) { - const positionProperty = `${border.property}-${position}`; - if (properties.has(positionProperty)) { - const longhandProperties = []; - for (const line of borderLines) { - const longhandProperty = `${border.property}-${position}-${line}`; - longhandProperties.push(longhandProperty); - } - if (longhandProperties.length === 3) { - for (const longhandProperty of longhandProperties) { - properties.delete(longhandProperty); - } - } else { - properties.delete(positionProperty); - } - } - } - return properties; -}; - -module.exports = { - borderProperties, - getPositionValue, - normalizeProperties, - prepareBorderProperties, - prepareProperties, - shorthandProperties -}; diff --git a/vanilla/node_modules/cssstyle/lib/parsers.js b/vanilla/node_modules/cssstyle/lib/parsers.js deleted file mode 100644 index ad6951d..0000000 --- a/vanilla/node_modules/cssstyle/lib/parsers.js +++ /dev/null @@ -1,871 +0,0 @@ -"use strict"; - -const { - resolve: resolveColor, - utils: { cssCalc, resolveGradient, splitValue } -} = require("@asamuzakjp/css-color"); -const { next: syntaxes } = require("@csstools/css-syntax-patches-for-csstree"); -const csstree = require("css-tree"); -const { LRUCache } = require("lru-cache"); -const { asciiLowercase } = require("./utils/strings"); - -// CSS global keywords -// @see https://drafts.csswg.org/css-cascade-5/#defaulting-keywords -const GLOBAL_KEYS = new Set(["initial", "inherit", "unset", "revert", "revert-layer"]); - -// System colors -// @see https://drafts.csswg.org/css-color/#css-system-colors -// @see https://drafts.csswg.org/css-color/#deprecated-system-colors -const SYS_COLORS = new Set([ - "accentcolor", - "accentcolortext", - "activeborder", - "activecaption", - "activetext", - "appworkspace", - "background", - "buttonborder", - "buttonface", - "buttonhighlight", - "buttonshadow", - "buttontext", - "canvas", - "canvastext", - "captiontext", - "field", - "fieldtext", - "graytext", - "highlight", - "highlighttext", - "inactiveborder", - "inactivecaption", - "inactivecaptiontext", - "infobackground", - "infotext", - "linktext", - "mark", - "marktext", - "menu", - "menutext", - "scrollbar", - "selecteditem", - "selecteditemtext", - "threeddarkshadow", - "threedface", - "threedhighlight", - "threedlightshadow", - "threedshadow", - "visitedtext", - "window", - "windowframe", - "windowtext" -]); - -// AST node types -const AST_TYPES = Object.freeze({ - CALC: "Calc", - DIMENSION: "Dimension", - FUNCTION: "Function", - GLOBAL_KEYWORD: "GlobalKeyword", - HASH: "Hash", - IDENTIFIER: "Identifier", - NUMBER: "Number", - PERCENTAGE: "Percentage", - STRING: "String", - URL: "Url" -}); - -// Regular expressions -const CALC_FUNC_NAMES = - "(?:a?(?:cos|sin|tan)|abs|atan2|calc|clamp|exp|hypot|log|max|min|mod|pow|rem|round|sign|sqrt)"; -const calcRegEx = new RegExp(`^${CALC_FUNC_NAMES}\\(`); -const calcContainedRegEx = new RegExp(`(?<=[*/\\s(])${CALC_FUNC_NAMES}\\(`); -const calcNameRegEx = new RegExp(`^${CALC_FUNC_NAMES}$`); -const varRegEx = /^var\(/; -const varContainedRegEx = /(?<=[*/\s(])var\(/; - -// Patched css-tree -const cssTree = csstree.fork(syntaxes); - -// Instance of the LRU Cache. Stores up to 4096 items. -const lruCache = new LRUCache({ - max: 4096 -}); - -/** - * Prepares a stringified value. - * - * @param {string|number|null|undefined} value - The value to prepare. - * @returns {string} The prepared value. - */ -const prepareValue = (value) => { - // `null` is converted to an empty string. - // @see https://webidl.spec.whatwg.org/#LegacyNullToEmptyString - if (value === null) { - return ""; - } - return `${value}`.trim(); -}; - -/** - * Checks if the value is a global keyword. - * - * @param {string} val - The value to check. - * @returns {boolean} True if the value is a global keyword, false otherwise. - */ -const isGlobalKeyword = (val) => { - return GLOBAL_KEYS.has(asciiLowercase(val)); -}; - -/** - * Checks if the value starts with or contains a CSS var() function. - * - * @param {string} val - The value to check. - * @returns {boolean} True if the value contains a var() function, false otherwise. - */ -const hasVarFunc = (val) => { - return varRegEx.test(val) || varContainedRegEx.test(val); -}; - -/** - * Checks if the value starts with or contains CSS calc() or math functions. - * - * @param {string} val - The value to check. - * @returns {boolean} True if the value contains calc() or math functions, false otherwise. - */ -const hasCalcFunc = (val) => { - return calcRegEx.test(val) || calcContainedRegEx.test(val); -}; - -/** - * Parses a CSS string into an AST. - * - * @param {string} val - The CSS string to parse. - * @param {object} opt - The options for parsing. - * @param {boolean} [toObject=false] - Whether to return a plain object. - * @returns {object} The AST or a plain object. - */ -const parseCSS = (val, opt, toObject = false) => { - val = prepareValue(val); - const ast = cssTree.parse(val, opt); - if (toObject) { - return cssTree.toPlainObject(ast); - } - return ast; -}; - -/** - * Checks if the value is a valid property value. - * Returns false for custom properties or values containing var(). - * - * @param {string} prop - The property name. - * @param {string} val - The property value. - * @returns {boolean} True if the value is valid, false otherwise. - */ -const isValidPropertyValue = (prop, val) => { - val = prepareValue(val); - if (val === "") { - return true; - } - // cssTree.lexer does not support deprecated system colors - // @see https://github.com/w3c/webref/issues/1519#issuecomment-3120290261 - // @see https://github.com/w3c/webref/issues/1647 - if (SYS_COLORS.has(asciiLowercase(val))) { - if (/^(?:-webkit-)?(?:[a-z][a-z\d]*-)*color$/i.test(prop)) { - return true; - } - return false; - } - const cacheKey = `isValidPropertyValue_${prop}_${val}`; - const cachedValue = lruCache.get(cacheKey); - if (typeof cachedValue === "boolean") { - return cachedValue; - } - let result; - try { - const ast = parseCSS(val, { - context: "value" - }); - const { error, matched } = cssTree.lexer.matchProperty(prop, ast); - result = error === null && matched !== null; - } catch { - result = false; - } - lruCache.set(cacheKey, result); - return result; -}; - -/** - * Resolves CSS math functions. - * - * @param {string} val - The value to resolve. - * @param {object} [opt={ format: "specifiedValue" }] - The options for resolving. - * @returns {string|undefined} The resolved value. - */ -const resolveCalc = (val, opt = { format: "specifiedValue" }) => { - val = prepareValue(val); - if (val === "" || hasVarFunc(val) || !hasCalcFunc(val)) { - return val; - } - const cacheKey = `resolveCalc_${val}`; - const cachedValue = lruCache.get(cacheKey); - if (typeof cachedValue === "string") { - return cachedValue; - } - const obj = parseCSS(val, { context: "value" }, true); - if (!obj?.children) { - return; - } - const { children: items } = obj; - const values = []; - for (const item of items) { - const { type: itemType, name: itemName, value: itemValue } = item; - if (itemType === AST_TYPES.FUNCTION) { - const value = cssTree - .generate(item) - .replace(/\)(?!\)|\s|,)/g, ") ") - .trim(); - if (calcNameRegEx.test(itemName)) { - const newValue = cssCalc(value, opt); - values.push(newValue); - } else { - values.push(value); - } - } else if (itemType === AST_TYPES.STRING) { - values.push(`"${itemValue}"`); - } else { - values.push(itemName ?? itemValue); - } - } - const resolvedValue = values.join(" "); - lruCache.set(cacheKey, resolvedValue); - return resolvedValue; -}; - -/** - * Parses a property value. - * Returns a string or an array of parsed objects. - * - * @param {string} prop - The property name. - * @param {string} val - The property value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|Array<object>|undefined} The parsed value. - */ -const parsePropertyValue = (prop, val, opt = {}) => { - const { caseSensitive, inArray } = opt; - val = prepareValue(val); - if (val === "" || hasVarFunc(val)) { - return val; - } else if (hasCalcFunc(val)) { - const calculatedValue = resolveCalc(val, { - format: "specifiedValue" - }); - if (typeof calculatedValue !== "string") { - return; - } - val = calculatedValue; - } - const cacheKey = `parsePropertyValue_${prop}_${val}_${caseSensitive}`; - const cachedValue = lruCache.get(cacheKey); - if (cachedValue === false) { - return; - } else if (inArray) { - if (Array.isArray(cachedValue)) { - return cachedValue; - } - } else if (typeof cachedValue === "string") { - return cachedValue; - } - let parsedValue; - const lowerCasedValue = asciiLowercase(val); - if (GLOBAL_KEYS.has(lowerCasedValue)) { - if (inArray) { - parsedValue = [ - { - type: AST_TYPES.GLOBAL_KEYWORD, - name: lowerCasedValue - } - ]; - } else { - parsedValue = lowerCasedValue; - } - } else if (SYS_COLORS.has(lowerCasedValue)) { - if (/^(?:(?:-webkit-)?(?:[a-z][a-z\d]*-)*color|border)$/i.test(prop)) { - if (inArray) { - parsedValue = [ - { - type: AST_TYPES.IDENTIFIER, - name: lowerCasedValue - } - ]; - } else { - parsedValue = lowerCasedValue; - } - } else { - parsedValue = false; - } - } else { - try { - const ast = parseCSS(val, { - context: "value" - }); - const { error, matched } = cssTree.lexer.matchProperty(prop, ast); - if (error || !matched) { - parsedValue = false; - } else if (inArray) { - const obj = cssTree.toPlainObject(ast); - const items = obj.children; - const values = []; - for (const item of items) { - const { children, name, type, value, unit } = item; - switch (type) { - case AST_TYPES.DIMENSION: { - values.push({ - type, - value, - unit: asciiLowercase(unit) - }); - break; - } - case AST_TYPES.FUNCTION: { - const css = cssTree - .generate(item) - .replace(/\)(?!\)|\s|,)/g, ") ") - .trim(); - const raw = items.length === 1 ? val : css; - // Remove "${name}(" from the start and ")" from the end - const itemValue = raw.slice(name.length + 1, -1).trim(); - if (name === "calc") { - if (children.length === 1) { - const [child] = children; - if (child.type === AST_TYPES.NUMBER) { - values.push({ - type: AST_TYPES.CALC, - isNumber: true, - value: `${parseFloat(child.value)}`, - name, - raw - }); - } else { - values.push({ - type: AST_TYPES.CALC, - isNumber: false, - value: `${asciiLowercase(itemValue)}`, - name, - raw - }); - } - } else { - values.push({ - type: AST_TYPES.CALC, - isNumber: false, - value: asciiLowercase(itemValue), - name, - raw - }); - } - } else { - values.push({ - type, - name, - value: asciiLowercase(itemValue), - raw - }); - } - break; - } - case AST_TYPES.IDENTIFIER: { - if (caseSensitive) { - values.push(item); - } else { - values.push({ - type, - name: asciiLowercase(name) - }); - } - break; - } - default: { - values.push(item); - } - } - } - parsedValue = values; - } else { - parsedValue = val; - } - } catch { - parsedValue = false; - } - } - lruCache.set(cacheKey, parsedValue); - if (parsedValue === false) { - return; - } - return parsedValue; -}; - -/** - * Parses a numeric value (number, dimension, percentage). - * Helper function for parseNumber, parseLength, etc. - * - * @param {Array<object>} val - The AST value. - * @param {object} [opt={}] - The options for parsing. - * @param {Function} validateType - Function to validate the node type. - * @returns {object|undefined} The parsed result containing num and unit, or undefined. - */ -const parseNumericValue = (val, opt, validateType) => { - const [item] = val; - const { type, value, unit } = item ?? {}; - if (!validateType(type, value, unit)) { - return; - } - const { clamp } = opt || {}; - const max = opt?.max ?? Number.INFINITY; - const min = opt?.min ?? Number.NEGATIVE_INFINITY; - let num = parseFloat(value); - if (clamp) { - if (num > max) { - num = max; - } else if (num < min) { - num = min; - } - } else if (num > max || num < min) { - return; - } - return { - num, - unit: unit ? asciiLowercase(unit) : null, - type - }; -}; - -/** - * Parses a <number> value. - * - * @param {Array<object>} val - The AST value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|undefined} The parsed number. - */ -const parseNumber = (val, opt = {}) => { - const res = parseNumericValue(val, opt, (type) => type === AST_TYPES.NUMBER); - if (!res) { - return; - } - return `${res.num}`; -}; - -/** - * Parses a <length> value. - * - * @param {Array<object>} val - The AST value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|undefined} The parsed length. - */ -const parseLength = (val, opt = {}) => { - const res = parseNumericValue( - val, - opt, - (type, value) => type === AST_TYPES.DIMENSION || (type === AST_TYPES.NUMBER && value === "0") - ); - if (!res) { - return; - } - const { num, unit } = res; - if (num === 0 && !unit) { - return `${num}px`; - } else if (unit) { - return `${num}${unit}`; - } -}; - -/** - * Parses a <percentage> value. - * - * @param {Array<object>} val - The AST value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|undefined} The parsed percentage. - */ -const parsePercentage = (val, opt = {}) => { - const res = parseNumericValue( - val, - opt, - (type, value) => type === AST_TYPES.PERCENTAGE || (type === AST_TYPES.NUMBER && value === "0") - ); - if (!res) { - return; - } - const { num } = res; - return `${num}%`; -}; - -/** - * Parses an <angle> value. - * - * @param {Array<object>} val - The AST value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|undefined} The parsed angle. - */ -const parseAngle = (val, opt = {}) => { - const res = parseNumericValue( - val, - opt, - (type, value) => type === AST_TYPES.DIMENSION || (type === AST_TYPES.NUMBER && value === "0") - ); - if (!res) { - return; - } - const { num, unit } = res; - if (unit) { - if (!/^(?:deg|g?rad|turn)$/i.test(unit)) { - return; - } - return `${num}${unit}`; - } else if (num === 0) { - return `${num}deg`; - } -}; - -/** - * Parses a <url> value. - * - * @param {Array<object>} val - The AST value. - * @returns {string|undefined} The parsed url. - */ -const parseUrl = (val) => { - const [item] = val; - const { type, value } = item ?? {}; - if (type !== AST_TYPES.URL) { - return; - } - const str = value.replace(/\\\\/g, "\\").replaceAll('"', '\\"'); - return `url("${str}")`; -}; - -/** - * Parses a <string> value. - * - * @param {Array<object>} val - The AST value. - * @returns {string|undefined} The parsed string. - */ -const parseString = (val) => { - const [item] = val; - const { type, value } = item ?? {}; - if (type !== AST_TYPES.STRING) { - return; - } - const str = value.replace(/\\\\/g, "\\").replaceAll('"', '\\"'); - return `"${str}"`; -}; - -/** - * Parses a <color> value. - * - * @param {Array<object>} val - The AST value. - * @returns {string|undefined} The parsed color. - */ -const parseColor = (val) => { - const [item] = val; - const { name, type, value } = item ?? {}; - switch (type) { - case AST_TYPES.FUNCTION: { - const res = resolveColor(`${name}(${value})`, { - format: "specifiedValue" - }); - if (res) { - return res; - } - break; - } - case AST_TYPES.HASH: { - const res = resolveColor(`#${value}`, { - format: "specifiedValue" - }); - if (res) { - return res; - } - break; - } - case AST_TYPES.IDENTIFIER: { - if (SYS_COLORS.has(name)) { - return name; - } - const res = resolveColor(name, { - format: "specifiedValue" - }); - if (res) { - return res; - } - break; - } - default: - } -}; - -/** - * Parses a <gradient> value. - * - * @param {Array<object>} val - The AST value. - * @returns {string|undefined} The parsed gradient. - */ -const parseGradient = (val) => { - const [item] = val; - const { name, type, value } = item ?? {}; - if (type !== AST_TYPES.FUNCTION) { - return; - } - const res = resolveGradient(`${name}(${value})`, { - format: "specifiedValue" - }); - if (res) { - return res; - } -}; - -/** - * Resolves a keyword value. - * - * @param {Array<object>} value - The AST node array containing the keyword value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|undefined} The resolved keyword or undefined. - */ -const resolveKeywordValue = (value, opt = {}) => { - const [{ name, type }] = value; - const { length } = opt; - switch (type) { - case AST_TYPES.GLOBAL_KEYWORD: { - if (length > 1) { - return; - } - return name; - } - case AST_TYPES.IDENTIFIER: { - return name; - } - default: - } -}; - -/** - * Resolves a function value. - * - * @param {Array<object>} value - The AST node array containing the function value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|undefined} The resolved function or undefined. - */ -const resolveFunctionValue = (value, opt = {}) => { - const [{ name, type, value: itemValue }] = value; - const { length } = opt; - switch (type) { - case AST_TYPES.FUNCTION: { - return `${name}(${itemValue})`; - } - case AST_TYPES.GLOBAL_KEYWORD: { - if (length > 1) { - return; - } - return name; - } - case AST_TYPES.IDENTIFIER: { - return name; - } - default: - } -}; - -/** - * Resolves a length or percentage or number value. - * - * @param {Array<object>} value - The AST node array containing the value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|undefined} The resolved length/percentage/number or undefined. - */ -const resolveNumericValue = (value, opt = {}) => { - const [{ name, type: itemType, value: itemValue }] = value; - const { length, type } = opt; - switch (itemType) { - case AST_TYPES.CALC: { - return `${name}(${itemValue})`; - } - case AST_TYPES.DIMENSION: { - if (type === "angle") { - return parseAngle(value, opt); - } - return parseLength(value, opt); - } - case AST_TYPES.GLOBAL_KEYWORD: { - if (length > 1) { - return; - } - return name; - } - case AST_TYPES.IDENTIFIER: { - return name; - } - case AST_TYPES.NUMBER: { - switch (type) { - case "angle": { - return parseAngle(value, opt); - } - case "length": { - return parseLength(value, opt); - } - case "percentage": { - return parsePercentage(value, opt); - } - default: { - return parseNumber(value, opt); - } - } - } - case AST_TYPES.PERCENTAGE: { - return parsePercentage(value, opt); - } - default: - } -}; - -/** - * Resolves a color value. - * - * @param {Array<object>} value - The AST node array containing the color value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|undefined} The resolved color or undefined. - */ -const resolveColorValue = (value, opt = {}) => { - const [{ name, type }] = value; - const { length } = opt; - switch (type) { - case AST_TYPES.GLOBAL_KEYWORD: { - if (length > 1) { - return; - } - return name; - } - default: { - return parseColor(value, opt); - } - } -}; - -/** - * Resolves a gradient or URL value. - * - * @param {Array<object>} value - The AST node array containing the color value. - * @param {object} [opt={}] - The options for parsing. - * @returns {string|undefined} The resolved gradient/url or undefined. - */ -const resolveGradientUrlValue = (value, opt = {}) => { - const [{ name, type }] = value; - const { length } = opt; - switch (type) { - case AST_TYPES.GLOBAL_KEYWORD: { - if (length > 1) { - return; - } - return name; - } - case AST_TYPES.IDENTIFIER: { - return name; - } - case AST_TYPES.URL: { - return parseUrl(value, opt); - } - default: { - return parseGradient(value, opt); - } - } -}; - -/** - * Resolves a border shorthand value. - * - * @param {Array<object>} value - The AST node array containing the shorthand value. - * @param {object} subProps - The sub properties object. - * @param {Map} parsedValues - The Map of parsed values. - * @returns {Array|string|undefined} - The resolved [prop, value] pair, keyword or undefined. - */ -const resolveBorderShorthandValue = (value, subProps, parsedValues) => { - const [{ isNumber, name, type, value: itemValue }] = value; - const { color: colorProp, style: styleProp, width: widthProp } = subProps; - switch (type) { - case AST_TYPES.CALC: { - if (isNumber || parsedValues.has(widthProp)) { - return; - } - return [widthProp, `${name}(${itemValue}`]; - } - case AST_TYPES.DIMENSION: - case AST_TYPES.NUMBER: { - if (parsedValues.has(widthProp)) { - return; - } - const parsedValue = parseLength(value, { min: 0 }); - if (!parsedValue) { - return; - } - return [widthProp, parsedValue]; - } - case AST_TYPES.FUNCTION: - case AST_TYPES.HASH: { - if (parsedValues.has(colorProp)) { - return; - } - const parsedValue = parseColor(value); - if (!parsedValue) { - return; - } - return [colorProp, parsedValue]; - } - case AST_TYPES.GLOBAL_KEYWORD: { - return name; - } - case AST_TYPES.IDENTIFIER: { - if (isValidPropertyValue(widthProp, name)) { - if (parsedValues.has(widthProp)) { - return; - } - return [widthProp, name]; - } else if (isValidPropertyValue(styleProp, name)) { - if (parsedValues.has(styleProp)) { - return; - } - return [styleProp, name]; - } else if (isValidPropertyValue(colorProp, name)) { - if (parsedValues.has(colorProp)) { - return; - } - return [colorProp, name]; - } - break; - } - default: - } -}; - -module.exports = { - AST_TYPES, - hasCalcFunc, - hasVarFunc, - isGlobalKeyword, - isValidPropertyValue, - parseAngle, - parseCSS, - parseColor, - parseGradient, - parseLength, - parseNumber, - parsePercentage, - parsePropertyValue, - parseString, - parseUrl, - prepareValue, - resolveBorderShorthandValue, - resolveCalc, - resolveColorValue, - resolveFunctionValue, - resolveGradientUrlValue, - resolveKeywordValue, - resolveNumericValue, - splitValue -}; diff --git a/vanilla/node_modules/cssstyle/lib/properties/background.js b/vanilla/node_modules/cssstyle/lib/properties/background.js deleted file mode 100644 index cf4acb4..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/background.js +++ /dev/null @@ -1,406 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const backgroundImage = require("./backgroundImage"); -const backgroundPosition = require("./backgroundPosition"); -const backgroundSize = require("./backgroundSize"); -const backgroundRepeat = require("./backgroundRepeat"); -const backgroundOrigin = require("./backgroundOrigin"); -const backgroundClip = require("./backgroundClip"); -const backgroundAttachment = require("./backgroundAttachment"); -const backgroundColor = require("./backgroundColor"); - -const property = "background"; - -module.exports.initialValues = new Map([ - [backgroundImage.property, "none"], - [backgroundPosition.property, "0% 0%"], - [backgroundSize.property, "auto"], - [backgroundRepeat.property, "repeat"], - [backgroundOrigin.property, "padding-box"], - [backgroundClip.property, "border-box"], - [backgroundAttachment.property, "scroll"], - [backgroundColor.property, "transparent"] -]); - -module.exports.shorthandFor = new Map([ - [backgroundImage.property, backgroundImage], - [backgroundPosition.property, backgroundPosition], - [backgroundSize.property, backgroundSize], - [backgroundRepeat.property, backgroundRepeat], - [backgroundOrigin.property, backgroundOrigin], - [backgroundClip.property, backgroundClip], - [backgroundAttachment.property, backgroundAttachment], - [backgroundColor.property, backgroundColor] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } else if (parsers.hasCalcFunc(v)) { - v = parsers.resolveCalc(v); - } - if (!parsers.isValidPropertyValue(property, v)) { - return; - } - const values = parsers.splitValue(v, { - delimiter: "," - }); - const bgValues = []; - const l = values.length; - for (let i = 0; i < l; i++) { - let bg = { - [backgroundImage.property]: module.exports.initialValues.get(backgroundImage.property), - [backgroundPosition.property]: module.exports.initialValues.get(backgroundPosition.property), - [backgroundSize.property]: module.exports.initialValues.get(backgroundSize.property), - [backgroundRepeat.property]: module.exports.initialValues.get(backgroundRepeat.property), - [backgroundOrigin.property]: module.exports.initialValues.get(backgroundOrigin.property), - [backgroundClip.property]: module.exports.initialValues.get(backgroundClip.property), - [backgroundAttachment.property]: module.exports.initialValues.get( - backgroundAttachment.property - ), - [backgroundColor.property]: module.exports.initialValues.get(backgroundColor.property) - }; - if (l > 1 && i !== l - 1) { - bg = { - [backgroundImage.property]: module.exports.initialValues.get(backgroundImage.property), - [backgroundPosition.property]: module.exports.initialValues.get( - backgroundPosition.property - ), - [backgroundSize.property]: module.exports.initialValues.get(backgroundSize.property), - [backgroundRepeat.property]: module.exports.initialValues.get(backgroundRepeat.property), - [backgroundOrigin.property]: module.exports.initialValues.get(backgroundOrigin.property), - [backgroundClip.property]: module.exports.initialValues.get(backgroundClip.property), - [backgroundAttachment.property]: module.exports.initialValues.get( - backgroundAttachment.property - ) - }; - } - const bgPosition = []; - const bgSize = []; - const bgRepeat = []; - const bgBox = []; - const bgParts = parsers.splitValue(values[i], { - delimiter: "/" - }); - if (!bgParts.length || bgParts.length > 2) { - return; - } - const [bgPart1, bgPart2 = ""] = bgParts; - const parts1 = parsers.splitValue(bgPart1); - for (const part of parts1) { - let partValid = false; - for (const [longhand, value] of module.exports.shorthandFor) { - if (parsers.isValidPropertyValue(longhand, part)) { - partValid = true; - switch (longhand) { - case backgroundClip.property: - case backgroundOrigin.property: { - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bgBox.push(parsedValue); - } - break; - } - case backgroundColor.property: { - if (i !== values.length - 1) { - return; - } - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bg[longhand] = parsedValue; - } - break; - } - case backgroundPosition.property: { - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bgPosition.push(parsedValue); - } - break; - } - case backgroundRepeat.property: { - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bgRepeat.push(parsedValue); - } - break; - } - case backgroundSize.property: { - break; - } - default: { - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bg[longhand] = parsedValue; - } - } - } - } - } - if (!partValid) { - return; - } - } - if (bgPart2) { - const parts2 = parsers.splitValue(bgPart2); - for (const part of parts2) { - let partValid = false; - for (const [longhand, value] of module.exports.shorthandFor) { - if (parsers.isValidPropertyValue(longhand, part)) { - partValid = true; - switch (longhand) { - case backgroundClip.property: - case backgroundOrigin.property: { - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bgBox.push(parsedValue); - } - break; - } - case backgroundColor.property: { - if (i !== l - 1) { - return; - } - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bg[longhand] = parsedValue; - } - break; - } - case backgroundPosition.property: { - break; - } - case backgroundRepeat.property: { - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bgRepeat.push(parsedValue); - } - break; - } - case backgroundSize.property: { - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bgSize.push(parsedValue); - } - break; - } - default: { - const parsedValue = value.parse(part, { globalObject }); - if (parsedValue) { - bg[longhand] = parsedValue; - } - } - } - } - } - if (!partValid) { - return; - } - } - } - if (bgPosition.length) { - const { parse: parser } = module.exports.shorthandFor.get(backgroundPosition.property); - const value = parser(bgPosition.join(" "), { globalObject }); - if (value) { - bg[backgroundPosition.property] = value; - } - } - if (bgSize.length) { - const { parse: parser } = module.exports.shorthandFor.get(backgroundSize.property); - const value = parser(bgSize.join(" "), { globalObject }); - if (value) { - bg[backgroundSize.property] = value; - } - } - if (bgRepeat.length) { - const { parse: parser } = module.exports.shorthandFor.get(backgroundRepeat.property); - const value = parser(bgRepeat.join(" "), { globalObject }); - if (value) { - bg[backgroundRepeat.property] = value; - } - } - if (bgBox.length) { - switch (bgBox.length) { - case 1: { - const [value] = bgBox; - bg[backgroundOrigin.property] = value; - bg[backgroundClip.property] = value; - break; - } - case 2: { - const [value1, value2] = bgBox; - bg[backgroundOrigin.property] = value1; - bg[backgroundClip.property] = value2; - break; - } - default: { - return; - } - } - } - bgValues.push(bg); - } - return bgValues; -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (v === "" || parsers.hasVarFunc(v)) { - for (const [key] of module.exports.shorthandFor) { - this._setProperty(key, ""); - } - this._setProperty(property, v); - } else { - const bgValues = module.exports.parse(v, { - globalObject: this._global - }); - if (!Array.isArray(bgValues)) { - return; - } - const bgMap = new Map([ - [backgroundImage.property, []], - [backgroundPosition.property, []], - [backgroundSize.property, []], - [backgroundRepeat.property, []], - [backgroundOrigin.property, []], - [backgroundClip.property, []], - [backgroundAttachment.property, []], - [backgroundColor.property, []] - ]); - const backgrounds = []; - for (const bgValue of bgValues) { - const bg = []; - for (const [longhand, value] of Object.entries(bgValue)) { - if (value) { - const arr = bgMap.get(longhand); - arr.push(value); - bgMap.set(longhand, arr); - if (value !== module.exports.initialValues.get(longhand)) { - if (longhand === backgroundSize.property) { - bg.push(`/ ${value}`); - } else { - bg.push(value); - } - } else if (longhand === backgroundImage.property) { - if (v === "none") { - bg.push(value); - } - } else if (longhand === backgroundColor.property) { - if (v === "transparent") { - bg.push(value); - } - } - } - } - backgrounds.push(bg.join(" ")); - } - const priority = this._priorities.get(property) ?? ""; - for (const [longhand, value] of bgMap) { - this._setProperty(longhand, value.join(", "), priority); - } - this._setProperty(property, backgrounds.join(", "), priority); - } - }, - get() { - const v = this.getPropertyValue(property); - if (parsers.hasVarFunc(v)) { - return v; - } - const bgMap = new Map(); - let l = 0; - for (const [longhand] of module.exports.shorthandFor) { - const val = this.getPropertyValue(longhand); - if (longhand === backgroundImage.property) { - if ( - val === "none" && - v === "none" && - this.getPropertyValue(backgroundColor.property) === "transparent" - ) { - return val; - } - if (val !== module.exports.initialValues.get(longhand)) { - const imgValues = parsers.splitValue(val, { - delimiter: "," - }); - l = imgValues.length; - bgMap.set(longhand, imgValues); - } - } else if (longhand === backgroundColor.property) { - if (val !== module.exports.initialValues.get(longhand) || v.includes(val)) { - bgMap.set(longhand, [val]); - } - } else if (val !== module.exports.initialValues.get(longhand)) { - bgMap.set( - longhand, - parsers.splitValue(val, { - delimiter: "," - }) - ); - } - } - if (l === 0) { - const bgColArr = bgMap.get(backgroundColor.property); - const background = bgColArr ? bgColArr[0] : null; - if (background) { - return background; - } - return ""; - } - const bgValues = []; - for (let i = 0; i < l; i++) { - bgValues[i] = []; - } - for (const [longhand, values] of bgMap) { - for (let i = 0; i < l; i++) { - switch (longhand) { - case backgroundColor.property: { - if (i === l - 1) { - const value = values[0]; - if (parsers.hasVarFunc(value)) { - return ""; - } - if (value && value !== module.exports.initialValues.get(longhand)) { - const bgValue = bgValues[i]; - bgValue.push(value); - } - } - break; - } - case backgroundSize.property: { - const value = values[i]; - if (parsers.hasVarFunc(value)) { - return ""; - } - if (value && value !== module.exports.initialValues.get(longhand)) { - const bgValue = bgValues[i]; - bgValue.push(`/ ${value}`); - } - break; - } - default: { - const value = values[i]; - if (parsers.hasVarFunc(value)) { - return ""; - } - if (value && value !== module.exports.initialValues.get(longhand)) { - const bgValue = bgValues[i]; - bgValue.push(value); - } - } - } - } - } - const backgrounds = []; - for (const bgValue of bgValues) { - backgrounds.push(bgValue.join(" ")); - } - return backgrounds.join(", "); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/backgroundAttachment.js b/vanilla/node_modules/cssstyle/lib/properties/backgroundAttachment.js deleted file mode 100644 index 32b3aff..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/backgroundAttachment.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "background-attachment"; -const shorthand = "background"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.splitValue(v, { delimiter: "," }); - const parsedValues = []; - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveKeywordValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/backgroundClip.js b/vanilla/node_modules/cssstyle/lib/properties/backgroundClip.js deleted file mode 100644 index 80407bc..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/backgroundClip.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "background-clip"; -const shorthand = "background"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.splitValue(v, { delimiter: "," }); - const parsedValues = []; - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveKeywordValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/backgroundColor.js b/vanilla/node_modules/cssstyle/lib/properties/backgroundColor.js deleted file mode 100644 index 7d3bf99..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/backgroundColor.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "background-color"; -const shorthand = "background"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/backgroundImage.js b/vanilla/node_modules/cssstyle/lib/properties/backgroundImage.js deleted file mode 100644 index 8959685..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/backgroundImage.js +++ /dev/null @@ -1,63 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "background-image"; -const shorthand = "background"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.splitValue(v, { delimiter: "," }); - const parsedValues = []; - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveGradientUrlValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } else { - return; - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/backgroundOrigin.js b/vanilla/node_modules/cssstyle/lib/properties/backgroundOrigin.js deleted file mode 100644 index a1fe9ac..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/backgroundOrigin.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "background-origin"; -const shorthand = "background"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.splitValue(v, { delimiter: "," }); - const parsedValues = []; - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveKeywordValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/backgroundPosition.js b/vanilla/node_modules/cssstyle/lib/properties/backgroundPosition.js deleted file mode 100644 index 23c6c68..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/backgroundPosition.js +++ /dev/null @@ -1,204 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "background-position"; -const shorthand = "background"; -const keyX = ["left", "right"]; -const keyY = ["top", "bottom"]; -const keywordsX = ["center", ...keyX]; -const keywordsY = ["center", ...keyY]; -const keywords = ["center", ...keyX, ...keyY]; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const { AST_TYPES } = parsers; - const values = parsers.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - const [part1, part2, part3, part4] = value; - let parsedValue = ""; - switch (value.length) { - case 1: { - const val1 = - part1.type === AST_TYPES.IDENTIFIER - ? part1.name - : parsers.resolveNumericValue([part1], { type: "length" }); - if (val1) { - if (val1 === "center") { - parsedValue = `${val1} ${val1}`; - } else if (val1 === "top" || val1 === "bottom") { - parsedValue = `center ${val1}`; - } else { - parsedValue = `${val1} center`; - } - } - break; - } - case 2: { - const val1 = - part1.type === AST_TYPES.IDENTIFIER - ? part1.name - : parsers.resolveNumericValue([part1], { type: "length" }); - const val2 = - part2.type === AST_TYPES.IDENTIFIER - ? part2.name - : parsers.resolveNumericValue([part2], { type: "length" }); - if (val1 && val2) { - if (keywordsX.includes(val1) && keywordsY.includes(val2)) { - parsedValue = `${val1} ${val2}`; - } else if (keywordsY.includes(val1) && keywordsX.includes(val2)) { - parsedValue = `${val2} ${val1}`; - } else if (keywordsX.includes(val1)) { - if (val2 === "center" || !keywordsX.includes(val2)) { - parsedValue = `${val1} ${val2}`; - } - } else if (keywordsY.includes(val2)) { - if (!keywordsY.includes(val1)) { - parsedValue = `${val1} ${val2}`; - } - } else if (!keywordsY.includes(val1) && !keywordsX.includes(val2)) { - parsedValue = `${val1} ${val2}`; - } - } - break; - } - case 3: { - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = - part2.type === AST_TYPES.IDENTIFIER - ? part2.name - : parsers.resolveNumericValue([part2], { type: "length" }); - const val3 = - part3.type === AST_TYPES.IDENTIFIER - ? part3.name - : parsers.resolveNumericValue([part3], { type: "length" }); - if (val1 && val2 && val3) { - let posX = ""; - let offX = ""; - let posY = ""; - let offY = ""; - if (keywordsX.includes(val1)) { - if (keyY.includes(val2)) { - if (!keywords.includes(val3)) { - posX = val1; - posY = val2; - offY = val3; - } - } else if (keyY.includes(val3)) { - if (!keywords.includes(val2)) { - posX = val1; - offX = val2; - posY = val3; - } - } - } else if (keywordsY.includes(val1)) { - if (keyX.includes(val2)) { - if (!keywords.includes(val3)) { - posX = val2; - offX = val3; - posY = val1; - } - } else if (keyX.includes(val3)) { - if (!keywords.includes(val2)) { - posX = val3; - posY = val1; - offY = val2; - } - } - } - if (posX && posY) { - if (offX) { - parsedValue = `${posX} ${offX} ${posY}`; - } else if (offY) { - parsedValue = `${posX} ${posY} ${offY}`; - } - } - } - break; - } - case 4: { - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = parsers.resolveNumericValue([part2], { type: "length" }); - const val3 = part3.type === AST_TYPES.IDENTIFIER && part3.name; - const val4 = parsers.resolveNumericValue([part4], { type: "length" }); - if (val1 && val2 && val3 && val4) { - let posX = ""; - let offX = ""; - let posY = ""; - let offY = ""; - if (keywordsX.includes(val1) && keyY.includes(val3)) { - posX = val1; - offX = val2; - posY = val3; - offY = val4; - } else if (keyX.includes(val1) && keywordsY.includes(val3)) { - posX = val1; - offX = val2; - posY = val3; - offY = val4; - } else if (keyY.includes(val1) && keywordsX.includes(val3)) { - posX = val3; - offX = val4; - posY = val1; - offY = val2; - } - if (posX && offX && posY && offY) { - parsedValue = `${posX} ${offX} ${posY} ${offY}`; - } - } - break; - } - default: - } - if (parsedValue) { - parsedValues.push(parsedValue); - } else { - return; - } - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/backgroundRepeat.js b/vanilla/node_modules/cssstyle/lib/properties/backgroundRepeat.js deleted file mode 100644 index 6bb9ddd..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/backgroundRepeat.js +++ /dev/null @@ -1,93 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "background-repeat"; -const shorthand = "background"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const { AST_TYPES } = parsers; - const values = parsers.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - let parsedValue = ""; - switch (value.length) { - case 1: { - const [part1] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - if (val1) { - parsedValue = val1; - } - break; - } - case 2: { - const [part1, part2] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name; - if (val1 && val2) { - if (val1 === "repeat" && val2 === "no-repeat") { - parsedValue = "repeat-x"; - } else if (val1 === "no-repeat" && val2 === "repeat") { - parsedValue = "repeat-y"; - } else if (val1 === val2) { - parsedValue = val1; - } else { - parsedValue = `${val1} ${val2}`; - } - } - break; - } - default: - } - if (parsedValue) { - parsedValues.push(parsedValue); - } else { - return; - } - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/backgroundSize.js b/vanilla/node_modules/cssstyle/lib/properties/backgroundSize.js deleted file mode 100644 index be31044..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/backgroundSize.js +++ /dev/null @@ -1,126 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "background-size"; -const shorthand = "background"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const { AST_TYPES } = parsers; - const values = parsers.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - if (value.length === 1) { - const [{ isNumber, name, type, value: itemValue }] = value; - switch (type) { - case AST_TYPES.CALC: { - if (isNumber) { - return; - } - parsedValues.push(`${name}(${itemValue})`); - break; - } - case AST_TYPES.GLOBAL_KEYWORD: - case AST_TYPES.IDENTIFIER: { - parsedValues.push(name); - break; - } - default: { - const parsedValue = parsers.resolveNumericValue(value, { - type: "length" - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } - } else { - const [val1, val2] = value; - const parts = []; - if (val1.type === AST_TYPES.CALC && !val1.isNumber) { - parts.push(`${val1.name}(${val1.value})`); - } else if (val1.type === AST_TYPES.IDENTIFIER) { - parts.push(val1.name); - } else if (val1.type === AST_TYPES.DIMENSION) { - parts.push(`${val1.value}${val1.unit}`); - } else if (val1.type === AST_TYPES.PERCENTAGE) { - parts.push(`${val1.value}%`); - } else { - return; - } - switch (val2.type) { - case AST_TYPES.CALC: { - if (val2.isNumber) { - return; - } - parts.push(`${val2.name}(${val2.value})`); - break; - } - case AST_TYPES.DIMENSION: { - parts.push(`${val2.value}${val2.unit}`); - break; - } - case AST_TYPES.IDENTIFIER: { - if (val2.name !== "auto") { - parts.push(val2.name); - } - break; - } - case AST_TYPES.PERCENTAGE: { - parts.push(`${val2.value}%`); - break; - } - default: { - return; - } - } - parsedValues.push(parts.join(" ")); - } - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/border.js b/vanilla/node_modules/cssstyle/lib/properties/border.js deleted file mode 100644 index 889bd5a..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/border.js +++ /dev/null @@ -1,107 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const borderWidth = require("./borderWidth"); -const borderStyle = require("./borderStyle"); -const borderColor = require("./borderColor"); -const borderTop = require("./borderTop"); -const borderRight = require("./borderRight"); -const borderBottom = require("./borderBottom"); -const borderLeft = require("./borderLeft"); - -const property = "border"; - -const subProps = { - width: borderWidth.property, - style: borderStyle.property, - color: borderColor.property -}; - -module.exports.initialValues = new Map([ - [borderWidth.property, "medium"], - [borderStyle.property, "none"], - [borderColor.property, "currentcolor"] -]); - -module.exports.shorthandFor = new Map([ - [borderWidth.property, borderWidth], - [borderStyle.property, borderStyle], - [borderColor.property, borderColor] -]); - -module.exports.positionShorthandFor = new Map([ - [borderTop.property, borderTop], - [borderRight.property, borderRight], - [borderBottom.property, borderBottom], - [borderLeft.property, borderLeft] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "" || parsers.hasVarFunc(v)) { - return v; - } - const values = parsers.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = module.exports.shorthandFor.keys(); - const obj = { - [borderWidth.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== module.exports.initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[borderWidth.property] && obj[borderWidth.property] === "medium") { - delete obj[borderWidth.property]; - } - } - } - } - return obj; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderBottom.js b/vanilla/node_modules/cssstyle/lib/properties/borderBottom.js deleted file mode 100644 index 7cb2892..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderBottom.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const borderBottomWidth = require("./borderBottomWidth"); -const borderBottomStyle = require("./borderBottomStyle"); -const borderBottomColor = require("./borderBottomColor"); - -const property = "border-bottom"; -const shorthand = "border"; - -const subProps = { - width: borderBottomWidth.property, - style: borderBottomStyle.property, - color: borderBottomColor.property -}; - -module.exports.initialValues = new Map([ - [borderBottomWidth.property, "medium"], - [borderBottomStyle.property, "none"], - [borderBottomColor.property, "currentcolor"] -]); - -module.exports.shorthandFor = new Map([ - [borderBottomWidth.property, borderBottomWidth], - [borderBottomStyle.property, borderBottomStyle], - [borderBottomColor.property, borderBottomColor] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = module.exports.shorthandFor.keys(); - const obj = { - [borderBottomWidth.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== module.exports.initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[borderBottomWidth.property] && obj[borderBottomWidth.property] === "medium") { - delete obj[borderBottomWidth.property]; - } - } - } - } - return obj; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderBottomColor.js b/vanilla/node_modules/cssstyle/lib/properties/borderBottomColor.js deleted file mode 100644 index b458fd4..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderBottomColor.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-bottom-color"; -const lineShorthand = "border-color"; -const positionShorthand = "border-bottom"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderBottomStyle.js b/vanilla/node_modules/cssstyle/lib/properties/borderBottomStyle.js deleted file mode 100644 index b54b6a9..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderBottomStyle.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-bottom-style"; -const lineShorthand = "border-style"; -const positionShorthand = "border-bottom"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderBottomWidth.js b/vanilla/node_modules/cssstyle/lib/properties/borderBottomWidth.js deleted file mode 100644 index 3200365..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderBottomWidth.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-bottom-width"; -const lineShorthand = "border-width"; -const positionShorthand = "border-bottom"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderCollapse.js b/vanilla/node_modules/cssstyle/lib/properties/borderCollapse.js deleted file mode 100644 index f77c445..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderCollapse.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-collapse"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderColor.js b/vanilla/node_modules/cssstyle/lib/properties/borderColor.js deleted file mode 100644 index 232d34c..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderColor.js +++ /dev/null @@ -1,110 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const borderTopColor = require("./borderTopColor"); -const borderRightColor = require("./borderRightColor"); -const borderBottomColor = require("./borderBottomColor"); -const borderLeftColor = require("./borderLeftColor"); - -const property = "border-color"; -const shorthand = "border"; - -module.exports.shorthandFor = new Map([ - [borderTopColor.property, borderTopColor], - [borderRightColor.property, borderRightColor], - [borderBottomColor.property, borderBottomColor], - [borderLeftColor.property, borderLeftColor] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = parsers.resolveColorValue([value], { - length: values.length - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - switch (parsedValues.length) { - case 1: { - return parsedValues; - } - case 2: { - const [val1, val2] = parsedValues; - if (val1 === val2) { - return [val1]; - } - return parsedValues; - } - case 3: { - const [val1, val2, val3] = parsedValues; - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return parsedValues; - } - case 4: { - const [val1, val2, val3, val4] = parsedValues; - if (val2 === val4) { - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return [val1, val2, val3]; - } - return parsedValues; - } - default: - } - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderLeft.js b/vanilla/node_modules/cssstyle/lib/properties/borderLeft.js deleted file mode 100644 index 7c40f58..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderLeft.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const borderLeftWidth = require("./borderLeftWidth"); -const borderLeftStyle = require("./borderLeftStyle"); -const borderLeftColor = require("./borderLeftColor"); - -const property = "border-left"; -const shorthand = "border"; - -const subProps = { - width: borderLeftWidth.property, - style: borderLeftStyle.property, - color: borderLeftColor.property -}; - -module.exports.initialValues = new Map([ - [borderLeftWidth.property, "medium"], - [borderLeftStyle.property, "none"], - [borderLeftColor.property, "currentcolor"] -]); - -module.exports.shorthandFor = new Map([ - [borderLeftWidth.property, borderLeftWidth], - [borderLeftStyle.property, borderLeftStyle], - [borderLeftColor.property, borderLeftColor] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = module.exports.shorthandFor.keys(); - const obj = { - [borderLeftWidth.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== module.exports.initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[borderLeftWidth.property] && obj[borderLeftWidth.property] === "medium") { - delete obj[borderLeftWidth.property]; - } - } - } - } - return obj; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderLeftColor.js b/vanilla/node_modules/cssstyle/lib/properties/borderLeftColor.js deleted file mode 100644 index 7cb630e..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderLeftColor.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-left-color"; -const lineShorthand = "border-color"; -const positionShorthand = "border-left"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderLeftStyle.js b/vanilla/node_modules/cssstyle/lib/properties/borderLeftStyle.js deleted file mode 100644 index 8fa5761..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderLeftStyle.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-left-style"; -const lineShorthand = "border-style"; -const positionShorthand = "border-left"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderLeftWidth.js b/vanilla/node_modules/cssstyle/lib/properties/borderLeftWidth.js deleted file mode 100644 index 74dd03f..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderLeftWidth.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-left-width"; -const lineShorthand = "border-width"; -const positionShorthand = "border-left"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderRight.js b/vanilla/node_modules/cssstyle/lib/properties/borderRight.js deleted file mode 100644 index 43c2878..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderRight.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const borderRightWidth = require("./borderRightWidth"); -const borderRightStyle = require("./borderRightStyle"); -const borderRightColor = require("./borderRightColor"); - -const property = "border-right"; -const shorthand = "border"; - -const subProps = { - width: borderRightWidth.property, - style: borderRightStyle.property, - color: borderRightColor.property -}; - -module.exports.initialValues = new Map([ - [borderRightWidth.property, "medium"], - [borderRightStyle.property, "none"], - [borderRightColor.property, "currentcolor"] -]); - -module.exports.shorthandFor = new Map([ - [borderRightWidth.property, borderRightWidth], - [borderRightStyle.property, borderRightStyle], - [borderRightColor.property, borderRightColor] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = module.exports.shorthandFor.keys(); - const obj = { - [borderRightWidth.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== module.exports.initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[borderRightWidth.property] && obj[borderRightWidth.property] === "medium") { - delete obj[borderRightWidth.property]; - } - } - } - } - return obj; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderRightColor.js b/vanilla/node_modules/cssstyle/lib/properties/borderRightColor.js deleted file mode 100644 index 9071c50..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderRightColor.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-right-color"; -const lineShorthand = "border-color"; -const positionShorthand = "border-right"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderRightStyle.js b/vanilla/node_modules/cssstyle/lib/properties/borderRightStyle.js deleted file mode 100644 index 09ffe48..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderRightStyle.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-right-style"; -const lineShorthand = "border-style"; -const positionShorthand = "border-right"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderRightWidth.js b/vanilla/node_modules/cssstyle/lib/properties/borderRightWidth.js deleted file mode 100644 index b56ab28..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderRightWidth.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-right-width"; -const lineShorthand = "border-width"; -const positionShorthand = "border-right"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderSpacing.js b/vanilla/node_modules/cssstyle/lib/properties/borderSpacing.js deleted file mode 100644 index 3bba0be..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderSpacing.js +++ /dev/null @@ -1,65 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-spacing"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - switch (value.length) { - case 1: { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } - case 2: { - const [part1, part2] = value; - const val1 = parsers.resolveNumericValue([part1], { - type: "length" - }); - const val2 = parsers.resolveNumericValue([part2], { - type: "length" - }); - if (val1 && val2) { - return `${val1} ${val2}`; - } - break; - } - default: - } - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderStyle.js b/vanilla/node_modules/cssstyle/lib/properties/borderStyle.js deleted file mode 100644 index 2cf8836..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderStyle.js +++ /dev/null @@ -1,110 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const borderTopStyle = require("./borderTopStyle"); -const borderRightStyle = require("./borderRightStyle"); -const borderBottomStyle = require("./borderBottomStyle"); -const borderLeftStyle = require("./borderLeftStyle"); - -const property = "border-style"; -const shorthand = "border"; - -module.exports.shorthandFor = new Map([ - [borderTopStyle.property, borderTopStyle], - [borderRightStyle.property, borderRightStyle], - [borderBottomStyle.property, borderBottomStyle], - [borderLeftStyle.property, borderLeftStyle] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = parsers.resolveKeywordValue([value], { - length: values.length - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - switch (parsedValues.length) { - case 1: { - return parsedValues; - } - case 2: { - const [val1, val2] = parsedValues; - if (val1 === val2) { - return [val1]; - } - return parsedValues; - } - case 3: { - const [val1, val2, val3] = parsedValues; - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return parsedValues; - } - case 4: { - const [val1, val2, val3, val4] = parsedValues; - if (val2 === val4) { - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return [val1, val2, val3]; - } - return parsedValues; - } - default: - } - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderTop.js b/vanilla/node_modules/cssstyle/lib/properties/borderTop.js deleted file mode 100644 index 29f649d..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderTop.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const borderTopWidth = require("./borderTopWidth"); -const borderTopStyle = require("./borderTopStyle"); -const borderTopColor = require("./borderTopColor"); - -const property = "border-top"; -const shorthand = "border"; - -const subProps = { - width: borderTopWidth.property, - style: borderTopStyle.property, - color: borderTopColor.property -}; - -module.exports.initialValues = new Map([ - [borderTopWidth.property, "medium"], - [borderTopStyle.property, "none"], - [borderTopColor.property, "currentcolor"] -]); - -module.exports.shorthandFor = new Map([ - [borderTopWidth.property, borderTopWidth], - [borderTopStyle.property, borderTopStyle], - [borderTopColor.property, borderTopColor] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.splitValue(v); - const parsedValues = new Map(); - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues); - if (typeof parsedValue === "string") { - return parsedValue; - } else if (Array.isArray(parsedValue)) { - const [key, resolvedVal] = parsedValue; - parsedValues.set(key, resolvedVal); - } else { - return; - } - } else { - return; - } - } - if (parsedValues.size) { - const keys = module.exports.shorthandFor.keys(); - const obj = { - [borderTopWidth.property]: "medium" - }; - for (const key of keys) { - if (parsedValues.has(key)) { - const parsedValue = parsedValues.get(key); - if (parsedValue !== module.exports.initialValues.get(key)) { - obj[key] = parsedValues.get(key); - if (obj[borderTopWidth.property] && obj[borderTopWidth.property] === "medium") { - delete obj[borderTopWidth.property]; - } - } - } - } - return obj; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (val || typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderTopColor.js b/vanilla/node_modules/cssstyle/lib/properties/borderTopColor.js deleted file mode 100644 index 3c22b90..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderTopColor.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-top-color"; -const lineShorthand = "border-color"; -const positionShorthand = "border-top"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderTopStyle.js b/vanilla/node_modules/cssstyle/lib/properties/borderTopStyle.js deleted file mode 100644 index c0bdf0e..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderTopStyle.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-top-style"; -const lineShorthand = "border-style"; -const positionShorthand = "border-top"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderTopWidth.js b/vanilla/node_modules/cssstyle/lib/properties/borderTopWidth.js deleted file mode 100644 index 177fe83..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderTopWidth.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "border-top-width"; -const lineShorthand = "border-width"; -const positionShorthand = "border-top"; -const shorthand = "border"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const shorthandPriority = this._priorities.get(shorthand); - const linePriority = this._priorities.get(lineShorthand); - const positionPriority = this._priorities.get(positionShorthand); - const priority = - !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/borderWidth.js b/vanilla/node_modules/cssstyle/lib/properties/borderWidth.js deleted file mode 100644 index 1306f2e..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/borderWidth.js +++ /dev/null @@ -1,111 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const borderTopWidth = require("./borderTopWidth"); -const borderRightWidth = require("./borderRightWidth"); -const borderBottomWidth = require("./borderBottomWidth"); -const borderLeftWidth = require("./borderLeftWidth"); - -const property = "border-width"; -const shorthand = "border"; - -module.exports.shorthandFor = new Map([ - [borderTopWidth.property, borderTopWidth], - [borderRightWidth.property, borderRightWidth], - [borderBottomWidth.property, borderBottomWidth], - [borderLeftWidth.property, borderLeftWidth] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = parsers.resolveNumericValue([value], { - length: values.length, - type: "length" - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - switch (parsedValues.length) { - case 1: { - return parsedValues; - } - case 2: { - const [val1, val2] = parsedValues; - if (val1 === val2) { - return [val1]; - } - return parsedValues; - } - case 3: { - const [val1, val2, val3] = parsedValues; - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return parsedValues; - } - case 4: { - const [val1, val2, val3, val4] = parsedValues; - if (val2 === val4) { - if (val1 === val3) { - if (val1 === val2) { - return [val1]; - } - return [val1, val2]; - } - return [val1, val2, val3]; - } - return parsedValues; - } - default: - } - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._borderSetter(property, v, ""); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._borderSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/bottom.js b/vanilla/node_modules/cssstyle/lib/properties/bottom.js deleted file mode 100644 index af7bc58..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/bottom.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "bottom"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/clear.js b/vanilla/node_modules/cssstyle/lib/properties/clear.js deleted file mode 100644 index 28e9ef3..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/clear.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "clear"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/clip.js b/vanilla/node_modules/cssstyle/lib/properties/clip.js deleted file mode 100644 index a3db772..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/clip.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; -// deprecated -// @see https://drafts.csswg.org/css-masking-1/#clip-property - -const parsers = require("../parsers"); - -const property = "clip"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const { AST_TYPES } = parsers; - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const [{ name, type, value: itemValue }] = value; - switch (type) { - case AST_TYPES.FUNCTION: { - const values = parsers.splitValue(itemValue, { - delimiter: "," - }); - const parsedValues = []; - for (const item of values) { - const parsedValue = parsers.parseCSS(item, { context: "value" }, true); - const val = parsers.resolveNumericValue(parsedValue.children, { - type: "length" - }); - if (val) { - parsedValues.push(val); - } else { - return; - } - } - return `${name}(${parsedValues.join(", ")})`; - } - case AST_TYPES.GLOBAL_KEYWORD: - case AST_TYPES.IDENTIFIER: { - return name; - } - default: - } - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/color.js b/vanilla/node_modules/cssstyle/lib/properties/color.js deleted file mode 100644 index d0ad35c..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/color.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/display.js b/vanilla/node_modules/cssstyle/lib/properties/display.js deleted file mode 100644 index d331d54..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/display.js +++ /dev/null @@ -1,210 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "display"; - -/* keywords */ -const displayOutside = ["block", "inline", "run-in"]; -const displayFlow = ["flow", "flow-root"]; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const { AST_TYPES } = parsers; - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - switch (value.length) { - case 1: { - const [{ name, type }] = value; - switch (type) { - case AST_TYPES.GLOBAL_KEYWORD: { - return name; - } - case AST_TYPES.IDENTIFIER: { - if (name === "flow") { - return "block"; - } - return name; - } - default: - } - break; - } - case 2: { - const [part1, part2] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name; - if (val1 && val2) { - let outerValue = ""; - let innerValue = ""; - if (val1 === "list-item") { - outerValue = val2; - innerValue = val1; - } else if (val2 === "list-item") { - outerValue = val1; - innerValue = val2; - } else if (displayOutside.includes(val1)) { - outerValue = val1; - innerValue = val2; - } else if (displayOutside.includes(val2)) { - outerValue = val2; - innerValue = val1; - } - if (innerValue === "list-item") { - switch (outerValue) { - case "block": - case "flow": { - return innerValue; - } - case "flow-root": - case "inline": - case "run-in": { - return `${outerValue} ${innerValue}`; - } - default: - } - } else if (outerValue === "block") { - switch (innerValue) { - case "flow": { - return outerValue; - } - case "flow-root": - case "flex": - case "grid": - case "table": { - return innerValue; - } - case "ruby": { - return `${outerValue} ${innerValue}`; - } - default: - } - } else if (outerValue === "inline") { - switch (innerValue) { - case "flow": { - return outerValue; - } - case "flow-root": { - return `${outerValue}-block`; - } - case "flex": - case "grid": - case "table": { - return `${outerValue}-${innerValue}`; - } - case "ruby": { - return innerValue; - } - default: - } - } else if (outerValue === "run-in") { - switch (innerValue) { - case "flow": { - return outerValue; - } - case "flow-root": - case "flex": - case "grid": - case "table": - case "ruby": { - return `${outerValue} ${innerValue}`; - } - default: - } - } - } - break; - } - case 3: { - const [part1, part2, part3] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name; - const val3 = part3.type === AST_TYPES.IDENTIFIER && part3.name; - if (val1 && val2 && part3) { - let outerValue = ""; - let flowValue = ""; - let listItemValue = ""; - if (val1 === "list-item") { - listItemValue = val1; - if (displayFlow.includes(val2)) { - flowValue = val2; - outerValue = val3; - } else if (displayFlow.includes(val3)) { - flowValue = val3; - outerValue = val2; - } - } else if (val2 === "list-item") { - listItemValue = val2; - if (displayFlow.includes(val1)) { - flowValue = val1; - outerValue = val3; - } else if (displayFlow.includes(val3)) { - flowValue = val3; - outerValue = val1; - } - } else if (val3 === "list-item") { - listItemValue = val3; - if (displayFlow.includes(val1)) { - flowValue = val1; - outerValue = val2; - } else if (displayFlow.includes(val2)) { - flowValue = val2; - outerValue = val1; - } - } - if (outerValue && flowValue && listItemValue) { - switch (outerValue) { - case "block": { - if (flowValue === "flow") { - return listItemValue; - } - return `${flowValue} ${listItemValue}`; - } - case "inline": - case "run-in": { - if (flowValue === "flow") { - return `${outerValue} ${listItemValue}`; - } - return `${outerValue} ${flowValue} ${listItemValue}`; - } - } - } - } - break; - } - default: - } - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/flex.js b/vanilla/node_modules/cssstyle/lib/properties/flex.js deleted file mode 100644 index 084e99d..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/flex.js +++ /dev/null @@ -1,178 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const flexGrow = require("./flexGrow"); -const flexShrink = require("./flexShrink"); -const flexBasis = require("./flexBasis"); - -const property = "flex"; - -module.exports.initialValues = new Map([ - [flexGrow.property, "0"], - [flexShrink.property, "1"], - [flexBasis.property, "auto"] -]); - -module.exports.shorthandFor = new Map([ - [flexGrow.property, flexGrow], - [flexShrink.property, flexShrink], - [flexBasis.property, flexBasis] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const { AST_TYPES } = parsers; - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - const flex = { - [flexGrow.property]: "1", - [flexShrink.property]: "1", - [flexBasis.property]: "0%" - }; - if (value.length === 1) { - const [{ isNumber, name, type, unit, value: itemValue }] = value; - switch (type) { - case AST_TYPES.CALC: { - if (isNumber) { - flex[flexGrow.property] = `${name}(${itemValue})`; - return flex; - } - flex[flexBasis.property] = `${name}(${itemValue})`; - return flex; - } - case AST_TYPES.DIMENSION: { - flex[flexBasis.property] = `${itemValue}${unit}`; - return flex; - } - case AST_TYPES.GLOBAL_KEYWORD: { - return name; - } - case AST_TYPES.IDENTIFIER: { - if (name === "none") { - return { - [flexGrow.property]: "0", - [flexShrink.property]: "0", - [flexBasis.property]: "auto" - }; - } - flex[flexBasis.property] = name; - return flex; - } - case AST_TYPES.NUMBER: { - flex[flexGrow.property] = itemValue; - return flex; - } - case AST_TYPES.PERCENTAGE: { - flex[flexBasis.property] = `${itemValue}%`; - return flex; - } - default: - } - } else { - const [val1, val2, val3] = value; - if (val1.type === AST_TYPES.CALC && val1.isNumber) { - flex[flexGrow.property] = `${val1.name}(${val1.value})`; - } else if (val1.type === AST_TYPES.NUMBER) { - flex[flexGrow.property] = val1.value; - } else { - return; - } - if (val3) { - if (val2.type === AST_TYPES.CALC && val2.isNumber) { - flex[flexShrink.property] = `${val2.name}(${val2.value})`; - } else if (val2.type === AST_TYPES.NUMBER) { - flex[flexShrink.property] = val2.value; - } else { - return; - } - if (val3.type === AST_TYPES.GLOBAL_KEYWORD || val3.type === AST_TYPES.IDENTIFIER) { - flex[flexBasis.property] = val3.name; - } else if (val3.type === AST_TYPES.CALC && !val3.isNumber) { - flex[flexBasis.property] = `${val3.name}(${val3.value})`; - } else if (val3.type === AST_TYPES.DIMENSION) { - flex[flexBasis.property] = `${val3.value}${val3.unit}`; - } else if (val3.type === AST_TYPES.PERCENTAGE) { - flex[flexBasis.property] = `${val3.value}%`; - } else { - return; - } - } else { - switch (val2.type) { - case AST_TYPES.CALC: { - if (val2.isNumber) { - flex[flexShrink.property] = `${val2.name}(${val2.value})`; - } else { - flex[flexBasis.property] = `${val2.name}(${val2.value})`; - } - break; - } - case AST_TYPES.DIMENSION: { - flex[flexBasis.property] = `${val2.value}${val2.unit}`; - break; - } - case AST_TYPES.NUMBER: { - flex[flexShrink.property] = val2.value; - break; - } - case AST_TYPES.PERCENTAGE: { - flex[flexBasis.property] = `${val2.value}%`; - break; - } - case AST_TYPES.IDENTIFIER: { - flex[flexBasis.property] = val2.name; - break; - } - default: { - return; - } - } - } - return flex; - } - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - for (const [longhand] of module.exports.shorthandFor) { - this._setProperty(longhand, ""); - } - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - const priority = this._priorities.get(property) ?? ""; - if (typeof val === "string") { - for (const [longhand] of module.exports.shorthandFor) { - this._setProperty(longhand, val, priority); - } - this._setProperty(property, val, priority); - } else if (val) { - const values = []; - for (const [longhand, value] of Object.entries(val)) { - values.push(value); - this._setProperty(longhand, value, priority); - } - this._setProperty(property, values.join(" "), priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/flexBasis.js b/vanilla/node_modules/cssstyle/lib/properties/flexBasis.js deleted file mode 100644 index 68bebc2..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/flexBasis.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "flex-basis"; -const shorthand = "flex"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._flexBoxSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/flexGrow.js b/vanilla/node_modules/cssstyle/lib/properties/flexGrow.js deleted file mode 100644 index 7789021..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/flexGrow.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "flex-grow"; -const shorthand = "flex"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue("flex-grow", v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0 - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._flexBoxSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/flexShrink.js b/vanilla/node_modules/cssstyle/lib/properties/flexShrink.js deleted file mode 100644 index ed0abb4..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/flexShrink.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "flex-shrink"; -const shorthand = "flex"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0 - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._flexBoxSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/float.js b/vanilla/node_modules/cssstyle/lib/properties/float.js deleted file mode 100644 index 7080260..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/float.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "float"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveKeywordValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/floodColor.js b/vanilla/node_modules/cssstyle/lib/properties/floodColor.js deleted file mode 100644 index 7ef4fe8..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/floodColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "flood-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/font.js b/vanilla/node_modules/cssstyle/lib/properties/font.js deleted file mode 100644 index 17897f3..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/font.js +++ /dev/null @@ -1,302 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const fontStyle = require("./fontStyle"); -const fontVariant = require("./fontVariant"); -const fontWeight = require("./fontWeight"); -const fontSize = require("./fontSize"); -const lineHeight = require("./lineHeight"); -const fontFamily = require("./fontFamily"); - -const property = "font"; - -module.exports.shorthandFor = new Map([ - [fontStyle.property, fontStyle], - [fontVariant.property, fontVariant], - [fontWeight.property, fontWeight], - [fontSize.property, fontSize], - [lineHeight.property, lineHeight], - [fontFamily.property, fontFamily] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } else if (parsers.hasCalcFunc(v)) { - v = parsers.resolveCalc(v); - } - if (!parsers.isValidPropertyValue(property, v)) { - return; - } - const { AST_TYPES } = parsers; - const [fontBlock, ...families] = parsers.splitValue(v, { - delimiter: "," - }); - const [fontBlockA, fontBlockB] = parsers.splitValue(fontBlock, { - delimiter: "/" - }); - const font = { - [fontStyle.property]: "normal", - [fontVariant.property]: "normal", - [fontWeight.property]: "normal" - }; - const fontFamilies = new Set(); - if (fontBlockB) { - const [lineB, ...familiesB] = fontBlockB.trim().split(" "); - if (!lineB || !familiesB.length) { - return; - } - const lineHeightB = lineHeight.parse(lineB, { - global - }); - if (typeof lineHeightB !== "string") { - return; - } - const familyB = fontFamily.parse(familiesB.join(" "), { - globalObject, - caseSensitive: true - }); - if (typeof familyB === "string") { - fontFamilies.add(familyB); - } else { - return; - } - const parts = parsers.splitValue(fontBlockA.trim()); - const properties = [ - fontStyle.property, - fontVariant.property, - fontWeight.property, - fontSize.property - ]; - for (const part of parts) { - if (part === "normal") { - continue; - } else { - for (const longhand of properties) { - switch (longhand) { - case fontSize.property: { - const parsedValue = fontSize.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - font[longhand] = parsedValue; - } - break; - } - case fontStyle.property: - case fontWeight.property: { - if (font[longhand] === "normal") { - const longhandItem = module.exports.shorthandFor.get(longhand); - const parsedValue = longhandItem.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - font[longhand] = parsedValue; - } - } - break; - } - case fontVariant.property: { - if (font[longhand] === "normal") { - const parsedValue = fontVariant.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - if (parsedValue === "small-cap") { - font[longhand] = parsedValue; - } else if (parsedValue !== "normal") { - return; - } - } - } - break; - } - default: - } - } - } - } - if (Object.hasOwn(font, fontSize.property)) { - font[lineHeight.property] = lineHeightB; - } else { - return; - } - } else { - const revParts = parsers.splitValue(fontBlockA.trim()).toReversed(); - if (revParts.length === 1) { - const [part] = revParts; - const value = parsers.parsePropertyValue(property, part, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const [{ name, type }] = value; - if (type === AST_TYPES.GLOBAL_KEYWORD) { - return { - [fontStyle.property]: name, - [fontVariant.property]: name, - [fontWeight.property]: name, - [fontSize.property]: name, - [lineHeight.property]: name, - [fontFamily.property]: name - }; - } - } - return; - } - const properties = [ - fontStyle.property, - fontVariant.property, - fontWeight.property, - lineHeight.property - ]; - for (const longhand of properties) { - font[longhand] = "normal"; - } - const revFontFamily = []; - let fontSizeA; - for (const part of revParts) { - if (fontSizeA) { - if (/^normal$/i.test(part)) { - continue; - } else { - for (const longhand of properties) { - switch (longhand) { - case fontStyle.property: - case fontWeight.property: - case lineHeight.property: { - if (font[longhand] === "normal") { - const longhandItem = module.exports.shorthandFor.get(longhand); - const parsedValue = longhandItem.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - font[longhand] = parsedValue; - } - } - break; - } - case fontVariant.property: { - if (font[longhand] === "normal") { - const parsedValue = fontVariant.parse(part, { - globalObject - }); - if (typeof parsedValue === "string") { - if (parsedValue === "small-cap") { - font[longhand] = parsedValue; - } else if (parsedValue !== "normal") { - return; - } - } - } - break; - } - default: - } - } - } - } else { - const parsedFontSize = fontSize.parse(part, { - globalObject - }); - if (typeof parsedFontSize === "string") { - fontSizeA = parsedFontSize; - } else { - const parsedFontFamily = fontFamily.parse(part, { - globalObject, - caseSensitive: true - }); - if (typeof parsedFontFamily === "string") { - revFontFamily.push(parsedFontFamily); - } else { - return; - } - } - } - } - const family = fontFamily.parse(revFontFamily.toReversed().join(" "), { - globalObject, - caseSensitive: true - }); - if (fontSizeA && family) { - font[fontSize.property] = fontSizeA; - fontFamilies.add(fontFamily.parse(family)); - } else { - return; - } - } - for (const family of families) { - const parsedFontFamily = fontFamily.parse(family, { - globalObject, - caseSensitive: true - }); - if (parsedFontFamily) { - fontFamilies.add(parsedFontFamily); - } else { - return; - } - } - font[fontFamily.property] = [...fontFamilies].join(", "); - return font; -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (v === "" || parsers.hasVarFunc(v)) { - for (const [key] of module.exports.shorthandFor) { - this._setProperty(key, ""); - } - this._setProperty(property, v); - } else { - const obj = module.exports.parse(v, { - globalObject: this._global - }); - if (!obj) { - return; - } - const priority = this._priorities.get(property) ?? ""; - const str = new Set(); - for (const [key] of module.exports.shorthandFor) { - const val = obj[key]; - if (typeof val === "string") { - this._setProperty(key, val, priority); - if (val && val !== "normal" && !str.has(val)) { - if (key === lineHeight.property) { - str.add(`/ ${val}`); - } else { - str.add(val); - } - } - } - } - this._setProperty(property, [...str].join(" "), priority); - } - }, - get() { - const val = this.getPropertyValue(property); - if (parsers.hasVarFunc(val)) { - return val; - } - const str = new Set(); - for (const [key] of module.exports.shorthandFor) { - const v = this.getPropertyValue(key); - if (parsers.hasVarFunc(v)) { - return ""; - } - if (v && v !== "normal" && !str.has(v)) { - if (key === lineHeight.property) { - str.add(`/ ${v}`); - } else { - str.add(`${v}`); - } - } - } - return [...str].join(" "); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/fontFamily.js b/vanilla/node_modules/cssstyle/lib/properties/fontFamily.js deleted file mode 100644 index e3fc7ee..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/fontFamily.js +++ /dev/null @@ -1,98 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "font-family"; -const shorthand = "font"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const { AST_TYPES } = parsers; - const values = parsers.splitValue(v, { - delimiter: "," - }); - const parsedValues = []; - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - caseSensitive: true, - inArray: true - }); - if (Array.isArray(value) && value.length) { - if (value.length === 1) { - const [{ name, type, value: itemValue }] = value; - switch (type) { - case AST_TYPES.FUNCTION: { - parsedValues.push(`${name}(${itemValue})`); - break; - } - case AST_TYPES.GLOBAL_KEYWORD: - case AST_TYPES.IDENTIFIER: { - if (name === "undefined") { - return; - } - parsedValues.push(name); - break; - } - case "String": { - const parsedValue = itemValue.replaceAll("\\", "").replaceAll('"', '\\"'); - parsedValues.push(`"${parsedValue}"`); - break; - } - default: { - return; - } - } - } else { - const parts = []; - for (const item of value) { - const { name, type } = item; - if (type !== AST_TYPES.IDENTIFIER) { - return; - } - parts.push(name); - } - const parsedValue = parts.join(" ").replaceAll("\\", "").replaceAll('"', '\\"'); - parsedValues.push(`"${parsedValue}"`); - } - } else if (typeof value === "string") { - parsedValues.push(value); - } else { - return; - } - } - if (parsedValues.length) { - return parsedValues.join(", "); - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/fontSize.js b/vanilla/node_modules/cssstyle/lib/properties/fontSize.js deleted file mode 100644 index 80b015e..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/fontSize.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "font-size"; -const shorthand = "font"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/fontStyle.js b/vanilla/node_modules/cssstyle/lib/properties/fontStyle.js deleted file mode 100644 index f07a17d..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/fontStyle.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "font-style"; -const shorthand = "font"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const { AST_TYPES } = parsers; - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length) { - if (value.length === 1) { - const [{ name, type }] = value; - switch (type) { - case AST_TYPES.GLOBAL_KEYWORD: - case AST_TYPES.IDENTIFIER: { - return name; - } - default: - } - } else if (value.length === 2) { - const [part1, part2] = value; - const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name; - const val2 = parsers.resolveNumericValue([part2], { - type: "angle" - }); - if (val1 && val1 === "oblique" && val2) { - return `${val1} ${val2}`; - } - } - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/fontVariant.js b/vanilla/node_modules/cssstyle/lib/properties/fontVariant.js deleted file mode 100644 index 515b75e..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/fontVariant.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "font-variant"; -const shorthand = "font"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.splitValue(v); - const parsedValues = []; - for (const val of values) { - const value = parsers.parsePropertyValue(property, val, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveFunctionValue(value); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } else if (typeof value === "string") { - parsedValues.push(value); - } - } - if (parsedValues.length) { - if (parsedValues.length > 1) { - if (parsedValues.includes("normal") || parsedValues.includes("none")) { - return; - } - } - return parsedValues.join(" "); - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/fontWeight.js b/vanilla/node_modules/cssstyle/lib/properties/fontWeight.js deleted file mode 100644 index 8087e07..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/fontWeight.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "font-weight"; -const shorthand = "font"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - const parsedValue = parsers.resolveNumericValue(value, { - min: 1, - max: 1000 - }); - if (!parsedValue) { - return; - } - return parsedValue; - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/height.js b/vanilla/node_modules/cssstyle/lib/properties/height.js deleted file mode 100644 index 1e3bd78..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/height.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "height"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/left.js b/vanilla/node_modules/cssstyle/lib/properties/left.js deleted file mode 100644 index 8cea211..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/left.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "left"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/lightingColor.js b/vanilla/node_modules/cssstyle/lib/properties/lightingColor.js deleted file mode 100644 index a007bd5..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/lightingColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "lighting-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/lineHeight.js b/vanilla/node_modules/cssstyle/lib/properties/lineHeight.js deleted file mode 100644 index e1f4b37..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/lineHeight.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "line-height"; -const shorthand = "font"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0 - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/margin.js b/vanilla/node_modules/cssstyle/lib/properties/margin.js deleted file mode 100644 index ffb8704..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/margin.js +++ /dev/null @@ -1,77 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const marginTop = require("./marginTop"); -const marginRight = require("./marginRight"); -const marginBottom = require("./marginBottom"); -const marginLeft = require("./marginLeft"); - -const property = "margin"; - -module.exports.position = "edges"; - -module.exports.shorthandFor = new Map([ - [marginTop.property, marginTop], - [marginRight.property, marginRight], - [marginBottom.property, marginBottom], - [marginLeft.property, marginLeft] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = parsers.resolveNumericValue([value], { - length: values.length, - type: "length" - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - return parsedValues; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - for (const [longhand] of module.exports.shorthandFor) { - this._setProperty(longhand, ""); - } - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._positionShorthandSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/marginBottom.js b/vanilla/node_modules/cssstyle/lib/properties/marginBottom.js deleted file mode 100644 index c3b1e0b..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/marginBottom.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "margin-bottom"; -const shorthand = "margin"; - -module.exports.position = "bottom"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._positionLonghandSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/marginLeft.js b/vanilla/node_modules/cssstyle/lib/properties/marginLeft.js deleted file mode 100644 index f70fe4a..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/marginLeft.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "margin-left"; -const shorthand = "margin"; - -module.exports.position = "left"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._positionLonghandSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/marginRight.js b/vanilla/node_modules/cssstyle/lib/properties/marginRight.js deleted file mode 100644 index 8ec0234..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/marginRight.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "margin-right"; -const shorthand = "margin"; - -module.exports.position = "right"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._positionLonghandSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/marginTop.js b/vanilla/node_modules/cssstyle/lib/properties/marginTop.js deleted file mode 100644 index af8f842..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/marginTop.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "margin-top"; -const shorthand = "margin"; - -module.exports.position = "top"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._positionLonghandSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/opacity.js b/vanilla/node_modules/cssstyle/lib/properties/opacity.js deleted file mode 100644 index 119fd28..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/opacity.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "opacity"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - clamp: true - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/outlineColor.js b/vanilla/node_modules/cssstyle/lib/properties/outlineColor.js deleted file mode 100644 index 6e44b5a..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/outlineColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "outline-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/padding.js b/vanilla/node_modules/cssstyle/lib/properties/padding.js deleted file mode 100644 index 0168aa6..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/padding.js +++ /dev/null @@ -1,78 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); -const paddingTop = require("./paddingTop"); -const paddingRight = require("./paddingRight"); -const paddingBottom = require("./paddingBottom"); -const paddingLeft = require("./paddingLeft"); - -const property = "padding"; - -module.exports.position = "edges"; - -module.exports.shorthandFor = new Map([ - [paddingTop.property, paddingTop], - [paddingRight.property, paddingRight], - [paddingBottom.property, paddingBottom], - [paddingLeft.property, paddingLeft] -]); - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const values = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - const parsedValues = []; - if (Array.isArray(values) && values.length) { - if (values.length > 4) { - return; - } - for (const value of values) { - const parsedValue = parsers.resolveNumericValue([value], { - length: values.length, - min: 0, - type: "length" - }); - if (!parsedValue) { - return; - } - parsedValues.push(parsedValue); - } - } else if (typeof values === "string") { - parsedValues.push(values); - } - if (parsedValues.length) { - return parsedValues; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - for (const [longhand] of module.exports.shorthandFor) { - this._setProperty(longhand, ""); - } - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (Array.isArray(val) || typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._positionShorthandSetter(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/paddingBottom.js b/vanilla/node_modules/cssstyle/lib/properties/paddingBottom.js deleted file mode 100644 index 0b03592..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/paddingBottom.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "padding-bottom"; -const shorthand = "padding"; - -module.exports.position = "bottom"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._positionLonghandSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/paddingLeft.js b/vanilla/node_modules/cssstyle/lib/properties/paddingLeft.js deleted file mode 100644 index 1b6b13e..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/paddingLeft.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "padding-left"; -const shorthand = "padding"; - -module.exports.position = "left"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._positionLonghandSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/paddingRight.js b/vanilla/node_modules/cssstyle/lib/properties/paddingRight.js deleted file mode 100644 index f7088bd..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/paddingRight.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "padding-right"; -const shorthand = "padding"; - -module.exports.position = "right"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._positionLonghandSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/paddingTop.js b/vanilla/node_modules/cssstyle/lib/properties/paddingTop.js deleted file mode 100644 index 32e9f76..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/paddingTop.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "padding-top"; -const shorthand = "padding"; - -module.exports.position = "top"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(shorthand, ""); - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = - !this._priorities.get(shorthand) && this._priorities.has(property) - ? this._priorities.get(property) - : ""; - this._positionLonghandSetter(property, val, priority, shorthand); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/right.js b/vanilla/node_modules/cssstyle/lib/properties/right.js deleted file mode 100644 index a28687a..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/right.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "right"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/stopColor.js b/vanilla/node_modules/cssstyle/lib/properties/stopColor.js deleted file mode 100644 index 4ab8871..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/stopColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "stop-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/top.js b/vanilla/node_modules/cssstyle/lib/properties/top.js deleted file mode 100644 index 29794a8..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/top.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "top"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/webkitBorderAfterColor.js b/vanilla/node_modules/cssstyle/lib/properties/webkitBorderAfterColor.js deleted file mode 100644 index 7190ec3..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/webkitBorderAfterColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "-webkit-border-after-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/webkitBorderBeforeColor.js b/vanilla/node_modules/cssstyle/lib/properties/webkitBorderBeforeColor.js deleted file mode 100644 index f6008ff..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/webkitBorderBeforeColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "-webkit-border-before-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/webkitBorderEndColor.js b/vanilla/node_modules/cssstyle/lib/properties/webkitBorderEndColor.js deleted file mode 100644 index 3870118..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/webkitBorderEndColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "-webkit-border-end-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/webkitBorderStartColor.js b/vanilla/node_modules/cssstyle/lib/properties/webkitBorderStartColor.js deleted file mode 100644 index 96bec13..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/webkitBorderStartColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "-webkit-border-start-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/webkitColumnRuleColor.js b/vanilla/node_modules/cssstyle/lib/properties/webkitColumnRuleColor.js deleted file mode 100644 index 087695f..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/webkitColumnRuleColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "-webkit-column-rule-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/webkitTapHighlightColor.js b/vanilla/node_modules/cssstyle/lib/properties/webkitTapHighlightColor.js deleted file mode 100644 index abda140..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/webkitTapHighlightColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "-webkit-tap-highlight-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/webkitTextEmphasisColor.js b/vanilla/node_modules/cssstyle/lib/properties/webkitTextEmphasisColor.js deleted file mode 100644 index 049babe..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/webkitTextEmphasisColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "-webkit-text-emphasis-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/webkitTextFillColor.js b/vanilla/node_modules/cssstyle/lib/properties/webkitTextFillColor.js deleted file mode 100644 index 027835d..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/webkitTextFillColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "-webkit-text-fill-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/webkitTextStrokeColor.js b/vanilla/node_modules/cssstyle/lib/properties/webkitTextStrokeColor.js deleted file mode 100644 index e4f7224..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/webkitTextStrokeColor.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "-webkit-text-stroke-color"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveColorValue(value); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/properties/width.js b/vanilla/node_modules/cssstyle/lib/properties/width.js deleted file mode 100644 index 91d5a1a..0000000 --- a/vanilla/node_modules/cssstyle/lib/properties/width.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const property = "width"; - -module.exports.parse = (v, opt = {}) => { - const { globalObject } = opt; - if (v === "") { - return v; - } - const value = parsers.parsePropertyValue(property, v, { - globalObject, - inArray: true - }); - if (Array.isArray(value) && value.length === 1) { - return parsers.resolveNumericValue(value, { - min: 0, - type: "length" - }); - } else if (typeof value === "string") { - return value; - } -}; - -module.exports.definition = { - set(v) { - v = parsers.prepareValue(v); - if (parsers.hasVarFunc(v)) { - this._setProperty(property, v); - } else { - const val = module.exports.parse(v, { - globalObject: this._global - }); - if (typeof val === "string") { - const priority = this._priorities.get(property) ?? ""; - this._setProperty(property, val, priority); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}; - -module.exports.property = property; diff --git a/vanilla/node_modules/cssstyle/lib/utils/allExtraProperties.js b/vanilla/node_modules/cssstyle/lib/utils/allExtraProperties.js deleted file mode 100644 index a8d8711..0000000 --- a/vanilla/node_modules/cssstyle/lib/utils/allExtraProperties.js +++ /dev/null @@ -1,155 +0,0 @@ -"use strict"; - -/** - * This file contains all implemented properties that are not a part of any - * current specifications or drafts, but are handled by browsers nevertheless. - */ - -const webkitProperties = [ - "background-composite", - "border-after", - "border-after-color", - "border-after-style", - "border-after-width", - "border-before", - "border-before-color", - "border-before-style", - "border-before-width", - "border-end", - "border-end-color", - "border-end-style", - "border-end-width", - "border-fit", - "border-horizontal-spacing", - "border-start", - "border-start-color", - "border-start-style", - "border-start-width", - "border-vertical-spacing", - "color-correction", - "column-axis", - "column-break-after", - "column-break-before", - "column-break-inside", - "column-rule-color", - "flex-align", - "flex-item-align", - "flex-line-pack", - "flex-order", - "flex-pack", - "flex-wrap", - "font-size-delta", - "font-smoothing", - "highlight", - "hyphenate-limit-after", - "hyphenate-limit-before", - "locale", - "logical-height", - "logical-width", - "margin-after", - "margin-after-collapse", - "margin-before", - "margin-before-collapse", - "margin-bottom-collapse", - "margin-collapse", - "margin-end", - "margin-start", - "margin-top-collapse", - "marquee", - "marquee-direction", - "marquee-increment", - "marquee-repetition", - "marquee-speed", - "marquee-style", - "mask-attachment", - "mask-box-image-outset", - "mask-box-image-repeat", - "mask-box-image-slice", - "mask-box-image-source", - "mask-box-image-width", - "mask-position-x", - "mask-position-y", - "mask-repeat-x", - "mask-repeat-y", - "match-nearest-mail-blockquote-color", - "max-logical-height", - "max-logical-width", - "min-logical-height", - "min-logical-width", - "nbsp-mode", - "overflow-scrolling", - "padding-after", - "padding-before", - "padding-end", - "padding-start", - "perspective-origin-x", - "perspective-origin-y", - "region-break-after", - "region-break-before", - "region-break-inside", - "region-overflow", - "rtl-ordering", - "svg-shadow", - "tap-highlight-color", - "text-decorations-in-effect", - "text-emphasis-color", - "text-fill-color", - "text-security", - "text-size-adjust", - "text-stroke", - "text-stroke-color", - "text-stroke-width", - "transform", - "transform-origin-x", - "transform-origin-y", - "transform-origin-z", - "user-drag", - "user-modify", - "wrap", - "wrap-margin", - "wrap-padding", - "wrap-shape-inside", - "wrap-shape-outside", - "zoom" -].map((prop) => `-webkit-${prop}`); - -module.exports = new Set([ - "background-position-x", - "background-position-y", - "background-repeat-x", - "background-repeat-y", - "color-interpolation", - "color-profile", - "color-rendering", - "enable-background", - "glyph-orientation-horizontal", - "kerning", - "marker-offset", - "marks", - "pointer-events", - "shape-rendering", - "size", - "src", - "stop-color", - "stop-opacity", - "text-anchor", - "text-line-through", - "text-line-through-color", - "text-line-through-mode", - "text-line-through-style", - "text-line-through-width", - "text-overline", - "text-overline-color", - "text-overline-mode", - "text-overline-style", - "text-overline-width", - "text-rendering", - "text-underline", - "text-underline-color", - "text-underline-mode", - "text-underline-style", - "text-underline-width", - "unicode-range", - "vector-effect", - ...webkitProperties -]); diff --git a/vanilla/node_modules/cssstyle/lib/utils/camelize.js b/vanilla/node_modules/cssstyle/lib/utils/camelize.js deleted file mode 100644 index 19aaf7d..0000000 --- a/vanilla/node_modules/cssstyle/lib/utils/camelize.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; - -const { asciiLowercase } = require("./strings"); - -// Utility to translate from `border-width` to `borderWidth`. -// NOTE: For values prefixed with webkit, e.g. `-webkit-foo`, we need to provide -// both `webkitFoo` and `WebkitFoo`. Here we only return `webkitFoo`. -exports.dashedToCamelCase = function (dashed) { - if (dashed.startsWith("--")) { - return dashed; - } - let camel = ""; - let nextCap = false; - // skip leading hyphen in vendor prefixed value, e.g. -webkit-foo - let i = /^-webkit-/.test(dashed) ? 1 : 0; - for (; i < dashed.length; i++) { - if (dashed[i] !== "-") { - camel += nextCap ? dashed[i].toUpperCase() : dashed[i]; - nextCap = false; - } else { - nextCap = true; - } - } - return camel; -}; - -// Utility to translate from `borderWidth` to `border-width`. -exports.camelCaseToDashed = function (camelCase) { - if (camelCase.startsWith("--")) { - return camelCase; - } - const dashed = asciiLowercase(camelCase.replace(/(?<=[a-z])[A-Z]/g, "-$&")); - if (/^webkit-/.test(dashed)) { - return `-${dashed}`; - } - return dashed; -}; diff --git a/vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js b/vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js deleted file mode 100644 index f568d84..0000000 --- a/vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const parsers = require("../parsers"); - -const { AST_TYPES } = parsers; - -const getPropertyDescriptor = (property) => ({ - set(v) { - const value = parsers.prepareValue(v); - if (parsers.hasVarFunc(value)) { - this._setProperty(property, value); - } else { - const parsedValue = parsers.parsePropertyValue(property, v, { - globalObject: this._global, - inArray: true - }); - if (Array.isArray(parsedValue)) { - if (parsedValue.length === 1) { - const [{ name, type, value: itemValue }] = parsedValue; - switch (type) { - case AST_TYPES.CALC: { - this._setProperty(property, `${name}(${itemValue})`); - break; - } - case AST_TYPES.GLOBAL_KEYWORD: - case AST_TYPES.IDENTIFIER: { - // Set the normalized name for keywords or identifiers. - this._setProperty(property, name); - break; - } - default: { - // Set the prepared value for Dimension, Function, etc. - this._setProperty(property, value); - } - } - } else { - // Set the prepared value for lists containing multiple values. - this._setProperty(property, value); - } - } else if (typeof parsedValue === "string") { - // Empty string. - this._setProperty(property, parsedValue); - } - } - }, - get() { - return this.getPropertyValue(property); - }, - enumerable: true, - configurable: true -}); - -module.exports = { - getPropertyDescriptor -}; diff --git a/vanilla/node_modules/cssstyle/lib/utils/strings.js b/vanilla/node_modules/cssstyle/lib/utils/strings.js deleted file mode 100644 index c0227e0..0000000 --- a/vanilla/node_modules/cssstyle/lib/utils/strings.js +++ /dev/null @@ -1,173 +0,0 @@ -// Forked from https://github.com/jsdom/jsdom/blob/main/lib/jsdom/living/helpers/strings.js - -"use strict"; - -// https://infra.spec.whatwg.org/#ascii-whitespace -const asciiWhitespaceRe = /^[\t\n\f\r ]$/; -exports.asciiWhitespaceRe = asciiWhitespaceRe; - -// https://infra.spec.whatwg.org/#ascii-lowercase -exports.asciiLowercase = (s) => { - if (!/[^\x00-\x7f]/.test(s)) { - return s.toLowerCase(); - } - const len = s.length; - const out = new Array(len); - for (let i = 0; i < len; i++) { - const code = s.charCodeAt(i); - // If the character is between 'A' (65) and 'Z' (90), convert using bitwise OR with 32 - out[i] = code >= 65 && code <= 90 ? String.fromCharCode(code | 32) : s[i]; - } - return out.join(""); -}; - -// https://infra.spec.whatwg.org/#ascii-uppercase -exports.asciiUppercase = (s) => { - if (!/[^\x00-\x7f]/.test(s)) { - return s.toUpperCase(); - } - const len = s.length; - const out = new Array(len); - for (let i = 0; i < len; i++) { - const code = s.charCodeAt(i); - // If the character is between 'a' (97) and 'z' (122), convert using bitwise AND with ~32 - out[i] = code >= 97 && code <= 122 ? String.fromCharCode(code & ~32) : s[i]; - } - return out.join(""); -}; - -// https://infra.spec.whatwg.org/#strip-newlines -exports.stripNewlines = (s) => { - return s.replace(/[\n\r]+/g, ""); -}; - -// https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace -exports.stripLeadingAndTrailingASCIIWhitespace = (s) => { - return s.replace(/^[ \t\n\f\r]+/, "").replace(/[ \t\n\f\r]+$/, ""); -}; - -// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace -exports.stripAndCollapseASCIIWhitespace = (s) => { - return s - .replace(/[ \t\n\f\r]+/g, " ") - .replace(/^[ \t\n\f\r]+/, "") - .replace(/[ \t\n\f\r]+$/, ""); -}; - -// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-simple-colour -exports.isValidSimpleColor = (s) => { - return /^#[a-fA-F\d]{6}$/.test(s); -}; - -// https://infra.spec.whatwg.org/#ascii-case-insensitive -exports.asciiCaseInsensitiveMatch = (a, b) => { - if (a.length !== b.length) { - return false; - } - - for (let i = 0; i < a.length; ++i) { - if ((a.charCodeAt(i) | 32) !== (b.charCodeAt(i) | 32)) { - return false; - } - } - - return true; -}; - -// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#rules-for-parsing-integers -// Error is represented as null. -const parseInteger = (exports.parseInteger = (input) => { - // The implementation here is slightly different from the spec's. We want to use parseInt(), but parseInt() trims - // Unicode whitespace in addition to just ASCII ones, so we make sure that the trimmed prefix contains only ASCII - // whitespace ourselves. - const numWhitespace = input.length - input.trimStart().length; - if (/[^\t\n\f\r ]/.test(input.slice(0, numWhitespace))) { - return null; - } - // We don't allow hexadecimal numbers here. - // eslint-disable-next-line radix - const value = parseInt(input, 10); - if (Number.isNaN(value)) { - return null; - } - // parseInt() returns -0 for "-0". Normalize that here. - return value === 0 ? 0 : value; -}); - -// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#rules-for-parsing-non-negative-integers -// Error is represented as null. -exports.parseNonNegativeInteger = (input) => { - const value = parseInteger(input); - if (value === null) { - return null; - } - if (value < 0) { - return null; - } - return value; -}; - -// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-floating-point-number -const floatingPointNumRe = /^-?(?:\d+|\d*\.\d+)(?:[eE][-+]?\d+)?$/; -exports.isValidFloatingPointNumber = (str) => floatingPointNumRe.test(str); - -// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#rules-for-parsing-floating-point-number-values -// Error is represented as null. -exports.parseFloatingPointNumber = (str) => { - // The implementation here is slightly different from the spec's. We need to use parseFloat() in order to retain - // accuracy, but parseFloat() trims Unicode whitespace in addition to just ASCII ones, so we make sure that the - // trimmed prefix contains only ASCII whitespace ourselves. - const numWhitespace = str.length - str.trimStart().length; - if (/[^\t\n\f\r ]/.test(str.slice(0, numWhitespace))) { - return null; - } - const parsed = parseFloat(str); - return isFinite(parsed) ? parsed : null; -}; - -// https://infra.spec.whatwg.org/#split-on-ascii-whitespace -exports.splitOnASCIIWhitespace = (str) => { - let position = 0; - const tokens = []; - while (position < str.length && asciiWhitespaceRe.test(str[position])) { - position++; - } - if (position === str.length) { - return tokens; - } - while (position < str.length) { - const start = position; - while (position < str.length && !asciiWhitespaceRe.test(str[position])) { - position++; - } - tokens.push(str.slice(start, position)); - while (position < str.length && asciiWhitespaceRe.test(str[position])) { - position++; - } - } - return tokens; -}; - -// https://infra.spec.whatwg.org/#split-on-commas -exports.splitOnCommas = (str) => { - let position = 0; - const tokens = []; - while (position < str.length) { - let start = position; - while (position < str.length && str[position] !== ",") { - position++; - } - let end = position; - while (start < str.length && asciiWhitespaceRe.test(str[start])) { - start++; - } - while (end > start && asciiWhitespaceRe.test(str[end - 1])) { - end--; - } - tokens.push(str.slice(start, end)); - if (position < str.length) { - position++; - } - } - return tokens; -}; diff --git a/vanilla/node_modules/cssstyle/package.json b/vanilla/node_modules/cssstyle/package.json deleted file mode 100644 index 43f28dd..0000000 --- a/vanilla/node_modules/cssstyle/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "cssstyle", - "description": "An implementation of the CSSStyleDeclaration class from the CSS Object Model specification", - "keywords": [ - "CSS", - "CSSStyleDeclaration", - "StyleSheet" - ], - "version": "5.3.7", - "repository": { - "type": "git", - "url": "git+https://github.com/jsdom/cssstyle.git" - }, - "files": [ - "lib/" - ], - "main": "./lib/CSSStyleDeclaration.js", - "dependencies": { - "@asamuzakjp/css-color": "^4.1.1", - "@csstools/css-syntax-patches-for-csstree": "^1.0.21", - "css-tree": "^3.1.0", - "lru-cache": "^11.2.4" - }, - "devDependencies": { - "@babel/generator": "^7.28.5", - "@babel/parser": "^7.28.5", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", - "@domenic/eslint-config": "^4.0.1", - "@webref/css": "^8.1.1", - "eslint": "^9.39.1", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.5.0", - "npm-run-all": "^4.1.5", - "prettier": "^3.7.4", - "resolve": "^1.22.11" - }, - "scripts": { - "download": "node ./scripts/downloadLatestProperties.mjs", - "lint": "eslint --max-warnings 0", - "lint:fix": "eslint --fix --max-warnings 0", - "prepare": "run-p prepare:*", - "prepare:implemented_properties": "node ./scripts/generateImplementedProperties.mjs", - "prepare:properties": "node ./scripts/generateProperties.js", - "prepare:propertyDefinitions": "node ./scripts/generatePropertyDefinitions.mjs", - "test": "node --test" - }, - "license": "MIT", - "engines": { - "node": ">=20" - } -} |
