diff --git a/.github/workflows/jsr.yml b/.github/workflows/jsr.yml index 91db110..ce1f624 100644 --- a/.github/workflows/jsr.yml +++ b/.github/workflows/jsr.yml @@ -1,6 +1,4 @@ -# publish to jsr name: Publish - on: push: branches: @@ -9,9 +7,13 @@ on: jobs: publish: runs-on: ubuntu-latest + permissions: contents: read - id-token: write # The OIDC ID token is used for authentication with JSR. + id-token: write + steps: - uses: actions/checkout@v4 - - run: npx jsr publish \ No newline at end of file + + - name: Publish package + run: npx jsr publish \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d9e646..ca3fe32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +# v0.8.0 + +- [x] fix nesting rules expansion #45 +- [ ] at-rules prefix removal +- [ ] at rules validation + - [ ] prelude + - [ ] body + #v0.7.0 - [x] fix merging rules @@ -7,16 +15,16 @@ - [x] declaration name - [ ] declaration value - [ ] exclude -webkit-* gradients - - [x] css selector validation - - [x] pseudo element - - [x] partial pseudo class validation. does not validate parameters - - [x] attribute selector - - [x] combinator - - [x] simple selector - - [x] nested selector - - [x] strict vs permissive validation: allow unknown items such as pseudo classes - - [x] allow unknown pseudo classes - - [x] allow unknown attribute selectors +- [x] css selector validation + - [x] pseudo element + - [x] partial pseudo class validation. does not validate parameters + - [x] attribute selector + - [x] combinator + - [x] simple selector + - [x] nested selector + - [x] strict vs permissive validation: allow unknown items such as pseudo classes + - [x] allow unknown pseudo classes + - [x] allow unknown attribute selectors - [x] strip universal selector when possible # v0.6.0 @@ -28,15 +36,15 @@ - [x] incorrectly expand css nesting rules -## V0.5.3 +## v0.5.3 - [x] incorrectly expand css nesting rules -## V0.5.1 +## v0.5.1 - [x] failed to flatten @import when using url() syntax -## V0.5.0 +## v0.5.0 - [x] render node with parents - [x] fix relative color from xyz @@ -44,11 +52,11 @@ - [x] compute more shorthands - [x] (web) fetch imported css files from external domains using cors -## V0.4.1 +## v0.4.1 no code change -## V0.4.0 +## v0.4.0 Parsing @@ -66,7 +74,7 @@ CSS color level 4 & 5 - [x] oklab() - [x] oklch() -## V0.3.0 +## v0.3.0 ### shorthands diff --git a/README.md b/README.md index 497f325..3e3c319 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,15 @@ CSS parser and minifier for node and the browser ## Installation +From npm ```shell $ npm install @tbela99/css-parser ``` +from jsr +```shell +$ deno add @tbela99/css-parser +``` + ## Features diff --git a/dist/index-umd-web.js b/dist/index-umd-web.js index f920e18..0d5627c 100644 --- a/dist/index-umd-web.js +++ b/dist/index-umd-web.js @@ -5493,7 +5493,7 @@ }; Object.freeze(config$3); - const getConfig$1 = () => config$3; + const getConfig = () => config$3; // https://www.w3.org/TR/css-values-4/#math-function const funcList = ['clamp', 'calc']; @@ -5760,6 +5760,13 @@ buffer = ''; } break; + case '&': + if (buffer.length > 0) { + yield pushToken(buffer, parseInfo); + buffer = ''; + } + yield pushToken(value, parseInfo); + break; case '<': if (buffer.length > 0) { yield pushToken(buffer, parseInfo); @@ -29582,6 +29589,227 @@ } ] }, + stroke: { + syntax: "", + ast: [ + ] + }, + "stroke-dasharray": { + syntax: "none | ", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "none" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "dasharray" + } + ] + } + ] + }, + "stroke-dashoffset": { + syntax: " | ", + ast: [ + { + typ: 27, + l: [ + { + typ: 2, + val: "length-percentage" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "number" + } + ] + } + ] + }, + "stroke-linecap": { + syntax: "butt | round | square", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "butt" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "round" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 1, + val: "square" + } + ] + } + ] + } + ] + }, + "stroke-linejoin": { + syntax: "miter | miter-clip | round | bevel | arcs", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "miter" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "miter-clip" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "round" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "bevel" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 1, + val: "arcs" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "stroke-miterlimit": { + syntax: "", + ast: [ + { + typ: 2, + val: "number" + } + ] + }, + "stroke-opacity": { + syntax: "", + ast: [ + { + typ: 2, + val: "opacity" + } + ] + }, + "stroke-width": { + syntax: " | ", + ast: [ + { + typ: 27, + l: [ + { + typ: 2, + val: "length-percentage" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "number" + } + ] + } + ] + }, "tab-size": { syntax: " | ", ast: [ @@ -58992,318 +59220,1901 @@ ] } }; - var config$2 = { - declarations: declarations, - functions: functions, - syntaxes: syntaxes, - selectors: selectors - }; - - Object.freeze(config$2); - function getConfig() { - // @ts-ignore - return config$2; - } - - const expressions = [ - exports.EnumToken.DelimTokenType, exports.EnumToken.IncludeMatchTokenType, exports.EnumToken.DashMatchTokenType, - exports.EnumToken.StartMatchTokenType, exports.EnumToken.EndMatchTokenType, exports.EnumToken.ContainMatchTokenType - ]; - const selectorTokens = [ - exports.EnumToken.IdenTokenType, exports.EnumToken.ClassSelectorTokenType, exports.EnumToken.AttrTokenType, - exports.EnumToken.PseudoClassTokenType, exports.EnumToken.PseudoClassFuncTokenType, exports.EnumToken.HashTokenType, - exports.EnumToken.UniversalSelectorTokenType - ]; - const combinatorTokens = [ - exports.EnumToken.ChildCombinatorTokenType, exports.EnumToken.NextSiblingCombinatorTokenType, - exports.EnumToken.SubsequentSiblingCombinatorTokenType - ]; - function validateSelector(selector, options, root) { - if (selector.length == 0) { - return { - valid: ValidationLevel.Drop, - node: null, - error: 'The selector is empty.' - }; - } - return doValidateSelector(selector, options, root); - } - function doValidateSelector(selector, options, root) { - let result; - if (combinatorTokens.includes(selector[0].typ)) { - if (root == null || root.typ == exports.EnumToken.StyleSheetNodeType) { - return { - valid: ValidationLevel.Drop, - node: null, - error: 'The selector cannot start with a combinator.' - }; - } - selector = selector.slice(1); - } - while ((selector?.length ?? 0) > 0) { - result = validateSimpleSelector(selector, options, root); - if (result.valid == ValidationLevel.Drop) { - return { - valid: ValidationLevel.Drop, - node: result.nodes[0] ?? null, - error: result.error - }; - } - if (result.nodes.length == 0) { - return { - valid: result.valid, - node: result.nodes[0] ?? null, - error: result.error - }; - } - selector = result.nodes; - result = validateCombinator(selector); - if (result.valid == ValidationLevel.Drop) { - while (result.valid == ValidationLevel.Drop && selector.length > 0) { - if (selector[0].typ == exports.EnumToken.CommaTokenType) { - selector = consumeWhitespace(selector.slice(1)); - if (selector.length == 0) { - return { - valid: ValidationLevel.Drop, - node: selector[0], - error: 'unexpected token' - }; - } - if (selector.length > 0 && combinatorTokens.includes(selector[0].typ)) { - if (root == null || root.typ == exports.EnumToken.StyleSheetNodeType) { - return { - valid: ValidationLevel.Drop, - node: selector[0], - error: 'Unexpected token' - }; - } - selector = selector.slice(1); - } - result = validateSimpleSelector(selector, options, root); - if (result.valid == ValidationLevel.Drop) { - return { - valid: ValidationLevel.Drop, - node: null, - error: 'Invalid selector' - }; - } - if (result.nodes.length == 0) { - return { - valid: result.valid, - node: null, - error: result.error - }; - } - selector = result.nodes; - result = validateCombinator(selector); - if (result.nodes.length == 0) { - return { - valid: result.valid, - node: null, - error: result.error - }; - } - selector = result.nodes; - } - else { - break; - } - } - } - else { - selector = result.nodes; - } - } - return { - valid: ValidationLevel.Valid, - node: null, - error: '' - }; - } - function consumeWhitespace(selector) { - let i = 0; - while (i < selector.length && - (selector[i].typ == exports.EnumToken.WhitespaceTokenType || - selector[i].typ == exports.EnumToken.CommentTokenType)) { - i++; - } - return selector.slice(i); - } - function validateSimpleSelector(selector, options, root) { - let i = 0; - if (i >= selector.length) { - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i), - error: 'empty selector' - }; - } - if (root?.typ == exports.EnumToken.AtRuleNodeType && null != root.nam.match(/(-[a-zA-Z]+-)?keyframes/)) { - while (i < selector.length) { - if ([exports.EnumToken.PercentageTokenType, exports.EnumToken.CommentTokenType].includes(selector[i].typ)) { - i++; - continue; - } - if ((selector[i].typ == exports.EnumToken.IdenTokenType && ['from', 'to'].includes(selector[i].val))) { - i++; - continue; - } - if (selector[i].typ == exports.EnumToken.CommaTokenType) { - break; - } - return { - valid: ValidationLevel.Drop, - nodes: selector.slice(i), - error: 'invalid selector' - }; - } - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i), - error: 'empty selector' - }; - } - while (i < selector.length && [exports.EnumToken.WhitespaceTokenType, exports.EnumToken.CommentTokenType].includes(selector[i].typ)) { - i++; - } - if (i >= selector.length) { - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i), - error: 'empty selector' - }; - } - if (selectorTokens.includes(selector[i].typ)) { - let result; - if (selector[i].typ == exports.EnumToken.PseudoClassTokenType) { - result = validatePseudoClass(selector[i], options); - if (result.valid != ValidationLevel.Valid) { - return result; - } - } - if (selector[i].typ == exports.EnumToken.PseudoClassFuncTokenType) { - result = validatePseudoClassFunction(selector[i], options); - if (result.valid != ValidationLevel.Valid) { - return result; - } - } - if (selector[i].typ == exports.EnumToken.AttrTokenType) { - result = validateAttributeSelector(selector[i], options); - if (result.valid != ValidationLevel.Valid) { - return result; - } - } - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i + 1), - error: '' - }; - } - if (selector[i].typ == exports.EnumToken.LiteralTokenType && selector[i].val.startsWith('\\')) { - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i + 1), - error: '' - }; - } - if (selector[i].typ == exports.EnumToken.NestingSelectorTokenType && root != null && root.typ != exports.EnumToken.StyleSheetNodeType) { - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i + 1), - error: 'Compound selector not allowed here' - }; - } - return { - valid: ValidationLevel.Drop, - nodes: selector.slice(i + 1, 1), - error: 'unexpected token' - }; - } - function validatePseudoClass(selector, options) { - const name = selector.val.slice(selector.val[1] == ':' ? 2 : 1); - if (name.match(/^-[a-zA-Z]+-/) || selector.val == ':before' || selector.val == ':after') { - return { - valid: ValidationLevel.Valid, - nodes: [selector], - error: '' - }; - } - const config = getConfig(); - const isValid = selector.val in config.selectors; - return { - valid: isValid || !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, - nodes: [selector], - error: isValid ? '' : 'invalid selector' - }; - } - function validatePseudoClassFunction(selector, options) { - const name = selector.val.slice(1); - if (name.match(/^-[a-zA-Z]+-/)) { - const isValid = name == '-webkit-any' || name == '-moz-any'; - return { - valid: isValid ? ValidationLevel.Valid : ValidationLevel.Drop, - nodes: [selector], - error: isValid ? '' : 'invalid pseudo class' - }; - } - const config = getConfig(); - if (selector.val in config.selectors) { - if (!('chi' in config.selectors[selector.val].ast[0])) { - return { - valid: !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, - nodes: [selector], - error: '' - }; - } - } - else if (!(selector.val + '()' in config.selectors)) { - return { - valid: !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, - nodes: [selector], - error: '' - }; - } - // TODO: validate params - return { - valid: ValidationLevel.Valid, - nodes: [selector], - error: '' - }; - } - function validateAttributeSelector(selector, options) { - let i = 0; - let isMatchExpression = false; - let expression; - while (i < selector.chi.length) { - if ([exports.EnumToken.WhitespaceTokenType, exports.EnumToken.CommentTokenType].includes(selector.chi[i].typ)) { - i++; - continue; - } - if (exports.EnumToken.IdenTokenType == selector.chi[i].typ || - exports.EnumToken.MatchExpressionTokenType == selector.chi[i].typ || - exports.EnumToken.NameSpaceAttributeTokenType == selector.chi[i].typ) { - isMatchExpression = exports.EnumToken.MatchExpressionTokenType == selector.chi[i].typ; - if (isMatchExpression) { - expression = selector.chi[i]; - } - if (exports.EnumToken.NameSpaceAttributeTokenType == selector.chi[i].typ) { - if (selector.chi[i].r.typ != exports.EnumToken.IdenTokenType) { - return { - valid: ValidationLevel.Drop, - nodes: [selector], - error: 'identifier expected' - }; - } - if (selector.chi[i].l != null) { - // @ts-ignore - if (selector.chi[i].l.typ != exports.EnumToken.IdenTokenType && - // @ts-ignore - selector.chi[i].l.typ != exports.EnumToken.LiteralTokenType) { - return { - valid: ValidationLevel.Drop, - nodes: [selector], - error: 'invalid namespace prefix' - }; + var atRules = { + "@charset": { + syntax: "@charset \"\";", + ast: [ + { + typ: 1, + val: "@charset" + }, + { + typ: 20 + }, + { + typ: 33, + val: "\"\"" + }, + { + typ: 1, + val: ";" + } + ] + }, + "@counter-style": { + syntax: "@counter-style {\n [ system: ; ] ||\n [ symbols: ; ] ||\n [ additive-symbols: ; ] ||\n [ negative: ; ] ||\n [ prefix: ; ] ||\n [ suffix: ; ] ||\n [ range: ; ] ||\n [ pad: ; ] ||\n [ speak-as: ; ] ||\n [ fallback: ; ]\n}", + ast: [ + { + typ: 28, + l: [ + { + typ: 1, + val: "@counter-style" + }, + { + typ: 20 + }, + { + typ: 2, + val: "counter-style-name", + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "symbols:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "counter-symbols" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "additive-symbols:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "additive-symbols" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "negative:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "negative-symbol" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "prefix:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "prefix" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "suffix:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "suffix" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "range:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "range" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "pad:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "padding" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "speak-as:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "speak-as" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "fallback:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "counter-style-name" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + }, + { + typ: 15 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "@document": { + syntax: "@document [ | url-prefix() | domain() | media-document() | regexp() ]# {\n \n}", + ast: [ + { + typ: 1, + val: "@document" + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "url" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 18, + val: "url-prefix", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 18, + val: "domain", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 18, + val: "media-document", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 18, + val: "regexp", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ] + } + ] + } + ] + } + ] + } + ], + isList: true, + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@font-palette-values": { + syntax: "@font-palette-values { }", + ast: [ + { + typ: 1, + val: "@font-palette-values" + }, + { + typ: 20 + }, + { + typ: 2, + val: "dashed-ident", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@font-face": { + syntax: "@font-face {\n [ font-family: ; ] ||\n [ src: ; ] ||\n [ unicode-range: ; ] ||\n [ font-variant: ; ] ||\n [ font-feature-settings: ; ] ||\n [ font-variation-settings: ; ] ||\n [ font-stretch: ; ] ||\n [ font-weight: ; ] ||\n [ font-style: ; ] ||\n [ size-adjust: ; ] ||\n [ ascent-override: ; ] ||\n [ descent-override: ; ] ||\n [ line-gap-override: ; ]\n}", + ast: [ + { + typ: 28, + l: [ + { + typ: 1, + val: "@font-face", + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "src:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "src" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "unicode-range:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "unicode-range" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-variant:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-variant" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-feature-settings:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-feature-settings" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-variation-settings:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-variation-settings" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-stretch:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-stretch" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-weight:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-weight" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-style:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-style" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "size-adjust:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "size-adjust" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "ascent-override:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "ascent-override" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "descent-override:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "descent-override" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "line-gap-override:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "line-gap-override" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + }, + { + typ: 15 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "@font-feature-values": { + syntax: "@font-feature-values # {\n \n}", + ast: [ + { + typ: 1, + val: "@font-feature-values" + }, + { + typ: 20 + }, + { + typ: 2, + val: "family-name", + isList: true, + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@import": { + syntax: "@import [ | ]\n [ layer | layer() ]?\n [ supports( [ | ] ) ]?\n ? ;", + ast: [ + { + typ: 1, + val: "@import" + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "string" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "url" + }, + { + typ: 20 + } + ] + } + ] + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "layer" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 18, + val: "layer", + chi: [ + { + typ: 2, + val: "layer-name" + } + ] + }, + { + typ: 20 + } + ] + } + ], + isOptional: true + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 18, + val: "supports", + chi: [ + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "supports-condition" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "declaration" + }, + { + typ: 20 + } + ] + } + ] + } + ] + } + ], + isOptional: true + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 2, + val: "media-query-list", + isOptional: true + }, + { + typ: 20 + }, + { + typ: 1, + val: ";" + } + ] + }, + "@keyframes": { + syntax: "@keyframes {\n \n}", + ast: [ + { + typ: 1, + val: "@keyframes" + }, + { + typ: 20 + }, + { + typ: 2, + val: "keyframes-name", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@layer": { + syntax: "@layer [ # | ? {\n \n} ]", + ast: [ + { + typ: 1, + val: "@layer" + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "layer-name", + isList: true + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "layer-name", + isOptional: true, + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + } + ] + } + ] + } + ] + }, + "@media": { + syntax: "@media {\n \n}", + ast: [ + { + typ: 1, + val: "@media" + }, + { + typ: 20 + }, + { + typ: 2, + val: "media-query-list", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@namespace": { + syntax: "@namespace ? [ | ];", + ast: [ + { + typ: 1, + val: "@namespace" + }, + { + typ: 20 + }, + { + typ: 2, + val: "namespace-prefix", + isOptional: true + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "string" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "url" + }, + { + typ: 20 + } + ] + } + ] + }, + { + typ: 1, + val: ";" + } + ] + }, + "@page": { + syntax: "@page {\n \n}", + ast: [ + { + typ: 1, + val: "@page" + }, + { + typ: 20 + }, + { + typ: 2, + val: "page-selector-list", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@position-try": { + syntax: "@position-try {\n \n}", + ast: [ + { + typ: 1, + val: "@position-try" + }, + { + typ: 20 + }, + { + typ: 2, + val: "dashed-ident", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@property": { + syntax: "@property {\n \n}", + ast: [ + { + typ: 1, + val: "@property" + }, + { + typ: 20 + }, + { + typ: 2, + val: "custom-property-name", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@scope": { + syntax: "@scope [()]? [to ()]? {\n \n}", + ast: [ + { + typ: 1, + val: "@scope" + }, + { + typ: 20 + }, + { + typ: 18, + chi: [ + { + typ: 2, + val: "scope-start" + } + ], + isOptional: true + }, + { + typ: 20 + }, + { + typ: 1, + val: "to" + }, + { + typ: 18, + chi: [ + { + typ: 2, + val: "scope-end" + } + ], + isOptional: true, + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@starting-style": { + syntax: "@starting-style {\n | \n}", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "@starting-style", + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "group-rule-body" + }, + { + typ: 20 + }, + { + typ: 15 + } + ] + } + ] + }, + "@supports": { + syntax: "@supports {\n \n}", + ast: [ + { + typ: 1, + val: "@supports" + }, + { + typ: 20 + }, + { + typ: 2, + val: "supports-condition", + occurence: { + min: 0, + max: 0 + } + } + ] + } + }; + var config$2 = { + declarations: declarations, + functions: functions, + syntaxes: syntaxes, + selectors: selectors, + atRules: atRules + }; + + Object.freeze(config$2); + function getSyntaxConfig() { + // @ts-ignore + return config$2; + } + + const expressions = [ + exports.EnumToken.DelimTokenType, exports.EnumToken.IncludeMatchTokenType, exports.EnumToken.DashMatchTokenType, + exports.EnumToken.StartMatchTokenType, exports.EnumToken.EndMatchTokenType, exports.EnumToken.ContainMatchTokenType + ]; + const selectorTokens = [ + exports.EnumToken.IdenTokenType, exports.EnumToken.ClassSelectorTokenType, exports.EnumToken.AttrTokenType, + exports.EnumToken.PseudoClassTokenType, exports.EnumToken.PseudoClassFuncTokenType, exports.EnumToken.HashTokenType, + exports.EnumToken.UniversalSelectorTokenType + ]; + const combinatorTokens = [ + exports.EnumToken.ChildCombinatorTokenType, exports.EnumToken.NextSiblingCombinatorTokenType, + exports.EnumToken.SubsequentSiblingCombinatorTokenType + ]; + function validateSelector(selector, options, root) { + if (selector.length == 0) { + return { + valid: ValidationLevel.Drop, + node: null, + error: 'The selector is empty.' + }; + } + return doValidateSelector(selector, options, root); + } + function doValidateSelector(selector, options, root) { + let result; + if (combinatorTokens.includes(selector[0].typ)) { + if (root == null || root.typ == exports.EnumToken.StyleSheetNodeType) { + return { + valid: ValidationLevel.Drop, + node: null, + error: 'The selector cannot start with a combinator.' + }; + } + selector = selector.slice(1); + } + while ((selector?.length ?? 0) > 0) { + result = validateSimpleSelector(selector, options, root); + if (result.valid == ValidationLevel.Drop) { + return { + valid: ValidationLevel.Drop, + node: result.nodes[0] ?? null, + error: result.error + }; + } + if (result.nodes.length == 0) { + return { + valid: result.valid, + node: result.nodes[0] ?? null, + error: result.error + }; + } + selector = result.nodes; + result = validateCombinator(selector); + if (result.valid == ValidationLevel.Drop) { + while (result.valid == ValidationLevel.Drop && selector.length > 0) { + if (selector[0].typ == exports.EnumToken.CommaTokenType) { + selector = consumeWhitespace(selector.slice(1)); + if (selector.length == 0) { + return { + valid: ValidationLevel.Drop, + node: selector[0], + error: 'unexpected token' + }; + } + if (selector.length > 0 && combinatorTokens.includes(selector[0].typ)) { + if (root == null || root.typ == exports.EnumToken.StyleSheetNodeType) { + return { + valid: ValidationLevel.Drop, + node: selector[0], + error: 'Unexpected token' + }; + } + selector = selector.slice(1); + } + result = validateSimpleSelector(selector, options, root); + if (result.valid == ValidationLevel.Drop) { + return { + valid: ValidationLevel.Drop, + node: null, + error: 'Invalid selector' + }; + } + if (result.nodes.length == 0) { + return { + valid: result.valid, + node: null, + error: result.error + }; + } + selector = result.nodes; + result = validateCombinator(selector); + if (result.nodes.length == 0) { + return { + valid: result.valid, + node: null, + error: result.error + }; + } + selector = result.nodes; + } + else { + break; + } + } + } + else { + selector = result.nodes; + } + } + return { + valid: ValidationLevel.Valid, + node: null, + error: '' + }; + } + function consumeWhitespace(selector) { + let i = 0; + while (i < selector.length && + (selector[i].typ == exports.EnumToken.WhitespaceTokenType || + selector[i].typ == exports.EnumToken.CommentTokenType)) { + i++; + } + return selector.slice(i); + } + function validateSimpleSelector(selector, options, root) { + let i = 0; + if (i >= selector.length) { + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i), + error: 'empty selector' + }; + } + if (root?.typ == exports.EnumToken.AtRuleNodeType && null != root.nam.match(/(-[a-zA-Z]+-)?keyframes/)) { + while (i < selector.length) { + if ([exports.EnumToken.PercentageTokenType, exports.EnumToken.CommentTokenType].includes(selector[i].typ)) { + i++; + continue; + } + if ((selector[i].typ == exports.EnumToken.IdenTokenType && ['from', 'to'].includes(selector[i].val))) { + i++; + continue; + } + if (selector[i].typ == exports.EnumToken.CommaTokenType) { + break; + } + return { + valid: ValidationLevel.Drop, + nodes: selector.slice(i), + error: 'invalid selector' + }; + } + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i), + error: 'empty selector' + }; + } + while (i < selector.length && [exports.EnumToken.WhitespaceTokenType, exports.EnumToken.CommentTokenType].includes(selector[i].typ)) { + i++; + } + if (i >= selector.length) { + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i), + error: 'empty selector' + }; + } + if (selectorTokens.includes(selector[i].typ)) { + let result; + if (selector[i].typ == exports.EnumToken.PseudoClassTokenType) { + result = validatePseudoClass(selector[i], options); + if (result.valid != ValidationLevel.Valid) { + return result; + } + } + if (selector[i].typ == exports.EnumToken.PseudoClassFuncTokenType) { + result = validatePseudoClassFunction(selector[i], options); + if (result.valid != ValidationLevel.Valid) { + return result; + } + } + if (selector[i].typ == exports.EnumToken.AttrTokenType) { + result = validateAttributeSelector(selector[i], options); + if (result.valid != ValidationLevel.Valid) { + return result; + } + } + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i + 1), + error: '' + }; + } + if (selector[i].typ == exports.EnumToken.LiteralTokenType && selector[i].val.startsWith('\\')) { + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i + 1), + error: '' + }; + } + if (selector[i].typ == exports.EnumToken.NestingSelectorTokenType && root != null && root.typ != exports.EnumToken.StyleSheetNodeType) { + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i + 1), + error: 'Compound selector not allowed here' + }; + } + return { + valid: ValidationLevel.Drop, + nodes: selector.slice(i + 1, 1), + error: 'unexpected token' + }; + } + function validatePseudoClass(selector, options) { + const name = selector.val.slice(selector.val[1] == ':' ? 2 : 1); + if (name.match(/^-[a-zA-Z]+-/) || selector.val == ':before' || selector.val == ':after') { + return { + valid: ValidationLevel.Valid, + nodes: [selector], + error: '' + }; + } + const config = getSyntaxConfig(); + const isValid = selector.val in config.selectors; + return { + valid: isValid || !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, + nodes: [selector], + error: isValid ? '' : 'invalid selector' + }; + } + function validatePseudoClassFunction(selector, options) { + const name = selector.val.slice(1); + if (name.match(/^-[a-zA-Z]+-/)) { + const isValid = name == '-webkit-any' || name == '-moz-any'; + return { + valid: isValid ? ValidationLevel.Valid : ValidationLevel.Drop, + nodes: [selector], + error: isValid ? '' : 'invalid pseudo class' + }; + } + const config = getSyntaxConfig(); + if (selector.val in config.selectors) { + if (!('chi' in config.selectors[selector.val].ast[0])) { + return { + valid: !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, + nodes: [selector], + error: '' + }; + } + } + else if (!(selector.val + '()' in config.selectors)) { + return { + valid: !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, + nodes: [selector], + error: '' + }; + } + // TODO: validate params + return { + valid: ValidationLevel.Valid, + nodes: [selector], + error: '' + }; + } + function validateAttributeSelector(selector, options) { + let i = 0; + let isMatchExpression = false; + let expression; + while (i < selector.chi.length) { + if ([exports.EnumToken.WhitespaceTokenType, exports.EnumToken.CommentTokenType].includes(selector.chi[i].typ)) { + i++; + continue; + } + if (exports.EnumToken.IdenTokenType == selector.chi[i].typ || + exports.EnumToken.MatchExpressionTokenType == selector.chi[i].typ || + exports.EnumToken.NameSpaceAttributeTokenType == selector.chi[i].typ) { + isMatchExpression = exports.EnumToken.MatchExpressionTokenType == selector.chi[i].typ; + if (isMatchExpression) { + expression = selector.chi[i]; + } + if (exports.EnumToken.NameSpaceAttributeTokenType == selector.chi[i].typ) { + if (selector.chi[i].r.typ != exports.EnumToken.IdenTokenType) { + return { + valid: ValidationLevel.Drop, + nodes: [selector], + error: 'identifier expected' + }; + } + if (selector.chi[i].l != null) { + // @ts-ignore + if (selector.chi[i].l.typ != exports.EnumToken.IdenTokenType && + // @ts-ignore + selector.chi[i].l.typ != exports.EnumToken.LiteralTokenType) { + return { + valid: ValidationLevel.Drop, + nodes: [selector], + error: 'invalid namespace prefix' + }; } if ( // @ts-ignore @@ -60872,7 +62683,67 @@ } } else { - rule.sel = replaceCompound(rule.sel, ast.sel); + let childSelectorCompund = []; + let withCompound = []; + let withoutCompound = []; + const rules = splitRule(ast.sel); + for (const sel of (rule.raw ?? splitRule(rule.sel))) { + const s = sel.join(''); + if (s.includes('&')) { + if (s.indexOf('&', 1) == -1) { + if (s.at(0) == '&') { + if (s.at(1) == ' ') { + childSelectorCompund.push(s.slice(2)); + } + else { + if (s == '&') { + withCompound.push(s); + } + else { + withoutCompound.push(s.slice(1)); + } + } + } + } + else { + withCompound.push(s); + } + } + else { + withoutCompound.push(s); + } + } + const selectors = []; + const selector = rules.length > 1 ? ':is(' + rules.map(a => a.join('')).join(',') + ')' : rules[0].join(''); + if (childSelectorCompund.length > 0) { + if (childSelectorCompund.length == 1) { + selectors.push(replaceCompound('& ' + childSelectorCompund[0].trim(), selector)); + } + else { + selectors.push(replaceCompound('& :is(' + childSelectorCompund.reduce((acc, curr) => acc + (acc.length > 0 ? ',' : '') + curr.trim(), '') + ')', selector)); + } + } + if (withoutCompound.length > 0) { + if (withoutCompound.length == 1) { + const useIs = rules.length == 1 && selector.match(/^[a-zA-Z.:]/) != null && selector.includes(' ') && withoutCompound.length == 1 && withoutCompound[0].match(/^[a-zA-Z]+$/) != null; + const compound = useIs ? ':is(&)' : '&'; + selectors.push(replaceCompound(rules.length == 1 ? (useIs ? withoutCompound[0] + ':is(&)' : (selector.match(/^[.:]/) && withoutCompound[0].match(/^[a-zA-Z]+$/) ? withoutCompound[0] + compound : compound + withoutCompound[0])) : (withoutCompound[0].match(/^[a-zA-Z:]+$/) ? withoutCompound[0].trim() + compound : '&' + (withoutCompound[0].match(/^\S+$/) ? withoutCompound[0].trim() : ':is(' + withoutCompound[0].trim() + ')')), selector)); + } + else { + selectors.push(replaceCompound('&:is(' + withoutCompound.reduce((acc, curr) => acc + (acc.length > 0 ? ',' : '') + curr.trim(), '') + ')', selector)); + } + } + if (withCompound.length > 0) { + if (withCompound.length == 1) { + selectors.push(replaceCompound(withCompound[0], selector)); + } + else { + for (const w of withCompound) { + selectors.push(replaceCompound(w, selector)); + } + } + } + rule.sel = selectors.reduce((acc, curr) => curr.length == 0 ? acc : acc + (acc.length > 0 ? ',' : '') + curr, ''); } ast.chi.splice(i--, 1); result.push(...expandRule(rule)); @@ -60999,6 +62870,11 @@ ValidationTokenEnum[ValidationTokenEnum["PseudoClassToken"] = 31] = "PseudoClassToken"; ValidationTokenEnum[ValidationTokenEnum["PseudoClassFunctionToken"] = 32] = "PseudoClassFunctionToken"; ValidationTokenEnum[ValidationTokenEnum["StringToken"] = 33] = "StringToken"; + ValidationTokenEnum[ValidationTokenEnum["AtRuleDefinition"] = 34] = "AtRuleDefinition"; + ValidationTokenEnum[ValidationTokenEnum["DeclarationNameToken"] = 35] = "DeclarationNameToken"; + ValidationTokenEnum[ValidationTokenEnum["DeclarationDefinitionToken"] = 36] = "DeclarationDefinitionToken"; + ValidationTokenEnum[ValidationTokenEnum["SemiColon"] = 37] = "SemiColon"; + ValidationTokenEnum[ValidationTokenEnum["Character"] = 38] = "Character"; })(ValidationTokenEnum || (ValidationTokenEnum = {})); [ @@ -61010,7 +62886,7 @@ ValidationTokenEnum.OpenCurlyBrace ]; - const config$1 = getConfig(); + const config$1 = getSyntaxConfig(); class ComputePrefixFeature { static get ordering() { return 2; @@ -61438,7 +63314,7 @@ } } - const propertiesConfig = getConfig$1(); + const propertiesConfig = getConfig(); class PropertyMap { config; declarations; @@ -62046,7 +63922,7 @@ } } - const config = getConfig$1(); + const config = getConfig(); class PropertyList { options = { removeDuplicateDeclarations: true, computeShorthand: true }; declarations; @@ -63355,6 +65231,9 @@ return fetch(t, t.origin != self.origin ? { mode: 'cors' } : {}).then(parseResponse); } + /** + * render ast node + */ function render(data, options = {}) { return doRender(data, Object.assign(options, { load, @@ -63363,6 +65242,9 @@ cwd: options.cwd ?? self.location.pathname.endsWith('/') ? self.location.pathname : dirname(self.location.pathname) })); } + /** + * parse css + */ async function parse(iterator, opt = {}) { return doParse(iterator, Object.assign(opt, { load, @@ -63371,6 +65253,9 @@ cwd: opt.cwd ?? self.location.pathname.endsWith('/') ? self.location.pathname : dirname(self.location.pathname) })); } + /** + * parse and render css + */ async function transform(css, options = {}) { options = { minify: true, removeEmpty: true, removeCharset: true, ...options }; const startTime = performance.now(); diff --git a/dist/index.cjs b/dist/index.cjs index 25f4149..b5adce4 100644 --- a/dist/index.cjs +++ b/dist/index.cjs @@ -5492,7 +5492,7 @@ var config$3 = { }; Object.freeze(config$3); -const getConfig$1 = () => config$3; +const getConfig = () => config$3; // https://www.w3.org/TR/css-values-4/#math-function const funcList = ['clamp', 'calc']; @@ -5759,6 +5759,13 @@ function* tokenize(stream) { buffer = ''; } break; + case '&': + if (buffer.length > 0) { + yield pushToken(buffer, parseInfo); + buffer = ''; + } + yield pushToken(value, parseInfo); + break; case '<': if (buffer.length > 0) { yield pushToken(buffer, parseInfo); @@ -29581,6 +29588,227 @@ var declarations = { } ] }, + stroke: { + syntax: "", + ast: [ + ] + }, + "stroke-dasharray": { + syntax: "none | ", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "none" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "dasharray" + } + ] + } + ] + }, + "stroke-dashoffset": { + syntax: " | ", + ast: [ + { + typ: 27, + l: [ + { + typ: 2, + val: "length-percentage" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "number" + } + ] + } + ] + }, + "stroke-linecap": { + syntax: "butt | round | square", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "butt" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "round" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 1, + val: "square" + } + ] + } + ] + } + ] + }, + "stroke-linejoin": { + syntax: "miter | miter-clip | round | bevel | arcs", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "miter" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "miter-clip" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "round" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "bevel" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 1, + val: "arcs" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "stroke-miterlimit": { + syntax: "", + ast: [ + { + typ: 2, + val: "number" + } + ] + }, + "stroke-opacity": { + syntax: "", + ast: [ + { + typ: 2, + val: "opacity" + } + ] + }, + "stroke-width": { + syntax: " | ", + ast: [ + { + typ: 27, + l: [ + { + typ: 2, + val: "length-percentage" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "number" + } + ] + } + ] + }, "tab-size": { syntax: " | ", ast: [ @@ -58991,318 +59219,1901 @@ var selectors = { ] } }; -var config$2 = { - declarations: declarations, - functions: functions, - syntaxes: syntaxes, - selectors: selectors -}; - -Object.freeze(config$2); -function getConfig() { - // @ts-ignore - return config$2; -} - -const expressions = [ - exports.EnumToken.DelimTokenType, exports.EnumToken.IncludeMatchTokenType, exports.EnumToken.DashMatchTokenType, - exports.EnumToken.StartMatchTokenType, exports.EnumToken.EndMatchTokenType, exports.EnumToken.ContainMatchTokenType -]; -const selectorTokens = [ - exports.EnumToken.IdenTokenType, exports.EnumToken.ClassSelectorTokenType, exports.EnumToken.AttrTokenType, - exports.EnumToken.PseudoClassTokenType, exports.EnumToken.PseudoClassFuncTokenType, exports.EnumToken.HashTokenType, - exports.EnumToken.UniversalSelectorTokenType -]; -const combinatorTokens = [ - exports.EnumToken.ChildCombinatorTokenType, exports.EnumToken.NextSiblingCombinatorTokenType, - exports.EnumToken.SubsequentSiblingCombinatorTokenType -]; -function validateSelector(selector, options, root) { - if (selector.length == 0) { - return { - valid: ValidationLevel.Drop, - node: null, - error: 'The selector is empty.' - }; - } - return doValidateSelector(selector, options, root); -} -function doValidateSelector(selector, options, root) { - let result; - if (combinatorTokens.includes(selector[0].typ)) { - if (root == null || root.typ == exports.EnumToken.StyleSheetNodeType) { - return { - valid: ValidationLevel.Drop, - node: null, - error: 'The selector cannot start with a combinator.' - }; - } - selector = selector.slice(1); - } - while ((selector?.length ?? 0) > 0) { - result = validateSimpleSelector(selector, options, root); - if (result.valid == ValidationLevel.Drop) { - return { - valid: ValidationLevel.Drop, - node: result.nodes[0] ?? null, - error: result.error - }; - } - if (result.nodes.length == 0) { - return { - valid: result.valid, - node: result.nodes[0] ?? null, - error: result.error - }; - } - selector = result.nodes; - result = validateCombinator(selector); - if (result.valid == ValidationLevel.Drop) { - while (result.valid == ValidationLevel.Drop && selector.length > 0) { - if (selector[0].typ == exports.EnumToken.CommaTokenType) { - selector = consumeWhitespace(selector.slice(1)); - if (selector.length == 0) { - return { - valid: ValidationLevel.Drop, - node: selector[0], - error: 'unexpected token' - }; - } - if (selector.length > 0 && combinatorTokens.includes(selector[0].typ)) { - if (root == null || root.typ == exports.EnumToken.StyleSheetNodeType) { - return { - valid: ValidationLevel.Drop, - node: selector[0], - error: 'Unexpected token' - }; - } - selector = selector.slice(1); - } - result = validateSimpleSelector(selector, options, root); - if (result.valid == ValidationLevel.Drop) { - return { - valid: ValidationLevel.Drop, - node: null, - error: 'Invalid selector' - }; - } - if (result.nodes.length == 0) { - return { - valid: result.valid, - node: null, - error: result.error - }; - } - selector = result.nodes; - result = validateCombinator(selector); - if (result.nodes.length == 0) { - return { - valid: result.valid, - node: null, - error: result.error - }; - } - selector = result.nodes; - } - else { - break; - } - } - } - else { - selector = result.nodes; - } - } - return { - valid: ValidationLevel.Valid, - node: null, - error: '' - }; -} -function consumeWhitespace(selector) { - let i = 0; - while (i < selector.length && - (selector[i].typ == exports.EnumToken.WhitespaceTokenType || - selector[i].typ == exports.EnumToken.CommentTokenType)) { - i++; - } - return selector.slice(i); -} -function validateSimpleSelector(selector, options, root) { - let i = 0; - if (i >= selector.length) { - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i), - error: 'empty selector' - }; - } - if (root?.typ == exports.EnumToken.AtRuleNodeType && null != root.nam.match(/(-[a-zA-Z]+-)?keyframes/)) { - while (i < selector.length) { - if ([exports.EnumToken.PercentageTokenType, exports.EnumToken.CommentTokenType].includes(selector[i].typ)) { - i++; - continue; - } - if ((selector[i].typ == exports.EnumToken.IdenTokenType && ['from', 'to'].includes(selector[i].val))) { - i++; - continue; - } - if (selector[i].typ == exports.EnumToken.CommaTokenType) { - break; - } - return { - valid: ValidationLevel.Drop, - nodes: selector.slice(i), - error: 'invalid selector' - }; - } - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i), - error: 'empty selector' - }; - } - while (i < selector.length && [exports.EnumToken.WhitespaceTokenType, exports.EnumToken.CommentTokenType].includes(selector[i].typ)) { - i++; - } - if (i >= selector.length) { - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i), - error: 'empty selector' - }; - } - if (selectorTokens.includes(selector[i].typ)) { - let result; - if (selector[i].typ == exports.EnumToken.PseudoClassTokenType) { - result = validatePseudoClass(selector[i], options); - if (result.valid != ValidationLevel.Valid) { - return result; - } - } - if (selector[i].typ == exports.EnumToken.PseudoClassFuncTokenType) { - result = validatePseudoClassFunction(selector[i], options); - if (result.valid != ValidationLevel.Valid) { - return result; - } - } - if (selector[i].typ == exports.EnumToken.AttrTokenType) { - result = validateAttributeSelector(selector[i], options); - if (result.valid != ValidationLevel.Valid) { - return result; - } - } - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i + 1), - error: '' - }; - } - if (selector[i].typ == exports.EnumToken.LiteralTokenType && selector[i].val.startsWith('\\')) { - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i + 1), - error: '' - }; - } - if (selector[i].typ == exports.EnumToken.NestingSelectorTokenType && root != null && root.typ != exports.EnumToken.StyleSheetNodeType) { - return { - valid: ValidationLevel.Valid, - nodes: selector.slice(i + 1), - error: 'Compound selector not allowed here' - }; - } - return { - valid: ValidationLevel.Drop, - nodes: selector.slice(i + 1, 1), - error: 'unexpected token' - }; -} -function validatePseudoClass(selector, options) { - const name = selector.val.slice(selector.val[1] == ':' ? 2 : 1); - if (name.match(/^-[a-zA-Z]+-/) || selector.val == ':before' || selector.val == ':after') { - return { - valid: ValidationLevel.Valid, - nodes: [selector], - error: '' - }; - } - const config = getConfig(); - const isValid = selector.val in config.selectors; - return { - valid: isValid || !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, - nodes: [selector], - error: isValid ? '' : 'invalid selector' - }; -} -function validatePseudoClassFunction(selector, options) { - const name = selector.val.slice(1); - if (name.match(/^-[a-zA-Z]+-/)) { - const isValid = name == '-webkit-any' || name == '-moz-any'; - return { - valid: isValid ? ValidationLevel.Valid : ValidationLevel.Drop, - nodes: [selector], - error: isValid ? '' : 'invalid pseudo class' - }; - } - const config = getConfig(); - if (selector.val in config.selectors) { - if (!('chi' in config.selectors[selector.val].ast[0])) { - return { - valid: !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, - nodes: [selector], - error: '' - }; - } - } - else if (!(selector.val + '()' in config.selectors)) { - return { - valid: !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, - nodes: [selector], - error: '' - }; - } - // TODO: validate params - return { - valid: ValidationLevel.Valid, - nodes: [selector], - error: '' - }; -} -function validateAttributeSelector(selector, options) { - let i = 0; - let isMatchExpression = false; - let expression; - while (i < selector.chi.length) { - if ([exports.EnumToken.WhitespaceTokenType, exports.EnumToken.CommentTokenType].includes(selector.chi[i].typ)) { - i++; - continue; - } - if (exports.EnumToken.IdenTokenType == selector.chi[i].typ || - exports.EnumToken.MatchExpressionTokenType == selector.chi[i].typ || - exports.EnumToken.NameSpaceAttributeTokenType == selector.chi[i].typ) { - isMatchExpression = exports.EnumToken.MatchExpressionTokenType == selector.chi[i].typ; - if (isMatchExpression) { - expression = selector.chi[i]; - } - if (exports.EnumToken.NameSpaceAttributeTokenType == selector.chi[i].typ) { - if (selector.chi[i].r.typ != exports.EnumToken.IdenTokenType) { - return { - valid: ValidationLevel.Drop, - nodes: [selector], - error: 'identifier expected' - }; - } - if (selector.chi[i].l != null) { - // @ts-ignore - if (selector.chi[i].l.typ != exports.EnumToken.IdenTokenType && - // @ts-ignore - selector.chi[i].l.typ != exports.EnumToken.LiteralTokenType) { - return { - valid: ValidationLevel.Drop, - nodes: [selector], - error: 'invalid namespace prefix' - }; +var atRules = { + "@charset": { + syntax: "@charset \"\";", + ast: [ + { + typ: 1, + val: "@charset" + }, + { + typ: 20 + }, + { + typ: 33, + val: "\"\"" + }, + { + typ: 1, + val: ";" + } + ] + }, + "@counter-style": { + syntax: "@counter-style {\n [ system: ; ] ||\n [ symbols: ; ] ||\n [ additive-symbols: ; ] ||\n [ negative: ; ] ||\n [ prefix: ; ] ||\n [ suffix: ; ] ||\n [ range: ; ] ||\n [ pad: ; ] ||\n [ speak-as: ; ] ||\n [ fallback: ; ]\n}", + ast: [ + { + typ: 28, + l: [ + { + typ: 1, + val: "@counter-style" + }, + { + typ: 20 + }, + { + typ: 2, + val: "counter-style-name", + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "symbols:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "counter-symbols" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "additive-symbols:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "additive-symbols" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "negative:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "negative-symbol" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "prefix:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "prefix" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "suffix:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "suffix" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "range:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "range" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "pad:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "padding" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "speak-as:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "speak-as" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "fallback:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "counter-style-name" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + }, + { + typ: 15 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "@document": { + syntax: "@document [ | url-prefix() | domain() | media-document() | regexp() ]# {\n \n}", + ast: [ + { + typ: 1, + val: "@document" + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "url" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 18, + val: "url-prefix", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 18, + val: "domain", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 18, + val: "media-document", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 18, + val: "regexp", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ] + } + ] + } + ] + } + ] + } + ], + isList: true, + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@font-palette-values": { + syntax: "@font-palette-values { }", + ast: [ + { + typ: 1, + val: "@font-palette-values" + }, + { + typ: 20 + }, + { + typ: 2, + val: "dashed-ident", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@font-face": { + syntax: "@font-face {\n [ font-family: ; ] ||\n [ src: ; ] ||\n [ unicode-range: ; ] ||\n [ font-variant: ; ] ||\n [ font-feature-settings: ; ] ||\n [ font-variation-settings: ; ] ||\n [ font-stretch: ; ] ||\n [ font-weight: ; ] ||\n [ font-style: ; ] ||\n [ size-adjust: ; ] ||\n [ ascent-override: ; ] ||\n [ descent-override: ; ] ||\n [ line-gap-override: ; ]\n}", + ast: [ + { + typ: 28, + l: [ + { + typ: 1, + val: "@font-face", + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "src:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "src" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "unicode-range:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "unicode-range" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-variant:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-variant" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-feature-settings:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-feature-settings" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-variation-settings:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-variation-settings" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-stretch:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-stretch" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-weight:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-weight" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-style:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-style" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "size-adjust:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "size-adjust" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "ascent-override:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "ascent-override" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "descent-override:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "descent-override" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "line-gap-override:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "line-gap-override" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + }, + { + typ: 15 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "@font-feature-values": { + syntax: "@font-feature-values # {\n \n}", + ast: [ + { + typ: 1, + val: "@font-feature-values" + }, + { + typ: 20 + }, + { + typ: 2, + val: "family-name", + isList: true, + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@import": { + syntax: "@import [ | ]\n [ layer | layer() ]?\n [ supports( [ | ] ) ]?\n ? ;", + ast: [ + { + typ: 1, + val: "@import" + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "string" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "url" + }, + { + typ: 20 + } + ] + } + ] + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "layer" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 18, + val: "layer", + chi: [ + { + typ: 2, + val: "layer-name" + } + ] + }, + { + typ: 20 + } + ] + } + ], + isOptional: true + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 18, + val: "supports", + chi: [ + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "supports-condition" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "declaration" + }, + { + typ: 20 + } + ] + } + ] + } + ] + } + ], + isOptional: true + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 2, + val: "media-query-list", + isOptional: true + }, + { + typ: 20 + }, + { + typ: 1, + val: ";" + } + ] + }, + "@keyframes": { + syntax: "@keyframes {\n \n}", + ast: [ + { + typ: 1, + val: "@keyframes" + }, + { + typ: 20 + }, + { + typ: 2, + val: "keyframes-name", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@layer": { + syntax: "@layer [ # | ? {\n \n} ]", + ast: [ + { + typ: 1, + val: "@layer" + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "layer-name", + isList: true + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "layer-name", + isOptional: true, + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + } + ] + } + ] + } + ] + }, + "@media": { + syntax: "@media {\n \n}", + ast: [ + { + typ: 1, + val: "@media" + }, + { + typ: 20 + }, + { + typ: 2, + val: "media-query-list", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@namespace": { + syntax: "@namespace ? [ | ];", + ast: [ + { + typ: 1, + val: "@namespace" + }, + { + typ: 20 + }, + { + typ: 2, + val: "namespace-prefix", + isOptional: true + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "string" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "url" + }, + { + typ: 20 + } + ] + } + ] + }, + { + typ: 1, + val: ";" + } + ] + }, + "@page": { + syntax: "@page {\n \n}", + ast: [ + { + typ: 1, + val: "@page" + }, + { + typ: 20 + }, + { + typ: 2, + val: "page-selector-list", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@position-try": { + syntax: "@position-try {\n \n}", + ast: [ + { + typ: 1, + val: "@position-try" + }, + { + typ: 20 + }, + { + typ: 2, + val: "dashed-ident", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@property": { + syntax: "@property {\n \n}", + ast: [ + { + typ: 1, + val: "@property" + }, + { + typ: 20 + }, + { + typ: 2, + val: "custom-property-name", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@scope": { + syntax: "@scope [()]? [to ()]? {\n \n}", + ast: [ + { + typ: 1, + val: "@scope" + }, + { + typ: 20 + }, + { + typ: 18, + chi: [ + { + typ: 2, + val: "scope-start" + } + ], + isOptional: true + }, + { + typ: 20 + }, + { + typ: 1, + val: "to" + }, + { + typ: 18, + chi: [ + { + typ: 2, + val: "scope-end" + } + ], + isOptional: true, + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@starting-style": { + syntax: "@starting-style {\n | \n}", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "@starting-style", + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "group-rule-body" + }, + { + typ: 20 + }, + { + typ: 15 + } + ] + } + ] + }, + "@supports": { + syntax: "@supports {\n \n}", + ast: [ + { + typ: 1, + val: "@supports" + }, + { + typ: 20 + }, + { + typ: 2, + val: "supports-condition", + occurence: { + min: 0, + max: 0 + } + } + ] + } +}; +var config$2 = { + declarations: declarations, + functions: functions, + syntaxes: syntaxes, + selectors: selectors, + atRules: atRules +}; + +Object.freeze(config$2); +function getSyntaxConfig() { + // @ts-ignore + return config$2; +} + +const expressions = [ + exports.EnumToken.DelimTokenType, exports.EnumToken.IncludeMatchTokenType, exports.EnumToken.DashMatchTokenType, + exports.EnumToken.StartMatchTokenType, exports.EnumToken.EndMatchTokenType, exports.EnumToken.ContainMatchTokenType +]; +const selectorTokens = [ + exports.EnumToken.IdenTokenType, exports.EnumToken.ClassSelectorTokenType, exports.EnumToken.AttrTokenType, + exports.EnumToken.PseudoClassTokenType, exports.EnumToken.PseudoClassFuncTokenType, exports.EnumToken.HashTokenType, + exports.EnumToken.UniversalSelectorTokenType +]; +const combinatorTokens = [ + exports.EnumToken.ChildCombinatorTokenType, exports.EnumToken.NextSiblingCombinatorTokenType, + exports.EnumToken.SubsequentSiblingCombinatorTokenType +]; +function validateSelector(selector, options, root) { + if (selector.length == 0) { + return { + valid: ValidationLevel.Drop, + node: null, + error: 'The selector is empty.' + }; + } + return doValidateSelector(selector, options, root); +} +function doValidateSelector(selector, options, root) { + let result; + if (combinatorTokens.includes(selector[0].typ)) { + if (root == null || root.typ == exports.EnumToken.StyleSheetNodeType) { + return { + valid: ValidationLevel.Drop, + node: null, + error: 'The selector cannot start with a combinator.' + }; + } + selector = selector.slice(1); + } + while ((selector?.length ?? 0) > 0) { + result = validateSimpleSelector(selector, options, root); + if (result.valid == ValidationLevel.Drop) { + return { + valid: ValidationLevel.Drop, + node: result.nodes[0] ?? null, + error: result.error + }; + } + if (result.nodes.length == 0) { + return { + valid: result.valid, + node: result.nodes[0] ?? null, + error: result.error + }; + } + selector = result.nodes; + result = validateCombinator(selector); + if (result.valid == ValidationLevel.Drop) { + while (result.valid == ValidationLevel.Drop && selector.length > 0) { + if (selector[0].typ == exports.EnumToken.CommaTokenType) { + selector = consumeWhitespace(selector.slice(1)); + if (selector.length == 0) { + return { + valid: ValidationLevel.Drop, + node: selector[0], + error: 'unexpected token' + }; + } + if (selector.length > 0 && combinatorTokens.includes(selector[0].typ)) { + if (root == null || root.typ == exports.EnumToken.StyleSheetNodeType) { + return { + valid: ValidationLevel.Drop, + node: selector[0], + error: 'Unexpected token' + }; + } + selector = selector.slice(1); + } + result = validateSimpleSelector(selector, options, root); + if (result.valid == ValidationLevel.Drop) { + return { + valid: ValidationLevel.Drop, + node: null, + error: 'Invalid selector' + }; + } + if (result.nodes.length == 0) { + return { + valid: result.valid, + node: null, + error: result.error + }; + } + selector = result.nodes; + result = validateCombinator(selector); + if (result.nodes.length == 0) { + return { + valid: result.valid, + node: null, + error: result.error + }; + } + selector = result.nodes; + } + else { + break; + } + } + } + else { + selector = result.nodes; + } + } + return { + valid: ValidationLevel.Valid, + node: null, + error: '' + }; +} +function consumeWhitespace(selector) { + let i = 0; + while (i < selector.length && + (selector[i].typ == exports.EnumToken.WhitespaceTokenType || + selector[i].typ == exports.EnumToken.CommentTokenType)) { + i++; + } + return selector.slice(i); +} +function validateSimpleSelector(selector, options, root) { + let i = 0; + if (i >= selector.length) { + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i), + error: 'empty selector' + }; + } + if (root?.typ == exports.EnumToken.AtRuleNodeType && null != root.nam.match(/(-[a-zA-Z]+-)?keyframes/)) { + while (i < selector.length) { + if ([exports.EnumToken.PercentageTokenType, exports.EnumToken.CommentTokenType].includes(selector[i].typ)) { + i++; + continue; + } + if ((selector[i].typ == exports.EnumToken.IdenTokenType && ['from', 'to'].includes(selector[i].val))) { + i++; + continue; + } + if (selector[i].typ == exports.EnumToken.CommaTokenType) { + break; + } + return { + valid: ValidationLevel.Drop, + nodes: selector.slice(i), + error: 'invalid selector' + }; + } + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i), + error: 'empty selector' + }; + } + while (i < selector.length && [exports.EnumToken.WhitespaceTokenType, exports.EnumToken.CommentTokenType].includes(selector[i].typ)) { + i++; + } + if (i >= selector.length) { + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i), + error: 'empty selector' + }; + } + if (selectorTokens.includes(selector[i].typ)) { + let result; + if (selector[i].typ == exports.EnumToken.PseudoClassTokenType) { + result = validatePseudoClass(selector[i], options); + if (result.valid != ValidationLevel.Valid) { + return result; + } + } + if (selector[i].typ == exports.EnumToken.PseudoClassFuncTokenType) { + result = validatePseudoClassFunction(selector[i], options); + if (result.valid != ValidationLevel.Valid) { + return result; + } + } + if (selector[i].typ == exports.EnumToken.AttrTokenType) { + result = validateAttributeSelector(selector[i], options); + if (result.valid != ValidationLevel.Valid) { + return result; + } + } + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i + 1), + error: '' + }; + } + if (selector[i].typ == exports.EnumToken.LiteralTokenType && selector[i].val.startsWith('\\')) { + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i + 1), + error: '' + }; + } + if (selector[i].typ == exports.EnumToken.NestingSelectorTokenType && root != null && root.typ != exports.EnumToken.StyleSheetNodeType) { + return { + valid: ValidationLevel.Valid, + nodes: selector.slice(i + 1), + error: 'Compound selector not allowed here' + }; + } + return { + valid: ValidationLevel.Drop, + nodes: selector.slice(i + 1, 1), + error: 'unexpected token' + }; +} +function validatePseudoClass(selector, options) { + const name = selector.val.slice(selector.val[1] == ':' ? 2 : 1); + if (name.match(/^-[a-zA-Z]+-/) || selector.val == ':before' || selector.val == ':after') { + return { + valid: ValidationLevel.Valid, + nodes: [selector], + error: '' + }; + } + const config = getSyntaxConfig(); + const isValid = selector.val in config.selectors; + return { + valid: isValid || !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, + nodes: [selector], + error: isValid ? '' : 'invalid selector' + }; +} +function validatePseudoClassFunction(selector, options) { + const name = selector.val.slice(1); + if (name.match(/^-[a-zA-Z]+-/)) { + const isValid = name == '-webkit-any' || name == '-moz-any'; + return { + valid: isValid ? ValidationLevel.Valid : ValidationLevel.Drop, + nodes: [selector], + error: isValid ? '' : 'invalid pseudo class' + }; + } + const config = getSyntaxConfig(); + if (selector.val in config.selectors) { + if (!('chi' in config.selectors[selector.val].ast[0])) { + return { + valid: !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, + nodes: [selector], + error: '' + }; + } + } + else if (!(selector.val + '()' in config.selectors)) { + return { + valid: !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, + nodes: [selector], + error: '' + }; + } + // TODO: validate params + return { + valid: ValidationLevel.Valid, + nodes: [selector], + error: '' + }; +} +function validateAttributeSelector(selector, options) { + let i = 0; + let isMatchExpression = false; + let expression; + while (i < selector.chi.length) { + if ([exports.EnumToken.WhitespaceTokenType, exports.EnumToken.CommentTokenType].includes(selector.chi[i].typ)) { + i++; + continue; + } + if (exports.EnumToken.IdenTokenType == selector.chi[i].typ || + exports.EnumToken.MatchExpressionTokenType == selector.chi[i].typ || + exports.EnumToken.NameSpaceAttributeTokenType == selector.chi[i].typ) { + isMatchExpression = exports.EnumToken.MatchExpressionTokenType == selector.chi[i].typ; + if (isMatchExpression) { + expression = selector.chi[i]; + } + if (exports.EnumToken.NameSpaceAttributeTokenType == selector.chi[i].typ) { + if (selector.chi[i].r.typ != exports.EnumToken.IdenTokenType) { + return { + valid: ValidationLevel.Drop, + nodes: [selector], + error: 'identifier expected' + }; + } + if (selector.chi[i].l != null) { + // @ts-ignore + if (selector.chi[i].l.typ != exports.EnumToken.IdenTokenType && + // @ts-ignore + selector.chi[i].l.typ != exports.EnumToken.LiteralTokenType) { + return { + valid: ValidationLevel.Drop, + nodes: [selector], + error: 'invalid namespace prefix' + }; } if ( // @ts-ignore @@ -60871,7 +62682,67 @@ function expandRule(node) { } } else { - rule.sel = replaceCompound(rule.sel, ast.sel); + let childSelectorCompund = []; + let withCompound = []; + let withoutCompound = []; + const rules = splitRule(ast.sel); + for (const sel of (rule.raw ?? splitRule(rule.sel))) { + const s = sel.join(''); + if (s.includes('&')) { + if (s.indexOf('&', 1) == -1) { + if (s.at(0) == '&') { + if (s.at(1) == ' ') { + childSelectorCompund.push(s.slice(2)); + } + else { + if (s == '&') { + withCompound.push(s); + } + else { + withoutCompound.push(s.slice(1)); + } + } + } + } + else { + withCompound.push(s); + } + } + else { + withoutCompound.push(s); + } + } + const selectors = []; + const selector = rules.length > 1 ? ':is(' + rules.map(a => a.join('')).join(',') + ')' : rules[0].join(''); + if (childSelectorCompund.length > 0) { + if (childSelectorCompund.length == 1) { + selectors.push(replaceCompound('& ' + childSelectorCompund[0].trim(), selector)); + } + else { + selectors.push(replaceCompound('& :is(' + childSelectorCompund.reduce((acc, curr) => acc + (acc.length > 0 ? ',' : '') + curr.trim(), '') + ')', selector)); + } + } + if (withoutCompound.length > 0) { + if (withoutCompound.length == 1) { + const useIs = rules.length == 1 && selector.match(/^[a-zA-Z.:]/) != null && selector.includes(' ') && withoutCompound.length == 1 && withoutCompound[0].match(/^[a-zA-Z]+$/) != null; + const compound = useIs ? ':is(&)' : '&'; + selectors.push(replaceCompound(rules.length == 1 ? (useIs ? withoutCompound[0] + ':is(&)' : (selector.match(/^[.:]/) && withoutCompound[0].match(/^[a-zA-Z]+$/) ? withoutCompound[0] + compound : compound + withoutCompound[0])) : (withoutCompound[0].match(/^[a-zA-Z:]+$/) ? withoutCompound[0].trim() + compound : '&' + (withoutCompound[0].match(/^\S+$/) ? withoutCompound[0].trim() : ':is(' + withoutCompound[0].trim() + ')')), selector)); + } + else { + selectors.push(replaceCompound('&:is(' + withoutCompound.reduce((acc, curr) => acc + (acc.length > 0 ? ',' : '') + curr.trim(), '') + ')', selector)); + } + } + if (withCompound.length > 0) { + if (withCompound.length == 1) { + selectors.push(replaceCompound(withCompound[0], selector)); + } + else { + for (const w of withCompound) { + selectors.push(replaceCompound(w, selector)); + } + } + } + rule.sel = selectors.reduce((acc, curr) => curr.length == 0 ? acc : acc + (acc.length > 0 ? ',' : '') + curr, ''); } ast.chi.splice(i--, 1); result.push(...expandRule(rule)); @@ -60998,6 +62869,11 @@ var ValidationTokenEnum; ValidationTokenEnum[ValidationTokenEnum["PseudoClassToken"] = 31] = "PseudoClassToken"; ValidationTokenEnum[ValidationTokenEnum["PseudoClassFunctionToken"] = 32] = "PseudoClassFunctionToken"; ValidationTokenEnum[ValidationTokenEnum["StringToken"] = 33] = "StringToken"; + ValidationTokenEnum[ValidationTokenEnum["AtRuleDefinition"] = 34] = "AtRuleDefinition"; + ValidationTokenEnum[ValidationTokenEnum["DeclarationNameToken"] = 35] = "DeclarationNameToken"; + ValidationTokenEnum[ValidationTokenEnum["DeclarationDefinitionToken"] = 36] = "DeclarationDefinitionToken"; + ValidationTokenEnum[ValidationTokenEnum["SemiColon"] = 37] = "SemiColon"; + ValidationTokenEnum[ValidationTokenEnum["Character"] = 38] = "Character"; })(ValidationTokenEnum || (ValidationTokenEnum = {})); [ @@ -61009,7 +62885,7 @@ var ValidationTokenEnum; ValidationTokenEnum.OpenCurlyBrace ]; -const config$1 = getConfig(); +const config$1 = getSyntaxConfig(); class ComputePrefixFeature { static get ordering() { return 2; @@ -61437,7 +63313,7 @@ class PropertySet { } } -const propertiesConfig = getConfig$1(); +const propertiesConfig = getConfig(); class PropertyMap { config; declarations; @@ -62045,7 +63921,7 @@ class PropertyMap { } } -const config = getConfig$1(); +const config = getConfig(); class PropertyList { options = { removeDuplicateDeclarations: true, computeShorthand: true }; declarations; @@ -63343,12 +65219,25 @@ async function load(url, currentFile) { return matchUrl.test(resolved.absolute) ? fetch(resolved.absolute).then(parseResponse) : promises.readFile(resolved.absolute, { encoding: 'utf-8' }); } +/** + * entry point for node and other runtimes + * @module + */ +/** + * render ast node + */ function render(data, options = {}) { return doRender(data, Object.assign(options, { load, resolve, dirname, cwd: options.cwd ?? process.cwd() })); } +/** + * parse css + */ async function parse(iterator, opt = {}) { return doParse(iterator, Object.assign(opt, { load, resolve, dirname, cwd: opt.cwd ?? process.cwd() })); } +/** + * parse and render css + */ async function transform(css, options = {}) { options = { minify: true, removeEmpty: true, removeCharset: true, ...options }; const startTime = performance.now(); diff --git a/dist/index.d.ts b/dist/index.d.ts index d4ad408..44dc6df 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1013,8 +1013,22 @@ declare function resolve(url: string, currentDirectory: string, cwd?: string): { declare function load(url: string, currentFile: string): Promise; +/** + * entry point for node and other runtimes + * @module + */ + +/** + * render ast node + */ declare function render(data: AstNode, options?: RenderOptions): RenderResult; +/** + * parse css + */ declare function parse(iterator: string, opt?: ParserOptions): Promise; +/** + * parse and render css + */ declare function transform(css: string, options?: TransformOptions): Promise; export { EnumToken, dirname, expand, load, minify, parse, parseString, parseTokens, render, renderToken, resolve, transform, walk, walkValues }; diff --git a/dist/lib/ast/expand.js b/dist/lib/ast/expand.js index 950362d..4df8b28 100644 --- a/dist/lib/ast/expand.js +++ b/dist/lib/ast/expand.js @@ -72,7 +72,67 @@ function expandRule(node) { } } else { - rule.sel = replaceCompound(rule.sel, ast.sel); + let childSelectorCompund = []; + let withCompound = []; + let withoutCompound = []; + const rules = splitRule(ast.sel); + for (const sel of (rule.raw ?? splitRule(rule.sel))) { + const s = sel.join(''); + if (s.includes('&')) { + if (s.indexOf('&', 1) == -1) { + if (s.at(0) == '&') { + if (s.at(1) == ' ') { + childSelectorCompund.push(s.slice(2)); + } + else { + if (s == '&') { + withCompound.push(s); + } + else { + withoutCompound.push(s.slice(1)); + } + } + } + } + else { + withCompound.push(s); + } + } + else { + withoutCompound.push(s); + } + } + const selectors = []; + const selector = rules.length > 1 ? ':is(' + rules.map(a => a.join('')).join(',') + ')' : rules[0].join(''); + if (childSelectorCompund.length > 0) { + if (childSelectorCompund.length == 1) { + selectors.push(replaceCompound('& ' + childSelectorCompund[0].trim(), selector)); + } + else { + selectors.push(replaceCompound('& :is(' + childSelectorCompund.reduce((acc, curr) => acc + (acc.length > 0 ? ',' : '') + curr.trim(), '') + ')', selector)); + } + } + if (withoutCompound.length > 0) { + if (withoutCompound.length == 1) { + const useIs = rules.length == 1 && selector.match(/^[a-zA-Z.:]/) != null && selector.includes(' ') && withoutCompound.length == 1 && withoutCompound[0].match(/^[a-zA-Z]+$/) != null; + const compound = useIs ? ':is(&)' : '&'; + selectors.push(replaceCompound(rules.length == 1 ? (useIs ? withoutCompound[0] + ':is(&)' : (selector.match(/^[.:]/) && withoutCompound[0].match(/^[a-zA-Z]+$/) ? withoutCompound[0] + compound : compound + withoutCompound[0])) : (withoutCompound[0].match(/^[a-zA-Z:]+$/) ? withoutCompound[0].trim() + compound : '&' + (withoutCompound[0].match(/^\S+$/) ? withoutCompound[0].trim() : ':is(' + withoutCompound[0].trim() + ')')), selector)); + } + else { + selectors.push(replaceCompound('&:is(' + withoutCompound.reduce((acc, curr) => acc + (acc.length > 0 ? ',' : '') + curr.trim(), '') + ')', selector)); + } + } + if (withCompound.length > 0) { + if (withCompound.length == 1) { + selectors.push(replaceCompound(withCompound[0], selector)); + } + else { + for (const w of withCompound) { + selectors.push(replaceCompound(w, selector)); + } + } + } + rule.sel = selectors.reduce((acc, curr) => curr.length == 0 ? acc : acc + (acc.length > 0 ? ',' : '') + curr, ''); } ast.chi.splice(i--, 1); result.push(...expandRule(rule)); diff --git a/dist/lib/ast/features/prefix.js b/dist/lib/ast/features/prefix.js index a4d4abb..c79827a 100644 --- a/dist/lib/ast/features/prefix.js +++ b/dist/lib/ast/features/prefix.js @@ -1,10 +1,10 @@ import { EnumToken } from '../types.js'; -import { getConfig } from '../../validation/config.js'; -import { walkValues } from '../walk.js'; +import { getSyntaxConfig } from '../../validation/config.js'; import { ValidationTokenEnum } from '../../validation/parser/types.js'; import '../../validation/parser/parse.js'; +import { walkValues } from '../walk.js'; -const config = getConfig(); +const config = getSyntaxConfig(); class ComputePrefixFeature { static get ordering() { return 2; diff --git a/dist/lib/parser/tokenize.js b/dist/lib/parser/tokenize.js index 0cf0551..c24d6aa 100644 --- a/dist/lib/parser/tokenize.js +++ b/dist/lib/parser/tokenize.js @@ -187,6 +187,13 @@ function* tokenize(stream) { buffer = ''; } break; + case '&': + if (buffer.length > 0) { + yield pushToken(buffer, parseInfo); + buffer = ''; + } + yield pushToken(value, parseInfo); + break; case '<': if (buffer.length > 0) { yield pushToken(buffer, parseInfo); diff --git a/dist/lib/validation/config.js b/dist/lib/validation/config.js index a75cf03..fe1ef3c 100644 --- a/dist/lib/validation/config.js +++ b/dist/lib/validation/config.js @@ -1,9 +1,9 @@ import config from './config.json.js'; Object.freeze(config); -function getConfig() { +function getSyntaxConfig() { // @ts-ignore return config; } -export { getConfig }; +export { getSyntaxConfig }; diff --git a/dist/lib/validation/config.json.js b/dist/lib/validation/config.json.js index 63ba4d1..6c4507e 100644 --- a/dist/lib/validation/config.json.js +++ b/dist/lib/validation/config.json.js @@ -23463,6 +23463,227 @@ var declarations = { } ] }, + stroke: { + syntax: "", + ast: [ + ] + }, + "stroke-dasharray": { + syntax: "none | ", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "none" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "dasharray" + } + ] + } + ] + }, + "stroke-dashoffset": { + syntax: " | ", + ast: [ + { + typ: 27, + l: [ + { + typ: 2, + val: "length-percentage" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "number" + } + ] + } + ] + }, + "stroke-linecap": { + syntax: "butt | round | square", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "butt" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "round" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 1, + val: "square" + } + ] + } + ] + } + ] + }, + "stroke-linejoin": { + syntax: "miter | miter-clip | round | bevel | arcs", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "miter" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "miter-clip" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "round" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "bevel" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 1, + val: "arcs" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "stroke-miterlimit": { + syntax: "", + ast: [ + { + typ: 2, + val: "number" + } + ] + }, + "stroke-opacity": { + syntax: "", + ast: [ + { + typ: 2, + val: "opacity" + } + ] + }, + "stroke-width": { + syntax: " | ", + ast: [ + { + typ: 27, + l: [ + { + typ: 2, + val: "length-percentage" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "number" + } + ] + } + ] + }, "tab-size": { syntax: " | ", ast: [ @@ -52873,11 +53094,1594 @@ var selectors = { ] } }; +var atRules = { + "@charset": { + syntax: "@charset \"\";", + ast: [ + { + typ: 1, + val: "@charset" + }, + { + typ: 20 + }, + { + typ: 33, + val: "\"\"" + }, + { + typ: 1, + val: ";" + } + ] + }, + "@counter-style": { + syntax: "@counter-style {\n [ system: ; ] ||\n [ symbols: ; ] ||\n [ additive-symbols: ; ] ||\n [ negative: ; ] ||\n [ prefix: ; ] ||\n [ suffix: ; ] ||\n [ range: ; ] ||\n [ pad: ; ] ||\n [ speak-as: ; ] ||\n [ fallback: ; ]\n}", + ast: [ + { + typ: 28, + l: [ + { + typ: 1, + val: "@counter-style" + }, + { + typ: 20 + }, + { + typ: 2, + val: "counter-style-name", + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "symbols:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "counter-symbols" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "additive-symbols:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "additive-symbols" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "negative:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "negative-symbol" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "prefix:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "prefix" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "suffix:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "suffix" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "range:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "range" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "pad:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "padding" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "speak-as:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "speak-as" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "fallback:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "counter-style-name" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + }, + { + typ: 15 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "@document": { + syntax: "@document [ | url-prefix() | domain() | media-document() | regexp() ]# {\n \n}", + ast: [ + { + typ: 1, + val: "@document" + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "url" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 18, + val: "url-prefix", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 18, + val: "domain", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 18, + val: "media-document", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 18, + val: "regexp", + chi: [ + { + typ: 2, + val: "string" + } + ] + }, + { + typ: 20 + } + ] + } + ] + } + ] + } + ] + } + ], + isList: true, + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@font-palette-values": { + syntax: "@font-palette-values { }", + ast: [ + { + typ: 1, + val: "@font-palette-values" + }, + { + typ: 20 + }, + { + typ: 2, + val: "dashed-ident", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@font-face": { + syntax: "@font-face {\n [ font-family: ; ] ||\n [ src: ; ] ||\n [ unicode-range: ; ] ||\n [ font-variant: ; ] ||\n [ font-feature-settings: ; ] ||\n [ font-variation-settings: ; ] ||\n [ font-stretch: ; ] ||\n [ font-weight: ; ] ||\n [ font-style: ; ] ||\n [ size-adjust: ; ] ||\n [ ascent-override: ; ] ||\n [ descent-override: ; ] ||\n [ line-gap-override: ; ]\n}", + ast: [ + { + typ: 28, + l: [ + { + typ: 1, + val: "@font-face", + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "src:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "src" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "unicode-range:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "unicode-range" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-variant:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-variant" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-feature-settings:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-feature-settings" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-variation-settings:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-variation-settings" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-stretch:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-stretch" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-weight:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-weight" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "font-style:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "font-style" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "size-adjust:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "size-adjust" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "ascent-override:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "ascent-override" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 28, + l: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "descent-override:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "descent-override" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 1, + val: "line-gap-override:" + }, + { + typ: 20 + }, + { + typ: 2, + val: "line-gap-override" + }, + { + typ: 1, + val: ";" + } + ] + }, + { + typ: 20 + }, + { + typ: 15 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "@font-feature-values": { + syntax: "@font-feature-values # {\n \n}", + ast: [ + { + typ: 1, + val: "@font-feature-values" + }, + { + typ: 20 + }, + { + typ: 2, + val: "family-name", + isList: true, + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@import": { + syntax: "@import [ | ]\n [ layer | layer() ]?\n [ supports( [ | ] ) ]?\n ? ;", + ast: [ + { + typ: 1, + val: "@import" + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "string" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "url" + }, + { + typ: 20 + } + ] + } + ] + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 1, + val: "layer" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 18, + val: "layer", + chi: [ + { + typ: 2, + val: "layer-name" + } + ] + }, + { + typ: 20 + } + ] + } + ], + isOptional: true + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 18, + val: "supports", + chi: [ + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "supports-condition" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "declaration" + }, + { + typ: 20 + } + ] + } + ] + } + ] + } + ], + isOptional: true + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 2, + val: "media-query-list", + isOptional: true + }, + { + typ: 20 + }, + { + typ: 1, + val: ";" + } + ] + }, + "@keyframes": { + syntax: "@keyframes {\n \n}", + ast: [ + { + typ: 1, + val: "@keyframes" + }, + { + typ: 20 + }, + { + typ: 2, + val: "keyframes-name", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@layer": { + syntax: "@layer [ # | ? {\n \n} ]", + ast: [ + { + typ: 1, + val: "@layer" + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "layer-name", + isList: true + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "layer-name", + isOptional: true, + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + }, + { + typ: 20 + }, + { + typ: 20 + } + ] + } + ] + } + ] + }, + "@media": { + syntax: "@media {\n \n}", + ast: [ + { + typ: 1, + val: "@media" + }, + { + typ: 20 + }, + { + typ: 2, + val: "media-query-list", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@namespace": { + syntax: "@namespace ? [ | ];", + ast: [ + { + typ: 1, + val: "@namespace" + }, + { + typ: 20 + }, + { + typ: 2, + val: "namespace-prefix", + isOptional: true + }, + { + typ: 20 + }, + { + typ: 22, + chi: [ + { + typ: 27, + l: [ + { + typ: 20 + }, + { + typ: 2, + val: "string" + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "url" + }, + { + typ: 20 + } + ] + } + ] + }, + { + typ: 1, + val: ";" + } + ] + }, + "@page": { + syntax: "@page {\n \n}", + ast: [ + { + typ: 1, + val: "@page" + }, + { + typ: 20 + }, + { + typ: 2, + val: "page-selector-list", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@position-try": { + syntax: "@position-try {\n \n}", + ast: [ + { + typ: 1, + val: "@position-try" + }, + { + typ: 20 + }, + { + typ: 2, + val: "dashed-ident", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@property": { + syntax: "@property {\n \n}", + ast: [ + { + typ: 1, + val: "@property" + }, + { + typ: 20 + }, + { + typ: 2, + val: "custom-property-name", + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@scope": { + syntax: "@scope [()]? [to ()]? {\n \n}", + ast: [ + { + typ: 1, + val: "@scope" + }, + { + typ: 20 + }, + { + typ: 18, + chi: [ + { + typ: 2, + val: "scope-start" + } + ], + isOptional: true + }, + { + typ: 20 + }, + { + typ: 1, + val: "to" + }, + { + typ: 18, + chi: [ + { + typ: 2, + val: "scope-end" + } + ], + isOptional: true, + occurence: { + min: 0, + max: 0 + } + } + ] + }, + "@starting-style": { + syntax: "@starting-style {\n | \n}", + ast: [ + { + typ: 27, + l: [ + { + typ: 1, + val: "@starting-style", + occurence: { + min: 0, + max: 0 + } + }, + { + typ: 20 + } + ], + r: [ + { + typ: 20 + }, + { + typ: 2, + val: "group-rule-body" + }, + { + typ: 20 + }, + { + typ: 15 + } + ] + } + ] + }, + "@supports": { + syntax: "@supports {\n \n}", + ast: [ + { + typ: 1, + val: "@supports" + }, + { + typ: 20 + }, + { + typ: 2, + val: "supports-condition", + occurence: { + min: 0, + max: 0 + } + } + ] + } +}; var config = { declarations: declarations, functions: functions, syntaxes: syntaxes, - selectors: selectors + selectors: selectors, + atRules: atRules }; -export { declarations, config as default, functions, selectors, syntaxes }; +export { atRules, declarations, config as default, functions, selectors, syntaxes }; diff --git a/dist/lib/validation/parser/types.js b/dist/lib/validation/parser/types.js index 0881096..b0c3710 100644 --- a/dist/lib/validation/parser/types.js +++ b/dist/lib/validation/parser/types.js @@ -34,6 +34,11 @@ var ValidationTokenEnum; ValidationTokenEnum[ValidationTokenEnum["PseudoClassToken"] = 31] = "PseudoClassToken"; ValidationTokenEnum[ValidationTokenEnum["PseudoClassFunctionToken"] = 32] = "PseudoClassFunctionToken"; ValidationTokenEnum[ValidationTokenEnum["StringToken"] = 33] = "StringToken"; + ValidationTokenEnum[ValidationTokenEnum["AtRuleDefinition"] = 34] = "AtRuleDefinition"; + ValidationTokenEnum[ValidationTokenEnum["DeclarationNameToken"] = 35] = "DeclarationNameToken"; + ValidationTokenEnum[ValidationTokenEnum["DeclarationDefinitionToken"] = 36] = "DeclarationDefinitionToken"; + ValidationTokenEnum[ValidationTokenEnum["SemiColon"] = 37] = "SemiColon"; + ValidationTokenEnum[ValidationTokenEnum["Character"] = 38] = "Character"; })(ValidationTokenEnum || (ValidationTokenEnum = {})); export { ValidationTokenEnum }; diff --git a/dist/lib/validation/selector.js b/dist/lib/validation/selector.js index a40663b..d36acf5 100644 --- a/dist/lib/validation/selector.js +++ b/dist/lib/validation/selector.js @@ -4,7 +4,7 @@ import '../parser/parse.js'; import '../renderer/color/utils/constants.js'; import '../renderer/sourcemap/lib/encode.js'; import '../parser/utils/config.js'; -import { getConfig } from './config.js'; +import { getSyntaxConfig } from './config.js'; const expressions = [ EnumToken.DelimTokenType, EnumToken.IncludeMatchTokenType, EnumToken.DashMatchTokenType, @@ -229,7 +229,7 @@ function validatePseudoClass(selector, options) { error: '' }; } - const config = getConfig(); + const config = getSyntaxConfig(); const isValid = selector.val in config.selectors; return { valid: isValid || !options.validation ? ValidationLevel.Valid : ValidationLevel.Drop, @@ -247,7 +247,7 @@ function validatePseudoClassFunction(selector, options) { error: isValid ? '' : 'invalid pseudo class' }; } - const config = getConfig(); + const config = getSyntaxConfig(); if (selector.val in config.selectors) { if (!('chi' in config.selectors[selector.val].ast[0])) { return { diff --git a/dist/node/index.js b/dist/node/index.js index 4251292..1386e59 100644 --- a/dist/node/index.js +++ b/dist/node/index.js @@ -9,15 +9,31 @@ import { doParse } from '../lib/parser/parse.js'; export { parseString, parseTokens } from '../lib/parser/parse.js'; import '../lib/renderer/color/utils/constants.js'; import '../lib/parser/utils/config.js'; +import '../lib/validation/config.js'; +import '../lib/validation/parser/types.js'; +import '../lib/validation/parser/parse.js'; import { resolve, dirname } from '../lib/fs/resolve.js'; import { load } from './load.js'; +/** + * entry point for node and other runtimes + * @module + */ +/** + * render ast node + */ function render(data, options = {}) { return doRender(data, Object.assign(options, { load, resolve, dirname, cwd: options.cwd ?? process.cwd() })); } +/** + * parse css + */ async function parse(iterator, opt = {}) { return doParse(iterator, Object.assign(opt, { load, resolve, dirname, cwd: opt.cwd ?? process.cwd() })); } +/** + * parse and render css + */ async function transform(css, options = {}) { options = { minify: true, removeEmpty: true, removeCharset: true, ...options }; const startTime = performance.now(); diff --git a/dist/web/index.js b/dist/web/index.js index 4b056f0..9c31590 100644 --- a/dist/web/index.js +++ b/dist/web/index.js @@ -8,9 +8,15 @@ import { doParse } from '../lib/parser/parse.js'; export { parseString, parseTokens } from '../lib/parser/parse.js'; import '../lib/renderer/color/utils/constants.js'; import '../lib/parser/utils/config.js'; +import '../lib/validation/config.js'; +import '../lib/validation/parser/types.js'; +import '../lib/validation/parser/parse.js'; import { resolve, dirname } from '../lib/fs/resolve.js'; import { load } from './load.js'; +/** + * render ast node + */ function render(data, options = {}) { return doRender(data, Object.assign(options, { load, @@ -19,6 +25,9 @@ function render(data, options = {}) { cwd: options.cwd ?? self.location.pathname.endsWith('/') ? self.location.pathname : dirname(self.location.pathname) })); } +/** + * parse css + */ async function parse(iterator, opt = {}) { return doParse(iterator, Object.assign(opt, { load, @@ -27,6 +36,9 @@ async function parse(iterator, opt = {}) { cwd: opt.cwd ?? self.location.pathname.endsWith('/') ? self.location.pathname : dirname(self.location.pathname) })); } +/** + * parse and render css + */ async function transform(css, options = {}) { options = { minify: true, removeEmpty: true, removeCharset: true, ...options }; const startTime = performance.now(); diff --git a/jsr.json b/jsr.json index c1b0d56..6aa28d7 100644 --- a/jsr.json +++ b/jsr.json @@ -1,6 +1,6 @@ { "name": "@tbela99/css-parser", - "version": "0.7.0", + "version": "0.8.0", "publish": { "include": [ "src", diff --git a/package.json b/package.json index 3da66b3..ea3cc44 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@tbela99/css-parser", "description": "CSS parser for node and the browser", - "version": "0.7.0", + "version": "0.8.0-alpha1", "exports": { ".": "./dist/node/index.js", "./umd": "./dist/index-umd-web.js", diff --git a/src/lib/ast/expand.ts b/src/lib/ast/expand.ts index d78a546..43efe02 100644 --- a/src/lib/ast/expand.ts +++ b/src/lib/ast/expand.ts @@ -2,9 +2,8 @@ import {combinators, splitRule} from "./minify"; import {parseString} from "../parser"; import {walkValues} from "./walk"; import {renderToken} from "../renderer"; -import type {AstAtRule, AstNode, AstRule, AstRuleStyleSheet, Token} from "../../@types/index.d.ts"; +import type {AstAtRule, AstNode, AstRule, AstRuleStyleSheet, Token} from "../../@types"; import {EnumToken} from "./types"; -import * as repl from "node:repl"; export function expand(ast: AstNode): AstNode { // @@ -87,11 +86,9 @@ function expandRule(node: AstRule): Array { if (selRule.length > 1) { const r: string = ':is(' + selRule.map(a => a.join('')).join(',') + ')'; - rule.sel = splitRule(ast.sel).reduce((a, b) => a.concat([b.join('') + r]), []).join(','); - } - else { + } else { selRule.forEach(arr => combinators.includes(arr[0].charAt(0)) ? arr.unshift(ast.sel) : arr.unshift(ast.sel, ' ')); rule.sel = selRule.reduce((acc: string[], curr: string[]) => { @@ -104,7 +101,93 @@ function expandRule(node: AstRule): Array { } else { - rule.sel = replaceCompound(rule.sel, ast.sel); + let childSelectorCompund: string[] = []; + let withCompound: string[] = []; + let withoutCompound: string[] = []; + + const rules: string[][] = splitRule(ast.sel); + + for (const sel of (rule.raw ?? splitRule(rule.sel))) { + + const s = sel.join(''); + + if (s.includes('&')) { + + if (s.indexOf('&', 1) == -1) { + + if (s.at(0) == '&') { + + if (s.at(1) == ' ') { + + childSelectorCompund.push(s.slice(2)); + } else { + + if (s == '&') { + + withCompound.push(s); + } else { + + withoutCompound.push(s.slice(1)); + } + } + } + + } else { + + withCompound.push(s); + } + + } else { + + withoutCompound.push(s); + } + } + + const selectors: string[] = []; + const selector = rules.length > 1 ? ':is(' + rules.map(a => a.join('')).join(',') + ')' : rules[0].join(''); + + if (childSelectorCompund.length > 0) { + + if (childSelectorCompund.length == 1) { + + selectors.push(replaceCompound('& ' + childSelectorCompund[0].trim(), selector)); + } else { + + selectors.push(replaceCompound('& :is(' + childSelectorCompund.reduce((acc, curr) => acc + (acc.length > 0 ? ',' : '') + curr.trim(), '') + ')', selector)); + } + } + + if (withoutCompound.length > 0) { + + if (withoutCompound.length == 1) { + + const useIs: boolean = rules.length == 1 && selector.match(/^[a-zA-Z.:]/) != null && selector.includes(' ') && withoutCompound.length == 1 && withoutCompound[0].match(/^[a-zA-Z]+$/) != null; + const compound = useIs ? ':is(&)' : '&'; + + selectors.push(replaceCompound(rules.length == 1 ? (useIs ? withoutCompound[0] + ':is(&)' : (selector.match(/^[.:]/) && withoutCompound[0].match(/^[a-zA-Z]+$/) ? withoutCompound[0] + compound : compound + withoutCompound[0])): (withoutCompound[0].match(/^[a-zA-Z:]+$/) ? withoutCompound[0].trim() + compound : '&' + (withoutCompound[0].match(/^\S+$/) ? withoutCompound[0].trim() : ':is(' + withoutCompound[0].trim() + ')')), selector)); + + } else { + + selectors.push(replaceCompound('&:is(' + withoutCompound.reduce((acc, curr) => acc + (acc.length > 0 ? ',' : '') + curr.trim(), '') + ')', selector)); + } + } + + if (withCompound.length > 0) { + + if (withCompound.length == 1) { + + selectors.push(replaceCompound(withCompound[0], selector)); + + } else { + + for (const w of withCompound) { + + selectors.push(replaceCompound(w, selector)); + } + } + } + + rule.sel = selectors.reduce((acc, curr) => curr.length == 0 ? acc : acc + (acc.length > 0 ? ',' : '') + curr, ''); } ast.chi.splice(i--, 1); @@ -163,7 +246,6 @@ function expandRule(node: AstRule): Array { // @ts-ignore result.push(...(astAtRule.chi.length > 0 ? [astAtRule].concat(values) : values)); - ast.chi.splice(i--, 1); } } @@ -224,7 +306,7 @@ function replaceCompoundLiteral(selector: string, replace: string) { return b == '&' ? -1 : 0; }).reduce((acc: string, curr: string) => { - if (acc.length > 0 &&curr == '&' && (replace.charAt(0) != '.' || replace.includes(' '))) { + if (acc.length > 0 && curr == '&' && (replace.charAt(0) != '.' || replace.includes(' '))) { return acc + ':is(' + replace + ')'; } diff --git a/src/lib/ast/features/prefix.ts b/src/lib/ast/features/prefix.ts index 66ae772..ed2a0da 100644 --- a/src/lib/ast/features/prefix.ts +++ b/src/lib/ast/features/prefix.ts @@ -1,8 +1,7 @@ import {EnumToken} from "../types"; import type {AstAtRule, AstDeclaration, AstRule, MinifyOptions, Token} from "../../../@types"; -import {getConfig} from '../../validation' -import {walkValues} from "../walk"; import { + getSyntaxConfig, ValidationAmpersandToken, ValidationBracketToken, ValidationColumnToken, @@ -11,9 +10,10 @@ import { ValidationPropertyToken, ValidationToken, ValidationTokenEnum -} from "../../validation/parser"; +} from '../../validation' +import {walkValues} from "../walk"; -const config = getConfig(); +const config = getSyntaxConfig(); export class ComputePrefixFeature { diff --git a/src/lib/index.ts b/src/lib/index.ts index 182be68..e15da0c 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,3 +1,4 @@ export * from './ast'; export * from './renderer'; -export * from './parser'; \ No newline at end of file +export * from './parser'; +export * from './validation'; \ No newline at end of file diff --git a/src/lib/parser/tokenize.ts b/src/lib/parser/tokenize.ts index 5a6c4d1..027d1f2 100644 --- a/src/lib/parser/tokenize.ts +++ b/src/lib/parser/tokenize.ts @@ -3,6 +3,7 @@ import {EnumToken} from "../ast"; import {isDigit, isNewLine, isNonPrintable, isWhiteSpace} from "../syntax"; declare type InputStream = string; + declare interface ParseInfo { stream: InputStream; @@ -274,6 +275,16 @@ export function* tokenize(stream: InputStream): Generator { break; + case '&': + + if (buffer.length > 0) { + yield pushToken(buffer, parseInfo); + buffer = ''; + } + + yield pushToken(value, parseInfo); + break; + case '<': if (buffer.length > 0) { @@ -353,15 +364,11 @@ export function* tokenize(stream: InputStream): Generator { next(parseInfo); yield pushToken('', parseInfo, EnumToken.ColumnCombinatorTokenType); - } - - else if (peek(parseInfo) == '=') { + } else if (peek(parseInfo) == '=') { buffer += next(parseInfo); yield pushToken(buffer, parseInfo); - } - - else { + } else { yield pushToken('|', parseInfo); } diff --git a/src/lib/validation/config.json b/src/lib/validation/config.json index e9d5942..4012928 100644 --- a/src/lib/validation/config.json +++ b/src/lib/validation/config.json @@ -9,15 +9,9 @@ { "typ": 1, "val": "false" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "true" @@ -35,45 +29,27 @@ { "typ": 1, "val": "tb" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "rl" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bt" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "lr" @@ -95,15 +71,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "chained" @@ -121,15 +91,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "zoom" @@ -181,15 +145,9 @@ { "typ": 3, "val": "-ms-content-zoom-snap-type" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "-ms-content-zoom-snap-points" @@ -223,15 +181,9 @@ "val": "percentage" } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "snapList", @@ -256,30 +208,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "proximity" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "mandatory" @@ -308,27 +248,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ] } @@ -346,27 +274,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ] } @@ -384,30 +300,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "track-list" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "auto-track-list" @@ -427,30 +331,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "track-list" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "auto-track-list" @@ -470,15 +362,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -496,15 +382,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer", @@ -526,15 +406,9 @@ { "typ": 1, "val": "no-limit" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer" @@ -552,15 +426,9 @@ { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" @@ -578,15 +446,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "after" @@ -604,45 +466,27 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scrollbar" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "-ms-autohiding-scrollbar" @@ -736,15 +580,9 @@ { "typ": 1, "val": "chained" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -792,15 +630,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" @@ -827,15 +659,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" @@ -862,15 +688,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "railed" @@ -904,15 +724,9 @@ "val": "length-percentage" } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "snapList", @@ -953,15 +767,9 @@ "val": "length-percentage" } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "snapList", @@ -986,30 +794,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "proximity" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "mandatory" @@ -1061,15 +857,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "vertical-to-horizontal" @@ -1087,60 +877,36 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ideograph-alpha" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ideograph-numeric" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ideograph-parenthesis" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ideograph-space" @@ -1164,15 +930,9 @@ { "typ": 1, "val": "grippers" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -1190,30 +950,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "element" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "text" @@ -1233,75 +981,45 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "both" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "maximum" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "clear" @@ -1336,15 +1054,9 @@ { "typ": 1, "val": "wrap" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -1362,1464 +1074,879 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "button-arrow-down" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "button-arrow-next" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "button-arrow-previous" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "button-arrow-up" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "button-bevel" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "button-focus" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "caret" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "checkbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "checkbox-container" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "checkbox-label" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "checkmenuitem" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dualbutton" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "groupbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "listbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "listitem" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menuarrow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menubar" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menucheckbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menuimage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menuitem" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menuitemtext" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist-text" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist-textfield" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menupopup" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menuradio" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menuseparator" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "meterbar" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "meterchunk" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "progressbar" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "progressbar-vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "progresschunk" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "progresschunk-vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "radio" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "radio-container" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "radio-label" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "radiomenuitem" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "range" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "range-thumb" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "resizer" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "resizerpanel" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scale-horizontal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scalethumbend" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scalethumb-horizontal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scalethumbstart" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scalethumbtick" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scalethumb-vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scale-vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scrollbarbutton-down" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scrollbarbutton-left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scrollbarbutton-right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scrollbarbutton-up" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scrollbarthumb-horizontal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scrollbarthumb-vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scrollbartrack-horizontal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scrollbartrack-vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "searchfield" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "separator" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sheet" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "spinner" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "spinner-downbutton" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "spinner-textfield" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "spinner-upbutton" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "splitter" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "statusbar" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "statusbarpanel" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "tab" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "tabpanel" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "tabpanels" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "tab-scroll-arrow-back" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "tab-scroll-arrow-forward" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "textfield" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "textfield-multiline" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "toolbar" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "toolbarbutton" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "toolbarbutton-dropdown" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "toolbargripper" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "toolbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "tooltip" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "treeheader" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "treeheadercell" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "treeheadersortarrow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "treeitem" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "treeline" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "treetwisty" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "treetwistyopen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "treeview" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "-moz-mac-unified-toolbar" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "-moz-win-borderless-glass" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "-moz-win-browsertabbar-toolbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "-moz-win-communicationstext" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "-moz-win-communications-toolbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "-moz-win-exclude-glass" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "-moz-win-glass" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "-moz-win-mediatext" - }, - { - "typ": 20 } ], "r": [ @@ -2827,14 +1954,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-win-media-toolbox" - }, - { - "typ": 20 } ], "r": [ @@ -2842,14 +1963,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-button-box" - }, - { - "typ": 20 } ], "r": [ @@ -2857,14 +1972,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-button-box-maximized" - }, - { - "typ": 20 } ], "r": [ @@ -2872,14 +1981,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-button-close" - }, - { - "typ": 20 } ], "r": [ @@ -2887,14 +1990,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-button-maximize" - }, - { - "typ": 20 } ], "r": [ @@ -2902,14 +1999,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-button-minimize" - }, - { - "typ": 20 } ], "r": [ @@ -2917,14 +2008,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-button-restore" - }, - { - "typ": 20 } ], "r": [ @@ -2932,14 +2017,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-frame-bottom" - }, - { - "typ": 20 } ], "r": [ @@ -2947,14 +2026,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-frame-left" - }, - { - "typ": 20 } ], "r": [ @@ -2962,14 +2035,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-frame-right" - }, - { - "typ": 20 } ], "r": [ @@ -2977,21 +2044,12 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-titlebar" - }, - { - "typ": 20 } ], "r": [ { - "typ": 20 - }, - { "typ": 1, "val": "-moz-window-titlebar-maximized" } @@ -3224,15 +2282,9 @@ { "typ": 2, "val": "url" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -3251,15 +2303,9 @@ "typ": 2, "val": "color", "atLeastOnce": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -3278,15 +2324,9 @@ "typ": 2, "val": "color", "atLeastOnce": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -3305,15 +2345,9 @@ "typ": 2, "val": "color", "atLeastOnce": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -3332,15 +2366,9 @@ "typ": 2, "val": "color", "atLeastOnce": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -3358,72 +2386,42 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fill" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fill-opacity" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stroke" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "stroke-opacity" - }, - { - "typ": 20 } ] } @@ -3447,45 +2445,27 @@ { "typ": 1, "val": "border-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "content-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "margin-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "padding-box" @@ -3507,15 +2487,9 @@ { "typ": 19, "val": 0 - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 19, "val": 1 @@ -3533,15 +2507,9 @@ { "typ": 2, "val": "shape" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -3559,45 +2527,27 @@ { "typ": 1, "val": "inline" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "block" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "horizontal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "vertical" @@ -3688,15 +2638,9 @@ { "typ": 1, "val": "ignore" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "stretch-to-fit" @@ -3714,15 +2658,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "blink" @@ -3740,105 +2678,63 @@ { "typ": 1, "val": "ignore" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "select-after" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "select-before" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "select-menu" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "select-same" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "select-all" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -3868,45 +2764,27 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "enabled" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "disabled" @@ -3928,30 +2806,18 @@ { "typ": 1, "val": "read-only" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "read-write" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "write-only" @@ -3971,15 +2837,9 @@ { "typ": 1, "val": "drag" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-drag" @@ -3997,60 +2857,36 @@ { "typ": 1, "val": "default" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menu" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "tooltip" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sheet" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -4074,720 +2910,432 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "button-bevel" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "caret" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "checkbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "default-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inner-spin-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "listbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "listitem" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-controls-background" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-controls-fullscreen-background" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-current-time-display" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-enter-fullscreen-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-exit-fullscreen-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-fullscreen-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-mute-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-overlay-play-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-play-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-seek-back-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-seek-forward-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-slider" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-sliderthumb" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-time-remaining-display" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-toggle-closed-captions-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-volume-slider" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-volume-slider-container" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "media-volume-sliderthumb" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist-text" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist-textfield" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "meter" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "progress-bar" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "progress-bar-value" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "push-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "radio" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "searchfield" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "searchfield-cancel-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "searchfield-decoration" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "searchfield-results-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "searchfield-results-decoration" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "slider-horizontal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "slider-vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sliderthumb-horizontal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sliderthumb-vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "square-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "textarea" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "textfield" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "-apple-pay-button" @@ -4899,30 +3447,18 @@ { "typ": 3, "val": "border-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -4969,57 +3505,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "above" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "below" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ] } @@ -5057,15 +3569,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer" @@ -5083,24 +3589,15 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "mask-reference" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "position" @@ -5120,105 +3617,63 @@ } ], "isOptional": true - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "repeat-style" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "border" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "padding" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "text" - }, - { - "typ": 20 } ] } @@ -5229,72 +3684,42 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "border" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "padding" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "content" - }, - { - "typ": 20 } ] } @@ -5303,9 +3728,6 @@ ] } ] - }, - { - "typ": 20 } ] } @@ -5339,72 +3761,42 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "border" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "padding" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "text" - }, - { - "typ": 20 } ] } @@ -5448,57 +3840,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "border" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "padding" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "content" - }, - { - "typ": 20 } ] } @@ -5530,57 +3898,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } @@ -5602,57 +3946,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ] } @@ -5684,45 +4004,27 @@ { "typ": 1, "val": "repeat" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-repeat" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "space" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "round" @@ -5744,45 +4046,27 @@ { "typ": 1, "val": "repeat" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-repeat" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "space" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "round" @@ -5814,15 +4098,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "touch" @@ -5858,15 +4136,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -5902,15 +4174,9 @@ { "typ": 1, "val": "default" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -5928,30 +4194,18 @@ { "typ": 1, "val": "read-only" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "read-write" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "read-write-plaintext-only" @@ -5971,15 +4225,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -5997,45 +4245,27 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "baseline-position" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "content-distribution" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "overflow-position", @@ -6065,45 +4295,27 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stretch" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "baseline-position" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -6138,60 +4350,36 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stretch" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "baseline-position" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "overflow-position", @@ -6223,51 +4411,30 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "baseline-position" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "content-distribution" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "overflow-position", @@ -6279,9 +4446,6 @@ { "typ": 2, "val": "content-position" - }, - { - "typ": 20 } ] } @@ -6303,60 +4467,36 @@ { "typ": 1, "val": "initial" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inherit" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "unset" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "revert" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "revert-layer" @@ -6380,15 +4520,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "dashed-ident", @@ -6407,30 +4541,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "dashed-ident", @@ -6521,27 +4643,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "keyframes-name" - }, - { - "typ": 20 } ] } @@ -6592,36 +4702,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "timeline-range-name" @@ -6633,9 +4728,6 @@ "typ": 2, "val": "length-percentage", "isOptional": true - }, - { - "typ": 20 } ] } @@ -6655,36 +4747,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "timeline-range-name" @@ -6696,9 +4773,6 @@ "typ": 2, "val": "length-percentage", "isOptional": true - }, - { - "typ": 20 } ] } @@ -6738,60 +4812,36 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "textfield" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist-button" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "compat-auto" @@ -6815,15 +4865,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "ratio" @@ -6841,159 +4885,96 @@ { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left-side" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "far-left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center-left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center-right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "far-right" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right-side" - }, - { - "typ": 20 } ] } @@ -7012,49 +4993,28 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "behind" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "leftwards" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "rightwards" @@ -7076,15 +5036,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "filter-function-list" @@ -7102,15 +5056,9 @@ { "typ": 1, "val": "visible" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "hidden" @@ -7225,21 +5173,12 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -7249,57 +5188,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "x-start" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "x-end" - }, - { - "typ": 20 } ] } @@ -7320,9 +5235,6 @@ } ], "isRepeatableGroup": true - }, - { - "typ": 20 } ] } @@ -7340,21 +5252,12 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -7364,57 +5267,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "y-start" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "y-end" - }, - { - "typ": 20 } ] } @@ -7435,9 +5314,6 @@ } ], "isRepeatableGroup": true - }, - { - "typ": 20 } ] } @@ -7484,30 +5360,18 @@ { "typ": 2, "val": "line-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "line-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -7527,30 +5391,18 @@ { "typ": 3, "val": "border-top-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-top-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -7601,30 +5453,18 @@ { "typ": 3, "val": "border-top-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-top-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -7671,30 +5511,18 @@ { "typ": 3, "val": "border-top-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-top-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -7741,30 +5569,18 @@ { "typ": 2, "val": "line-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "line-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -7837,15 +5653,9 @@ { "typ": 1, "val": "collapse" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "separate" @@ -7902,18 +5712,12 @@ { "typ": 3, "val": "border-image-source" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-image-slice" @@ -7927,67 +5731,37 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 24 }, - { - "typ": 20 - }, { "typ": 3, "val": "border-image-width" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 24 }, - { - "typ": 20 - }, { "typ": 3, "val": "border-image-width", "isOptional": true }, - { - "typ": 20 - }, { "typ": 24 }, - { - "typ": 20 - }, { "typ": 3, "val": "border-image-outset" - }, - { - "typ": 20 } ] } ], "isOptional": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-image-repeat" @@ -8007,27 +5781,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ] } @@ -8048,57 +5810,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stretch" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "repeat" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "round" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "space" - }, - { - "typ": 20 } ] } @@ -8127,15 +5865,9 @@ "min": 1, "max": 4 } - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "fill", @@ -8154,15 +5886,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "image" @@ -8180,42 +5906,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -8238,30 +5946,18 @@ { "typ": 3, "val": "border-top-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-top-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -8281,30 +5977,18 @@ { "typ": 3, "val": "border-top-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-top-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -8382,30 +6066,18 @@ { "typ": 3, "val": "border-top-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-top-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -8452,30 +6124,18 @@ { "typ": 2, "val": "line-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "line-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -8555,30 +6215,18 @@ { "typ": 2, "val": "line-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "line-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -8681,30 +6329,18 @@ { "typ": 2, "val": "line-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "line-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -8790,30 +6426,18 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -8833,60 +6457,36 @@ { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "baseline" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "stretch" @@ -8910,15 +6510,9 @@ { "typ": 1, "val": "slice" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "clone" @@ -8936,30 +6530,18 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "reverse" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inherit" @@ -8997,15 +6579,9 @@ { "typ": 1, "val": "single" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "multiple" @@ -9032,60 +6608,36 @@ { "typ": 1, "val": "horizontal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-axis" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "block-axis" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inherit" @@ -9109,45 +6661,27 @@ { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "justify" @@ -9169,15 +6703,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "shadow", @@ -9196,15 +6724,9 @@ { "typ": 1, "val": "content-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "border-box" @@ -9222,195 +6744,117 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "always" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid-page" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "page" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "recto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "verso" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid-column" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "column" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid-region" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "region" @@ -9452,195 +6896,117 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "always" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid-page" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "page" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "recto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "verso" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid-column" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "column" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid-region" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "region" @@ -9682,60 +7048,36 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid-page" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid-column" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid-region" @@ -9759,75 +7101,45 @@ { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "block-start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "block-end" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-start" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-end" @@ -9853,15 +7165,9 @@ { "typ": 3, "val": "caret-color" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "caret-shape" @@ -9879,15 +7185,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -9905,45 +7205,27 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bar" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "block" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "underscore" @@ -9965,75 +7247,45 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "both" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-start" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-end" @@ -10059,15 +7311,9 @@ { "typ": 2, "val": "shape" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -10085,58 +7331,34 @@ { "typ": 2, "val": "clip-source" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "basic-shape" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "geometry-box" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -10156,15 +7378,9 @@ { "typ": 1, "val": "nonzero" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "evenodd" @@ -10191,30 +7407,18 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sRGB" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "linearRGB" @@ -10234,15 +7438,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 29, "l": [ @@ -10252,42 +7450,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "light" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dark" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ] } @@ -10295,15 +7475,9 @@ } ], "atLeastOnce": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "only", @@ -10324,15 +7498,9 @@ { "typ": 2, "val": "integer" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -10350,30 +7518,18 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "balance" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "balance-all" @@ -10393,15 +7549,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -10419,30 +7569,18 @@ { "typ": 3, "val": "column-rule-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "column-rule-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "column-rule-color" @@ -10489,15 +7627,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "all" @@ -10515,15 +7647,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -10541,15 +7667,9 @@ { "typ": 3, "val": "column-width" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "column-count" @@ -10567,130 +7687,76 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "strict" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "size" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-size" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "layout" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "paint" - }, - { - "typ": 20 } ] } @@ -10728,27 +7794,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ] } @@ -10779,27 +7833,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ] } @@ -10824,27 +7866,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ] } @@ -10869,27 +7899,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ] } @@ -10914,27 +7932,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ] } @@ -10976,15 +7982,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident", @@ -11003,30 +8003,18 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "size" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-size" @@ -11046,57 +8034,33 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "content-replacement" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "content-list" - }, - { - "typ": 20 } ] } @@ -11117,27 +8081,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "counter" - }, - { - "typ": 20 } ] } @@ -11162,30 +8114,18 @@ { "typ": 1, "val": "visible" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "hidden" @@ -11219,15 +8159,9 @@ } ], "atLeastOnce": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -11248,9 +8182,6 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "counter-name" @@ -11262,15 +8193,9 @@ "typ": 2, "val": "integer", "isOptional": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "reversed-counter-name" @@ -11282,23 +8207,14 @@ "typ": 2, "val": "integer", "isOptional": true - }, - { - "typ": 20 } ] } ], "atLeastOnce": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -11330,15 +8246,9 @@ } ], "atLeastOnce": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -11398,537 +8308,321 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "default" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "context-menu" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "help" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pointer" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "progress" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "wait" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cell" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "crosshair" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "text" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vertical-text" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "alias" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "copy" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "move" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-drop" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "not-allowed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "e-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "n-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ne-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "nw-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "s-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "se-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sw-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "w-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ew-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ns-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "nesw-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "nwse-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "col-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "row-resize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all-scroll" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "zoom-in" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "zoom-out" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "grab" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "grabbing" - }, - { - "typ": 20 } ] } @@ -12015,15 +8709,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "path", @@ -12047,15 +8735,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -12073,15 +8755,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -12099,15 +8775,9 @@ { "typ": 1, "val": "ltr" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "rtl" @@ -12128,85 +8798,49 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "display-outside" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "display-inside" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "display-listitem" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "display-internal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "display-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "display-legacy" @@ -12230,120 +8864,72 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "text-bottom" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "alphabetic" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ideographic" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "middle" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "central" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mathematical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hanging" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "text-top" @@ -12375,15 +8961,9 @@ { "typ": 1, "val": "show" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "hide" @@ -12401,15 +8981,9 @@ { "typ": 1, "val": "content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "fixed" @@ -12427,33 +9001,21 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" @@ -12470,15 +9032,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -12487,30 +9043,18 @@ } ], "isOptional": true - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "context-fill" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "context-stroke" @@ -12543,15 +9087,9 @@ { "typ": 1, "val": "nonzero" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "evenodd" @@ -12569,15 +9107,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "filter-function-list" @@ -12595,24 +9127,15 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "flex-grow" @@ -12624,21 +9147,12 @@ "typ": 3, "val": "flex-shrink", "isOptional": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "flex-basis" - }, - { - "typ": 20 } ] } @@ -12657,15 +9171,9 @@ { "typ": 1, "val": "content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "width" @@ -12683,45 +9191,27 @@ { "typ": 1, "val": "row" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "row-reverse" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "column" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "column-reverse" @@ -12743,15 +9233,9 @@ { "typ": 3, "val": "flex-direction" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "flex-wrap" @@ -12787,30 +9271,18 @@ { "typ": 1, "val": "nowrap" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "wrap" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "wrap-reverse" @@ -12830,60 +9302,36 @@ { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-start" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-end" @@ -12913,57 +9361,33 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "font-style" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "font-variant-css21" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "font-weight" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "font-stretch" - }, - { - "typ": 20 } ] } @@ -13005,90 +9429,54 @@ "val": "font-family" } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "caption" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "icon" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menu" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "message-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "small-caption" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "status-bar" @@ -13116,27 +9504,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "family-name" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "generic-family" - }, - { - "typ": 20 } ] } @@ -13154,15 +9530,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "feature-tag-value", @@ -13181,30 +9551,18 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -13224,15 +9582,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" @@ -13250,15 +9602,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -13276,45 +9622,27 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "light" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dark" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "palette-identifier" @@ -13336,15 +9664,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -13375,30 +9697,18 @@ { "typ": 2, "val": "absolute-size" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "relative-size" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -13418,87 +9728,51 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ex-height" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cap-height" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ch-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ic-width" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ic-height" - }, - { - "typ": 20 } ] } @@ -13520,27 +9794,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "from-font" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ] } @@ -13559,60 +9821,36 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "never" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "always" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "absolute-size" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" @@ -13645,30 +9883,18 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "italic" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "oblique" @@ -13696,66 +9922,39 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "weight" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "style" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "small-caps" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "position" @@ -13781,15 +9980,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -13807,15 +10000,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -13833,15 +10020,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -13859,15 +10040,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -13885,99 +10060,60 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "common-lig-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "discretionary-lig-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "historical-lig-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "contextual-alt-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "stylistic", @@ -13987,33 +10123,21 @@ "val": "feature-value-name" } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "historical-forms" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "styleset", @@ -14024,18 +10148,12 @@ "isList": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "character-variant", @@ -14046,18 +10164,12 @@ "isList": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "swash", @@ -14067,18 +10179,12 @@ "val": "feature-value-name" } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "ornaments", @@ -14088,18 +10194,12 @@ "val": "feature-value-name" } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "annotation", @@ -14109,105 +10209,63 @@ "val": "feature-value-name" } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "small-caps" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all-small-caps" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "petite-caps" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all-petite-caps" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "unicase" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "titling-caps" - }, - { - "typ": 20 } ] } @@ -14220,126 +10278,75 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "numeric-figure-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "numeric-spacing-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "numeric-fraction-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ordinal" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "slashed-zero" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "east-asian-variant-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "east-asian-width-values" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ruby" - }, - { - "typ": 20 } ] } @@ -14396,24 +10403,15 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "stylistic", @@ -14423,33 +10421,21 @@ "val": "feature-value-name" } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "historical-forms" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "styleset", @@ -14460,18 +10446,12 @@ "isList": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "character-variant", @@ -14482,18 +10462,12 @@ "isList": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "swash", @@ -14503,18 +10477,12 @@ "val": "feature-value-name" } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "ornaments", @@ -14524,15 +10492,9 @@ "val": "feature-value-name" } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "annotation", @@ -14542,9 +10504,6 @@ "val": "feature-value-name" } ] - }, - { - "typ": 20 } ] } @@ -14573,90 +10532,54 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "small-caps" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all-small-caps" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "petite-caps" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all-petite-caps" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "unicase" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "titling-caps" @@ -14684,57 +10607,33 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "east-asian-variant-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "east-asian-width-values" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ruby" - }, - { - "typ": 20 } ] } @@ -14755,45 +10654,27 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "text" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "emoji" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "unicode" @@ -14815,87 +10696,51 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "common-lig-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "discretionary-lig-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "historical-lig-values" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "contextual-alt-values" - }, - { - "typ": 20 } ] } @@ -14920,87 +10765,51 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "numeric-figure-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "numeric-spacing-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "numeric-fraction-values" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ordinal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "slashed-zero" - }, - { - "typ": 20 } ] } @@ -15025,30 +10834,18 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sub" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "super" @@ -15068,30 +10865,18 @@ { "typ": 2, "val": "font-weight-absolute" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bolder" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "lighter" @@ -15111,15 +10896,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -15154,31 +10933,19 @@ { "typ": 3, "val": "grid-template" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "grid-template-rows" }, - { - "typ": 20 - }, { "typ": 24 }, - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -15188,15 +10955,9 @@ { "typ": 1, "val": "auto-flow" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "dense", @@ -15213,15 +10974,9 @@ "typ": 3, "val": "grid-auto-columns", "isOptional": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -15231,15 +10986,9 @@ { "typ": 1, "val": "auto-flow" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "dense", @@ -15257,15 +11006,9 @@ "val": "grid-auto-rows", "isOptional": true }, - { - "typ": 20 - }, { "typ": 24 }, - { - "typ": 20 - }, { "typ": 3, "val": "grid-template-columns" @@ -15326,40 +11069,22 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "row" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "column" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "dense" @@ -15508,18 +11233,12 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -15535,15 +11254,9 @@ "val": "grid-template-columns" } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -15609,15 +11322,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "string", @@ -15636,45 +11343,27 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "track-list" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "auto-track-list" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "subgrid" @@ -15704,45 +11393,27 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "track-list" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "auto-track-list" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "subgrid" @@ -15772,85 +11443,49 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "first" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "force-end" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "allow-end" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "last" - }, - { - "typ": 20 } ] } @@ -15871,90 +11506,54 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fit-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "fit-content", @@ -15988,15 +11587,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" @@ -16014,27 +11607,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer" - }, - { - "typ": 20 } ] } @@ -16055,30 +11636,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "manual" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -16098,30 +11667,18 @@ { "typ": 1, "val": "from-image" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -16154,30 +11711,18 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "crisp-edges" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "pixelated" @@ -16200,40 +11745,22 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "from-image" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "resolution" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "snap", @@ -16252,60 +11779,36 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "active" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inactive" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "disabled" @@ -16329,15 +11832,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -16368,57 +11865,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "alphabetic" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hanging" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ideographic" - }, - { - "typ": 20 } ] } @@ -16448,15 +11921,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -16487,15 +11954,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "inset-area" @@ -16575,15 +12036,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "isolate" @@ -16601,30 +12056,18 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "content-distribution" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "overflow-position", @@ -16639,42 +12082,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "content-position" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } @@ -16697,48 +12122,30 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stretch" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "baseline-position" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "overflow-position", @@ -16753,129 +12160,75 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "self-position" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "legacy" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 29, "l": [ { "typ": 1, "val": "legacy" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ] } @@ -16906,60 +12259,36 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stretch" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "baseline-position" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "overflow-position", @@ -16974,42 +12303,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "self-position" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } @@ -17036,36 +12347,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "content-distribution" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "overflow-position", @@ -17080,51 +12376,30 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "content-position" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } ] } ] - }, - { - "typ": 20 } ] } @@ -17144,30 +12419,18 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -17187,15 +12450,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" @@ -17213,60 +12470,36 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "loose" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "strict" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "anywhere" @@ -17290,15 +12523,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer" @@ -17316,45 +12543,27 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -17385,30 +12594,18 @@ { "typ": 3, "val": "list-style-type" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "list-style-position" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "list-style-image" @@ -17428,15 +12625,9 @@ { "typ": 2, "val": "image" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -17454,15 +12645,9 @@ { "typ": 1, "val": "inside" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "outside" @@ -17480,30 +12665,18 @@ { "typ": 2, "val": "counter-style" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -17523,42 +12696,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -17612,30 +12767,18 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -17686,30 +12829,18 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -17729,30 +12860,18 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -17772,30 +12891,18 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -17815,30 +12922,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "in-flow" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "all" @@ -17858,15 +12953,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" @@ -17884,15 +12973,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" @@ -17910,15 +12993,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" @@ -17936,15 +13013,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" @@ -17972,18 +13043,12 @@ { "typ": 3, "val": "mask-border-source" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "mask-border-slice" @@ -18020,30 +13085,18 @@ } ], "isOptional": true - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "mask-border-repeat" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "mask-border-mode" @@ -18065,15 +13118,9 @@ { "typ": 1, "val": "luminance" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "alpha" @@ -18091,27 +13138,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ] } @@ -18132,57 +13167,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stretch" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "repeat" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "round" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "space" - }, - { - "typ": 20 } ] } @@ -18228,15 +13239,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "image" @@ -18254,42 +13259,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -18312,27 +13299,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "geometry-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-clip" - }, - { - "typ": 20 } ] } @@ -18420,15 +13395,9 @@ { "typ": 1, "val": "luminance" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "alpha" @@ -18449,67 +13418,37 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pack" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "next" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "definite-first" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ordered" - }, - { - "typ": 20 } ] } @@ -18528,18 +13467,12 @@ { "typ": 1, "val": "auto-add" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "add", @@ -18549,15 +13482,9 @@ "val": "integer" } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer" @@ -18577,15 +13504,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "compact" @@ -18603,15 +13524,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "compact" @@ -18638,75 +13553,45 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fit-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "fit-content", @@ -18747,15 +13632,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer" @@ -18773,75 +13652,45 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fit-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "fit-content", @@ -18882,90 +13731,54 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fit-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "fit-content", @@ -19008,90 +13821,54 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fit-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "fit-content", @@ -19125,15 +13902,9 @@ { "typ": 2, "val": "blend-mode" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "plus-lighter" @@ -19151,60 +13922,36 @@ { "typ": 1, "val": "fill" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "contain" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cover" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "scale-down" @@ -19258,27 +14005,15 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "offset-distance" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "offset-rotate" - }, - { - "typ": 20 } ] } @@ -19318,15 +14053,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "position" @@ -19356,29 +14085,17 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "offset-path" - }, - { - "typ": 20 } ] } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "coord-box" @@ -19396,30 +14113,18 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "position" @@ -19442,40 +14147,22 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "reverse" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" @@ -19520,42 +14207,24 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "outline-width" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "outline-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "outline-color" - }, - { - "typ": 20 } ] } @@ -19574,15 +14243,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -19609,15 +14272,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "border-style" @@ -19644,72 +14301,42 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "visible" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hidden" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "clip" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scroll" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -19736,15 +14363,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -19762,60 +14383,36 @@ { "typ": 1, "val": "visible" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hidden" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "clip" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scroll" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -19839,15 +14436,9 @@ { "typ": 1, "val": "padding-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "content-box" @@ -19865,15 +14456,9 @@ { "typ": 2, "val": "visual-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length", @@ -19895,60 +14480,36 @@ { "typ": 1, "val": "visible" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hidden" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "clip" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scroll" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -19972,30 +14533,18 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "break-word" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "anywhere" @@ -20015,60 +14564,36 @@ { "typ": 1, "val": "visible" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hidden" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "clip" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scroll" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -20092,60 +14617,36 @@ { "typ": 1, "val": "visible" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hidden" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "clip" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "scroll" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -20169,15 +14670,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -20195,42 +14690,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "contain" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -20253,30 +14730,18 @@ { "typ": 1, "val": "contain" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -20296,30 +14761,18 @@ { "typ": 1, "val": "contain" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -20339,30 +14792,18 @@ { "typ": 1, "val": "contain" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -20382,30 +14823,18 @@ { "typ": 1, "val": "contain" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -20425,27 +14854,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ] } @@ -20497,15 +14914,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -20554,15 +14965,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -20580,15 +14985,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -20606,15 +15005,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -20632,15 +15025,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" @@ -20658,90 +15045,54 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "always" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "recto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "verso" @@ -20769,90 +15120,54 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "always" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "recto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "verso" @@ -20880,15 +15195,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "avoid" @@ -20906,57 +15215,33 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fill" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stroke" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "markers" - }, - { - "typ": 20 } ] } @@ -20977,15 +15262,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" @@ -21063,150 +15342,90 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "visiblePainted" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "visibleFill" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "visibleStroke" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "visible" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "painted" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fill" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stroke" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inherit" @@ -21242,60 +15461,36 @@ { "typ": 1, "val": "static" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "relative" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "absolute" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sticky" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "fixed" @@ -21345,24 +15540,15 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -21372,15 +15558,9 @@ { "typ": 2, "val": "dashed-ident" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "try-tactic" @@ -21388,15 +15568,9 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "inset-area", @@ -21406,9 +15580,6 @@ "val": "inset-area" } ] - }, - { - "typ": 20 } ] } @@ -21428,15 +15599,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "try-size" @@ -21454,57 +15619,33 @@ { "typ": 1, "val": "always" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "anchors-valid" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "anchors-visible" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-overflow" - }, - { - "typ": 20 } ] } @@ -21525,15 +15666,9 @@ { "typ": 1, "val": "economy" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "exact" @@ -21551,30 +15686,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -21607,15 +15730,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -21633,75 +15750,45 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "both" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "horizontal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vertical" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "block" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline" @@ -21727,30 +15814,18 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -21770,30 +15845,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 29, "l": [ @@ -21803,51 +15866,30 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "x" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "y" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "z" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "number", @@ -21855,9 +15897,6 @@ "min": 3, "max": 0 } - }, - { - "typ": 20 } ] } @@ -21866,15 +15905,9 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" @@ -21896,15 +15929,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -21922,45 +15949,27 @@ { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "space-between" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "space-around" @@ -21982,30 +15991,18 @@ { "typ": 1, "val": "separate" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "collapse" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -22028,68 +16025,38 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "alternate" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "over" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "under" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inter-character" @@ -22107,15 +16074,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -22133,15 +16094,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -22159,15 +16114,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "number", @@ -22189,15 +16138,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color", @@ -22219,30 +16162,18 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 29, "l": [ { "typ": 1, "val": "stable" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "both-edges", @@ -22263,30 +16194,18 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "thin" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -22306,15 +16225,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "smooth" @@ -22443,27 +16356,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ] } @@ -22484,27 +16385,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ] } @@ -22525,15 +16414,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -22551,15 +16434,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -22577,15 +16454,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -22603,27 +16474,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ] } @@ -22644,15 +16503,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -22670,15 +16523,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -22696,15 +16543,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -22722,15 +16563,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -22748,15 +16583,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -22774,57 +16603,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ] } @@ -22849,15 +16654,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "position", @@ -22885,15 +16684,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "repeat", @@ -22917,15 +16710,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "repeat", @@ -22949,15 +16736,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "always" @@ -22975,87 +16756,51 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "x" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "y" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "block" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "both" - }, - { - "typ": 20 } ] } @@ -23076,27 +16821,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mandatory" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "proximity" - }, - { - "typ": 20 } ] } @@ -23116,30 +16849,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mandatory" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "proximity" @@ -23159,30 +16880,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mandatory" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "proximity" @@ -23225,57 +16934,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "block" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "x" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "y" - }, - { - "typ": 20 } ] } @@ -23297,15 +16982,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "dashed-ident", @@ -23342,58 +17021,34 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "shape-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "basic-shape" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "image" @@ -23413,45 +17068,27 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "optimizeSpeed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "crispEdges" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "geometricPrecision" @@ -23464,6 +17101,172 @@ } ] }, + "stroke": { + "syntax": "", + "ast": [] + }, + "stroke-dasharray": { + "syntax": "none | ", + "ast": [ + { + "typ": 27, + "l": [ + { + "typ": 1, + "val": "none" + } + ], + "r": [ + { + "typ": 2, + "val": "dasharray" + } + ] + } + ] + }, + "stroke-dashoffset": { + "syntax": " | ", + "ast": [ + { + "typ": 27, + "l": [ + { + "typ": 2, + "val": "length-percentage" + } + ], + "r": [ + { + "typ": 2, + "val": "number" + } + ] + } + ] + }, + "stroke-linecap": { + "syntax": "butt | round | square", + "ast": [ + { + "typ": 27, + "l": [ + { + "typ": 1, + "val": "butt" + } + ], + "r": [ + { + "typ": 27, + "l": [ + { + "typ": 1, + "val": "round" + } + ], + "r": [ + { + "typ": 1, + "val": "square" + } + ] + } + ] + } + ] + }, + "stroke-linejoin": { + "syntax": "miter | miter-clip | round | bevel | arcs", + "ast": [ + { + "typ": 27, + "l": [ + { + "typ": 1, + "val": "miter" + } + ], + "r": [ + { + "typ": 27, + "l": [ + { + "typ": 1, + "val": "miter-clip" + } + ], + "r": [ + { + "typ": 27, + "l": [ + { + "typ": 1, + "val": "round" + } + ], + "r": [ + { + "typ": 27, + "l": [ + { + "typ": 1, + "val": "bevel" + } + ], + "r": [ + { + "typ": 1, + "val": "arcs" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "stroke-miterlimit": { + "syntax": "", + "ast": [ + { + "typ": 2, + "val": "number" + } + ] + }, + "stroke-opacity": { + "syntax": "", + "ast": [ + { + "typ": 2, + "val": "opacity" + } + ] + }, + "stroke-width": { + "syntax": " | ", + "ast": [ + { + "typ": 27, + "l": [ + { + "typ": 2, + "val": "length-percentage" + } + ], + "r": [ + { + "typ": 2, + "val": "number" + } + ] + } + ] + }, "tab-size": { "syntax": " | ", "ast": [ @@ -23473,15 +17276,9 @@ { "typ": 2, "val": "integer" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" @@ -23499,15 +17296,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "fixed" @@ -23525,90 +17316,54 @@ { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "justify" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "match-parent" @@ -23636,90 +17391,54 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "justify" @@ -23747,30 +17466,18 @@ { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "middle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" @@ -23790,30 +17497,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -23846,45 +17541,27 @@ { "typ": 3, "val": "text-decoration-line" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "text-decoration-style" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "text-decoration-color" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "text-decoration-thickness" @@ -23915,75 +17592,45 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "underline" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "overline" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "line-through" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "blink" - }, - { - "typ": 20 } ] } @@ -23992,30 +17639,18 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "spelling-error" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "grammar-error" @@ -24037,128 +17672,74 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "objects" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "spaces" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "leading-spaces" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "trailing-spaces" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "edges" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "box-decoration" - }, - { - "typ": 20 } ] } @@ -24181,30 +17762,18 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "all" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -24224,60 +17793,36 @@ { "typ": 1, "val": "solid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "double" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dotted" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dashed" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "wavy" @@ -24301,51 +17846,30 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "from-font" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ] } @@ -24364,15 +17888,9 @@ { "typ": 3, "val": "text-emphasis-style" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "text-emphasis-color" @@ -24402,67 +17920,37 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "over" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "under" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ] } @@ -24481,139 +17969,82 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "filled" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "open" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dot" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "circle" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "double-circle" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "triangle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "sesame" - }, - { - "typ": 20 } ] } @@ -24624,22 +18055,13 @@ ] } ] - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" @@ -24662,30 +18084,18 @@ { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "hanging", "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "each-line", @@ -24704,45 +18114,27 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inter-character" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inter-word" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -24764,30 +18156,18 @@ { "typ": 1, "val": "mixed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "upright" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "sideways" @@ -24807,42 +18187,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "clip" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ellipsis" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ] } @@ -24865,45 +18227,27 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "optimizeSpeed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "optimizeLegibility" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "geometricPrecision" @@ -24925,15 +18269,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "shadow-t", @@ -24952,30 +18290,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -24995,90 +18321,54 @@ { "typ": 1, "val": "space-all" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "space-first" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "trim-start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "trim-both" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "trim-all" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -25106,75 +18396,45 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "capitalize" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "uppercase" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lowercase" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "full-width" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "full-size-kana" @@ -25200,36 +18460,21 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ] } @@ -25246,85 +18491,49 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "from-font" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "under" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ] } @@ -25345,60 +18554,36 @@ { "typ": 1, "val": "wrap" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "nowrap" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "balance" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stable" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "pretty" @@ -25422,30 +18607,18 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "wrap" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "nowrap" @@ -25465,45 +18638,27 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "balance" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stable" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "pretty" @@ -25525,15 +18680,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "dashed-ident", @@ -25552,30 +18701,18 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -25595,180 +18732,108 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pan-x" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pan-left" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "pan-right" - }, - { - "typ": 20 } ] } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pan-y" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pan-up" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "pan-down" - }, - { - "typ": 20 } ] } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "pinch-zoom" - }, - { - "typ": 20 } ] } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "manipulation" @@ -25790,15 +18855,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "transform-list" @@ -25816,60 +18875,36 @@ { "typ": 1, "val": "content-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "border-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fill-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stroke-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "view-box" @@ -25896,87 +18931,51 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ] } @@ -25989,15 +18988,9 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -26010,57 +19003,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } @@ -26069,72 +19038,42 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ] } @@ -26169,15 +19108,9 @@ { "typ": 1, "val": "flat" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "preserve-3d" @@ -26235,15 +19168,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "single-transition-property", @@ -26272,15 +19199,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -26319,75 +19240,45 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "embed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "isolate" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bidi-override" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "isolate-override" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "plaintext" @@ -26413,60 +19304,36 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "text" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "contain" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "all" @@ -26490,60 +19357,36 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "non-scaling-stroke" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "non-scaling-size" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "non-rotation" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "fixed-position" @@ -26567,135 +19410,81 @@ { "typ": 1, "val": "baseline" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sub" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "super" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "text-top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "text-bottom" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "middle" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" @@ -26752,57 +19541,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "block" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "x" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "y" - }, - { - "typ": 20 } ] } @@ -26827,27 +19592,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ] } @@ -26871,15 +19624,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "dashed-ident", @@ -26898,15 +19645,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" @@ -26924,30 +19665,18 @@ { "typ": 1, "val": "visible" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hidden" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "collapse" @@ -26967,132 +19696,78 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pre" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "nowrap" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pre-wrap" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pre-line" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "break-spaces" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "white-space-collapse" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "text-wrap" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "white-space-trim" - }, - { - "typ": 20 } ] } @@ -27123,75 +19798,45 @@ { "typ": 1, "val": "collapse" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "discard" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "preserve" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "preserve-breaks" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "preserve-spaces" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "break-spaces" @@ -27226,90 +19871,54 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fit-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "fit-content", @@ -27343,15 +19952,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "animateable-feature", @@ -27370,45 +19973,27 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "break-all" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "keep-all" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "break-word" @@ -27430,15 +20015,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" @@ -27456,15 +20035,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "break-word" @@ -27482,60 +20055,36 @@ { "typ": 1, "val": "horizontal-tb" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vertical-rl" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vertical-lr" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sideways-rl" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "sideways-lr" @@ -27559,15 +20108,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -27585,15 +20128,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -27611,15 +20148,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer" @@ -27637,45 +20168,27 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "reset" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -28264,27 +20777,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ] } @@ -28354,15 +20855,9 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "hsl", @@ -28463,15 +20958,9 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "hsla", @@ -28697,21 +21186,12 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "to" @@ -28722,9 +21202,6 @@ { "typ": 2, "val": "side-or-corner" - }, - { - "typ": 20 } ] } @@ -28840,72 +21317,42 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -28932,87 +21379,51 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "flex" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -29043,36 +21454,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -29092,36 +21488,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -29141,36 +21522,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -29199,15 +21565,9 @@ { "typ": 2, "val": "alpha-value" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -29236,36 +21596,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -29285,36 +21630,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -29334,21 +21664,12 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "hue" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -29375,15 +21696,9 @@ { "typ": 2, "val": "alpha-value" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -29566,27 +21881,15 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "ending-shape" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "size" - }, - { - "typ": 20 } ] } @@ -29649,45 +21952,27 @@ { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "ray-size", "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "contain", "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -29727,21 +22012,12 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "to" @@ -29752,9 +22028,6 @@ { "typ": 2, "val": "side-or-corner" - }, - { - "typ": 20 } ] } @@ -29798,27 +22071,15 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "ending-shape" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "size" - }, - { - "typ": 20 } ] } @@ -29897,18 +22158,12 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgb", @@ -29938,18 +22193,12 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgb", @@ -29988,15 +22237,9 @@ } } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgb", @@ -30079,18 +22322,12 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgba", @@ -30120,18 +22357,12 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgba", @@ -30170,15 +22401,9 @@ } } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgba", @@ -30239,27 +22464,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -30321,27 +22534,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -30364,27 +22565,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -30407,27 +22596,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -30450,27 +22627,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -30636,15 +22801,9 @@ { "typ": 2, "val": "axis" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "scroller" @@ -30671,27 +22830,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -30715,27 +22862,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -30766,27 +22901,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -30809,27 +22932,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -30867,27 +22978,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" - }, - { - "typ": 20 } ] } @@ -30947,27 +23046,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" - }, - { - "typ": 20 } ] } @@ -31040,27 +23127,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" - }, - { - "typ": 20 } ] } @@ -31084,57 +23159,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "before" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "after" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "first-letter" - }, - { - "typ": 20 } ] } @@ -31336,15 +23387,9 @@ { "typ": 2, "val": "axis" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "view-timeline-inset" @@ -31384,105 +23429,63 @@ { "typ": 1, "val": "xx-small" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "x-small" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "small" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "medium" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "large" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "x-large" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "xx-large" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "xxx-large" @@ -31527,15 +23530,9 @@ { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -31553,15 +23550,9 @@ { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -31588,15 +23579,9 @@ { "typ": 2, "val": "color" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color-stop-angle", @@ -31662,30 +23647,18 @@ { "typ": 1, "val": "scroll-position" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "contents" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" @@ -31760,30 +23733,18 @@ { "typ": 1, "val": "scroll" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fixed" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "local" @@ -31845,72 +23806,42 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'~'" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'|'" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'^'" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'$'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 33, "val": "'*'" - }, - { - "typ": 20 } ] } @@ -31941,15 +23872,9 @@ { "typ": 1, "val": "i" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "s" @@ -31981,15 +23906,9 @@ { "typ": 33, "val": "']'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 33, "val": "'['" @@ -32017,27 +23936,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string-token" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "ident-token" - }, - { - "typ": 20 } ] } @@ -32075,27 +23982,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto-fill" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto-fit" - }, - { - "typ": 20 } ] } @@ -32160,27 +24055,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "fixed-size" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "fixed-repeat" - }, - { - "typ": 20 } ] } @@ -32224,27 +24107,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "fixed-size" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "fixed-repeat" - }, - { - "typ": 20 } ] } @@ -32272,45 +24143,27 @@ { "typ": 1, "val": "block" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vertical" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "horizontal" @@ -32332,27 +24185,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "first" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "last" - }, - { - "typ": 20 } ] } @@ -32377,60 +24218,36 @@ { "typ": 5, "val": "inset" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "circle" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "ellipse" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "polygon" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 5, "val": "path" @@ -32454,15 +24271,9 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "image" @@ -32480,18 +24291,12 @@ { "typ": 2, "val": "bg-image" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "bg-position" @@ -32511,60 +24316,36 @@ } ], "isOptional": true - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "repeat-style" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "attachment" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "box" @@ -32590,96 +24371,57 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ] } @@ -32692,75 +24434,45 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ] } @@ -32779,57 +24491,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ] } @@ -32838,15 +24526,9 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 29, "l": [ @@ -32856,48 +24538,27 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } @@ -32910,70 +24571,40 @@ "typ": 2, "val": "length-percentage", "isOptional": true - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ] } @@ -32986,18 +24617,12 @@ "typ": 2, "val": "length-percentage", "isOptional": true - }, - { - "typ": 20 } ] } ] } ] - }, - { - "typ": 20 } ] } @@ -33019,27 +24644,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -33048,30 +24661,18 @@ "min": 1, "max": 2 } - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cover" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "contain" @@ -33106,225 +24707,135 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "multiply" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "screen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "overlay" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darken" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lighten" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "color-dodge" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "color-burn" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hard-light" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "soft-light" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "difference" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "exclusion" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "saturation" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "color" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "luminosity" @@ -33370,30 +24881,18 @@ { "typ": 1, "val": "border-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "padding-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "content-box" @@ -33453,27 +24952,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'+'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 33, "val": "'-'" - }, - { - "typ": 20 } ] } @@ -33507,9 +24994,6 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'*'" @@ -33520,15 +25004,9 @@ { "typ": 2, "val": "calc-value" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 33, "val": "'/'" @@ -33539,9 +25017,6 @@ { "typ": 2, "val": "number" - }, - { - "typ": 20 } ] } @@ -33559,54 +25034,33 @@ { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "dimension" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "calc-constant" - }, - { - "typ": 20 } ], "r": [ @@ -33638,60 +25092,36 @@ { "typ": 1, "val": "e" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pi" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "infinity" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "-infinity" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "NaN" @@ -33715,15 +25145,9 @@ { "typ": 2, "val": "image" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color" @@ -33742,15 +25166,9 @@ "typ": 2, "val": "percentage", "isOptional": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "image" @@ -33854,165 +25272,99 @@ { "typ": 5, "val": "rgb" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "rgba" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "hsl" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "hsla" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "hwb" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "lab" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "lch" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "light-dark" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "hex-color" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "named-color" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "currentcolor" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "deprecated-system-color" @@ -34050,15 +25402,9 @@ { "typ": 2, "val": "color-stop-length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color-stop-angle" @@ -34149,45 +25495,27 @@ { "typ": 33, "val": "'>'" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'+'" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'~'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -34214,27 +25542,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "common-ligatures" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-common-ligatures" - }, - { - "typ": 20 } ] } @@ -34251,165 +25567,99 @@ { "typ": 1, "val": "searchfield" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "textarea" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "push-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "slider-horizontal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "checkbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "radio" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "square-button" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "menulist" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "listbox" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "meter" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "progress-bar" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "button" @@ -34447,150 +25697,90 @@ { "typ": 1, "val": "clear" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "copy" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "source-over" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "source-in" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "source-out" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "source-atop" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "destination-over" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "destination-in" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "destination-out" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "destination-atop" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "xor" @@ -34626,45 +25816,27 @@ { "typ": 1, "val": "add" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "subtract" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "intersect" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "exclude" @@ -34839,27 +26011,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "contextual" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-contextual" - }, - { - "typ": 20 } ] } @@ -34876,45 +26036,27 @@ { "typ": 1, "val": "space-between" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "space-around" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "space-evenly" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "stretch" @@ -34936,102 +26078,60 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "contents" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "image" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "counter" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "quote" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "target" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 5, "val": "leader" - }, - { - "typ": 20 } ] } @@ -35059,60 +26159,36 @@ { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "flex-start" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "flex-end" @@ -35180,15 +26256,9 @@ { "typ": 5, "val": "counter" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 5, "val": "counters" @@ -35251,15 +26321,9 @@ { "typ": 2, "val": "counter-style-name" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "symbols", @@ -35372,60 +26436,36 @@ { "typ": 1, "val": "ease" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ease-in" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ease-out" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ease-in-out" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "cubic-bezier", @@ -35493,405 +26533,243 @@ { "typ": 1, "val": "ActiveBorder" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ActiveCaption" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "AppWorkspace" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "Background" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ButtonFace" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ButtonHighlight" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ButtonShadow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ButtonText" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "CaptionText" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "GrayText" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "Highlight" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "HighlightText" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "InactiveBorder" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "InactiveCaption" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "InactiveCaptionText" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "InfoBackground" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "InfoText" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "Menu" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "MenuText" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "Scrollbar" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ThreeDDarkShadow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ThreeDFace" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ThreeDHighlight" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ThreeDLightShadow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ThreeDShadow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "Window" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "WindowFrame" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "WindowText" @@ -35961,27 +26839,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "discretionary-ligatures" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-discretionary-ligatures" - }, - { - "typ": 20 } ] } @@ -35998,15 +26864,9 @@ { "typ": 1, "val": "contents" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -36024,75 +26884,45 @@ { "typ": 1, "val": "flow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "flow-root" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "table" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "flex" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "grid" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ruby" @@ -36118,165 +26948,99 @@ { "typ": 1, "val": "table-row-group" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "table-header-group" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "table-footer-group" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "table-row" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "table-cell" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "table-column-group" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "table-column" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "table-caption" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ruby-base" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ruby-text" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ruby-base-container" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ruby-text-container" @@ -36314,60 +27078,36 @@ { "typ": 1, "val": "inline-block" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-list-item" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-table" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-flex" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline-grid" @@ -36395,42 +27135,24 @@ "typ": 2, "val": "display-outside", "isOptional": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "flow" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "flow-root" - }, - { - "typ": 20 } ] } @@ -36438,15 +27160,9 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "list-item" @@ -36464,30 +27180,18 @@ { "typ": 1, "val": "block" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inline" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "run-in" @@ -36534,87 +27238,51 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "jis78" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "jis83" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "jis90" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "jis04" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "simplified" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "traditional" - }, - { - "typ": 20 } ] } @@ -36639,27 +27307,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "full-width" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "proportional-width" - }, - { - "typ": 20 } ] } @@ -36736,15 +27392,9 @@ { "typ": 1, "val": "circle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ellipse" @@ -36847,15 +27497,9 @@ { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident", @@ -36881,42 +27525,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "on" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "off" - }, - { - "typ": 20 } ] } @@ -36934,11 +27560,8 @@ "typ": 27, "l": [ { - "typ": 1, - "val": "@stylistic" - }, - { - "typ": 20 + "typ": 34, + "val": "stylistic" } ], "r": [ @@ -36946,14 +27569,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@historical-forms" - }, - { - "typ": 20 + "typ": 34, + "val": "historical-forms" } ], "r": [ @@ -36961,14 +27578,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@styleset" - }, - { - "typ": 20 + "typ": 34, + "val": "styleset" } ], "r": [ @@ -36976,14 +27587,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@character-variant" - }, - { - "typ": 20 + "typ": 34, + "val": "character-variant" } ], "r": [ @@ -36991,14 +27596,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@swash" - }, - { - "typ": 20 + "typ": 34, + "val": "swash" } ], "r": [ @@ -37006,23 +27605,14 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@ornaments" - }, - { - "typ": 20 + "typ": 34, + "val": "ornaments" } ], "r": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@annotation" + "typ": 34, + "val": "annotation" } ] } @@ -37098,8 +27688,7 @@ "atLeastOnce": true }, { - "typ": 1, - "val": ";" + "typ": 37 } ] }, @@ -37130,15 +27719,9 @@ { "typ": 1, "val": "nonzero" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "evenodd" @@ -37156,135 +27739,81 @@ { "typ": 5, "val": "blur" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "brightness" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "contrast" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "drop-shadow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "grayscale" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "hue-rotate" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "invert" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "opacity" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "saturate" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 5, "val": "sepia" @@ -37318,27 +27847,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "filter-function" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" - }, - { - "typ": 20 } ] } @@ -37356,33 +27873,21 @@ { "typ": 3, "val": "background-color" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "bg-image" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "bg-position" @@ -37402,60 +27907,36 @@ } ], "isOptional": true - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "repeat-style" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "attachment" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "box" @@ -37551,18 +28032,12 @@ { "typ": 2, "val": "fixed-breadth" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "minmax", @@ -37585,15 +28060,9 @@ "val": "track-breadth" } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "minmax", @@ -37632,135 +28101,81 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ultra-condensed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "extra-condensed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "condensed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "semi-condensed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "semi-expanded" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "expanded" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "extra-expanded" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ultra-expanded" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -37794,27 +28209,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "small-caps" - }, - { - "typ": 20 } ] } @@ -37831,30 +28234,18 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bold" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "number", @@ -37878,15 +28269,9 @@ { "typ": 2, "val": "frequency" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -37914,23 +28299,11 @@ { "typ": 2, "val": "any-value" - }, - { - "typ": 20 } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, - { - "typ": 20 - }, { "typ": 2, "val": "ident" @@ -37941,9 +28314,6 @@ { "typ": 2, "val": "any-value" - }, - { - "typ": 20 } ] } @@ -37958,60 +28328,36 @@ { "typ": 1, "val": "serif" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sans-serif" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cursive" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fantasy" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "monospace" @@ -38035,60 +28381,36 @@ { "typ": 1, "val": "serif" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "sans-serif" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cursive" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fantasy" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "monospace" @@ -38112,45 +28434,27 @@ { "typ": 2, "val": "shape-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fill-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "stroke-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "view-box" @@ -38172,75 +28476,45 @@ { "typ": 5, "val": "linear-gradient" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "repeating-linear-gradient" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "radial-gradient" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "repeating-radial-gradient" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "conic-gradient" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 5, "val": "repeating-conic-gradient" @@ -38281,33 +28555,21 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -38317,15 +28579,9 @@ { "typ": 2, "val": "integer" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident", @@ -38334,15 +28590,9 @@ ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -38352,42 +28602,24 @@ { "typ": 1, "val": "span" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ] } @@ -38414,27 +28646,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "historical-ligatures" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-historical-ligatures" - }, - { - "typ": 20 } ] } @@ -38487,15 +28707,9 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "hsl", @@ -38596,15 +28810,9 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "hsla", @@ -38669,15 +28877,9 @@ { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" @@ -38717,15 +28919,9 @@ { "typ": 2, "val": "hue" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -38746,15 +28942,9 @@ { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -38775,15 +28965,9 @@ { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -38810,15 +28994,9 @@ { "typ": 2, "val": "alpha-value" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -38868,90 +29046,54 @@ { "typ": 2, "val": "url" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "image" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "image-set" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "element" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "paint" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "cross-fade" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "gradient" @@ -39049,27 +29191,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "image" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ] } @@ -39084,21 +29214,12 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "resolution" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "type", @@ -39108,9 +29229,6 @@ "val": "string" } ] - }, - { - "typ": 20 } ] } @@ -39127,15 +29245,9 @@ { "typ": 2, "val": "url" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" @@ -39153,15 +29265,9 @@ { "typ": 1, "val": "ltr" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "rtl" @@ -39179,45 +29285,27 @@ { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -39293,15 +29381,9 @@ { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" @@ -39343,45 +29425,27 @@ { "typ": 1, "val": "from" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "to" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "timeline-range-name" @@ -39417,30 +29481,18 @@ { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -39460,36 +29512,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -39509,36 +29546,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -39567,15 +29589,9 @@ { "typ": 2, "val": "alpha-value" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -39651,30 +29667,18 @@ { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -39694,36 +29698,21 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -39743,21 +29732,12 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "hue" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -39784,15 +29764,9 @@ { "typ": 2, "val": "alpha-value" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" @@ -39832,45 +29806,27 @@ { "typ": 1, "val": "dotted" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "solid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "space" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" @@ -39892,15 +29848,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -39967,27 +29917,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "line-names" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "name-repeat" - }, - { - "typ": 20 } ] } @@ -40005,135 +29943,81 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hidden" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dotted" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dashed" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "solid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "double" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "groove" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ridge" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "inset" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "outset" @@ -40167,45 +30051,27 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "thin" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "medium" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "thick" @@ -40260,21 +30126,12 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "to" @@ -40285,9 +30142,6 @@ { "typ": 2, "val": "side-or-corner" - }, - { - "typ": 20 } ] } @@ -40363,18 +30217,12 @@ { "typ": 2, "val": "mask-reference" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "position" @@ -40394,103 +30242,61 @@ } ], "isOptional": true - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "repeat-style" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "geometry-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "geometry-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-clip" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "compositing-operator" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "masking-mode" @@ -40518,57 +30324,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } @@ -40587,57 +30369,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ] } @@ -40659,30 +30417,18 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "image" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "mask-source" @@ -40711,30 +30457,18 @@ { "typ": 1, "val": "alpha" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "luminance" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "match-source" @@ -40839,45 +30573,27 @@ { "typ": 2, "val": "media-not" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "media-and" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "media-or" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "media-in-parens" @@ -40899,30 +30615,18 @@ { "typ": 2, "val": "media-not" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "media-and" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "media-in-parens" @@ -40946,42 +30650,24 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "mf-plain" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "mf-boolean" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "mf-range" - }, - { - "typ": 20 } ] } @@ -41008,30 +30694,18 @@ "val": "media-condition" } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "media-feature" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "general-enclosed" @@ -41096,42 +30770,24 @@ { "typ": 2, "val": "media-condition" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "not" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "only" - }, - { - "typ": 20 } ] } @@ -41248,27 +30904,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'<'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 33, "val": "'>'" - }, - { - "typ": 20 } ] } @@ -41289,18 +30933,12 @@ { "typ": 2, "val": "mf-value" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "mf-value" @@ -41314,27 +30952,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'<'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 33, "val": "'>'" - }, - { - "typ": 20 } ] } @@ -41355,18 +30981,12 @@ { "typ": 2, "val": "mf-name" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "mf-value" @@ -41414,15 +31034,9 @@ { "typ": 2, "val": "mf-value" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "mf-value" @@ -41488,45 +31102,27 @@ { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "dimension" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "ident" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "ratio" @@ -41568,57 +31164,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -41643,72 +31215,42 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "flex" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ] } @@ -41762,9 +31304,6 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "integer", @@ -41772,21 +31311,12 @@ 1, null ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto-fill" - }, - { - "typ": 20 } ] } @@ -41816,1464 +31346,879 @@ { "typ": 1, "val": "transparent" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "aliceblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "antiquewhite" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "aqua" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "aquamarine" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "azure" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "beige" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bisque" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "black" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "blanchedalmond" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "blue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "blueviolet" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "brown" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "burlywood" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cadetblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "chartreuse" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "chocolate" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "coral" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cornflowerblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cornsilk" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "crimson" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cyan" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkcyan" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkgoldenrod" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkgray" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkgreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkgrey" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkkhaki" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkmagenta" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkolivegreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkorange" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkorchid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkred" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darksalmon" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkseagreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkslateblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkslategray" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkslategrey" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkturquoise" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "darkviolet" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "deeppink" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "deepskyblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dimgray" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dimgrey" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "dodgerblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "firebrick" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "floralwhite" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "forestgreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "fuchsia" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "gainsboro" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ghostwhite" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "gold" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "goldenrod" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "gray" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "green" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "greenyellow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "grey" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "honeydew" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "hotpink" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "indianred" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "indigo" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ivory" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "khaki" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lavender" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lavenderblush" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lawngreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lemonchiffon" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightcoral" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightcyan" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightgoldenrodyellow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightgray" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightgreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightgrey" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightpink" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightsalmon" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightseagreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightskyblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightslategray" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightslategrey" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightsteelblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lightyellow" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lime" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "limegreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "linen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "magenta" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "maroon" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mediumaquamarine" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mediumblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mediumorchid" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mediumpurple" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mediumseagreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mediumslateblue" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mediumspringgreen" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mediumturquoise" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mediumvioletred" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "midnightblue" - }, - { - "typ": 20 } ], "r": [ @@ -43281,14 +32226,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "mintcream" - }, - { - "typ": 20 } ], "r": [ @@ -43296,14 +32235,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "mistyrose" - }, - { - "typ": 20 } ], "r": [ @@ -43311,14 +32244,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "moccasin" - }, - { - "typ": 20 } ], "r": [ @@ -43326,14 +32253,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "navajowhite" - }, - { - "typ": 20 } ], "r": [ @@ -43341,14 +32262,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "navy" - }, - { - "typ": 20 } ], "r": [ @@ -43356,14 +32271,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "oldlace" - }, - { - "typ": 20 } ], "r": [ @@ -43371,14 +32280,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "olive" - }, - { - "typ": 20 } ], "r": [ @@ -43386,14 +32289,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "olivedrab" - }, - { - "typ": 20 } ], "r": [ @@ -43401,14 +32298,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "orange" - }, - { - "typ": 20 } ], "r": [ @@ -43416,14 +32307,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "orangered" - }, - { - "typ": 20 } ], "r": [ @@ -43431,14 +32316,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "orchid" - }, - { - "typ": 20 } ], "r": [ @@ -43446,14 +32325,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "palegoldenrod" - }, - { - "typ": 20 } ], "r": [ @@ -43461,14 +32334,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "palegreen" - }, - { - "typ": 20 } ], "r": [ @@ -43476,14 +32343,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "paleturquoise" - }, - { - "typ": 20 } ], "r": [ @@ -43491,14 +32352,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "palevioletred" - }, - { - "typ": 20 } ], "r": [ @@ -43506,14 +32361,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "papayawhip" - }, - { - "typ": 20 } ], "r": [ @@ -43521,14 +32370,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "peachpuff" - }, - { - "typ": 20 } ], "r": [ @@ -43536,14 +32379,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "peru" - }, - { - "typ": 20 } ], "r": [ @@ -43551,14 +32388,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "pink" - }, - { - "typ": 20 } ], "r": [ @@ -43566,14 +32397,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "plum" - }, - { - "typ": 20 } ], "r": [ @@ -43581,14 +32406,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "powderblue" - }, - { - "typ": 20 } ], "r": [ @@ -43596,14 +32415,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "purple" - }, - { - "typ": 20 } ], "r": [ @@ -43611,14 +32424,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "rebeccapurple" - }, - { - "typ": 20 } ], "r": [ @@ -43626,14 +32433,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "red" - }, - { - "typ": 20 } ], "r": [ @@ -43641,14 +32442,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "rosybrown" - }, - { - "typ": 20 } ], "r": [ @@ -43656,14 +32451,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "royalblue" - }, - { - "typ": 20 } ], "r": [ @@ -43671,14 +32460,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "saddlebrown" - }, - { - "typ": 20 } ], "r": [ @@ -43686,14 +32469,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "salmon" - }, - { - "typ": 20 } ], "r": [ @@ -43701,14 +32478,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "sandybrown" - }, - { - "typ": 20 } ], "r": [ @@ -43716,14 +32487,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "seagreen" - }, - { - "typ": 20 } ], "r": [ @@ -43731,14 +32496,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "seashell" - }, - { - "typ": 20 } ], "r": [ @@ -43746,14 +32505,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "sienna" - }, - { - "typ": 20 } ], "r": [ @@ -43761,14 +32514,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "silver" - }, - { - "typ": 20 } ], "r": [ @@ -43776,14 +32523,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "skyblue" - }, - { - "typ": 20 } ], "r": [ @@ -43791,14 +32532,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "slateblue" - }, - { - "typ": 20 } ], "r": [ @@ -43806,14 +32541,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "slategray" - }, - { - "typ": 20 } ], "r": [ @@ -43821,14 +32550,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "slategrey" - }, - { - "typ": 20 } ], "r": [ @@ -43836,14 +32559,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "snow" - }, - { - "typ": 20 } ], "r": [ @@ -43851,14 +32568,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "springgreen" - }, - { - "typ": 20 } ], "r": [ @@ -43866,14 +32577,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "steelblue" - }, - { - "typ": 20 } ], "r": [ @@ -43881,14 +32586,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "tan" - }, - { - "typ": 20 } ], "r": [ @@ -43896,14 +32595,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "teal" - }, - { - "typ": 20 } ], "r": [ @@ -43911,14 +32604,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "thistle" - }, - { - "typ": 20 } ], "r": [ @@ -43926,14 +32613,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "tomato" - }, - { - "typ": 20 } ], "r": [ @@ -43941,14 +32622,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "turquoise" - }, - { - "typ": 20 } ], "r": [ @@ -43956,14 +32631,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "violet" - }, - { - "typ": 20 } ], "r": [ @@ -43971,14 +32640,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "wheat" - }, - { - "typ": 20 } ], "r": [ @@ -43986,14 +32649,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "white" - }, - { - "typ": 20 } ], "r": [ @@ -44001,14 +32658,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "whitesmoke" - }, - { - "typ": 20 } ], "r": [ @@ -44016,21 +32667,12 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { "typ": 1, "val": "yellow" - }, - { - "typ": 20 } ], "r": [ { - "typ": 20 - }, - { "typ": 1, "val": "yellowgreen" } @@ -44350,27 +32992,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "ident-token" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 33, "val": "'*'" - }, - { - "typ": 20 } ] } @@ -44395,15 +33025,9 @@ { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -44421,27 +33045,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lining-nums" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "oldstyle-nums" - }, - { - "typ": 20 } ] } @@ -44458,27 +33070,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "diagonal-fractions" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "stacked-fractions" - }, - { - "typ": 20 } ] } @@ -44495,27 +33095,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "proportional-nums" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "tabular-nums" - }, - { - "typ": 20 } ] } @@ -44532,30 +33120,18 @@ { "typ": 2, "val": "an-plus-b" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "even" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "odd" @@ -44595,15 +33171,9 @@ { "typ": 1, "val": "unsafe" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "safe" @@ -44621,15 +33191,9 @@ { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -44656,8 +33220,7 @@ "typ": 22, "chi": [ { - "typ": 1, - "val": ";" + "typ": 37 }, { "typ": 20 @@ -44668,15 +33231,9 @@ } ], "isOptional": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "page-margin-box" @@ -44729,11 +33286,8 @@ "typ": 27, "l": [ { - "typ": 1, - "val": "@top-left-corner" - }, - { - "typ": 20 + "typ": 34, + "val": "top-left-corner" } ], "r": [ @@ -44741,14 +33295,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@top-left" - }, - { - "typ": 20 + "typ": 34, + "val": "top-left" } ], "r": [ @@ -44756,14 +33304,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@top-center" - }, - { - "typ": 20 + "typ": 34, + "val": "top-center" } ], "r": [ @@ -44771,14 +33313,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@top-right" - }, - { - "typ": 20 + "typ": 34, + "val": "top-right" } ], "r": [ @@ -44786,14 +33322,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@top-right-corner" - }, - { - "typ": 20 + "typ": 34, + "val": "top-right-corner" } ], "r": [ @@ -44801,14 +33331,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@bottom-left-corner" - }, - { - "typ": 20 + "typ": 34, + "val": "bottom-left-corner" } ], "r": [ @@ -44816,14 +33340,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@bottom-left" - }, - { - "typ": 20 + "typ": 34, + "val": "bottom-left" } ], "r": [ @@ -44831,14 +33349,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@bottom-center" - }, - { - "typ": 20 + "typ": 34, + "val": "bottom-center" } ], "r": [ @@ -44846,14 +33358,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@bottom-right" - }, - { - "typ": 20 + "typ": 34, + "val": "bottom-right" } ], "r": [ @@ -44861,14 +33367,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@bottom-right-corner" - }, - { - "typ": 20 + "typ": 34, + "val": "bottom-right-corner" } ], "r": [ @@ -44876,14 +33376,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@left-top" - }, - { - "typ": 20 + "typ": 34, + "val": "left-top" } ], "r": [ @@ -44891,14 +33385,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@left-middle" - }, - { - "typ": 20 + "typ": 34, + "val": "left-middle" } ], "r": [ @@ -44906,14 +33394,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@left-bottom" - }, - { - "typ": 20 + "typ": 34, + "val": "left-bottom" } ], "r": [ @@ -44921,14 +33403,8 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@right-top" - }, - { - "typ": 20 + "typ": 34, + "val": "right-top" } ], "r": [ @@ -44936,23 +33412,14 @@ "typ": 27, "l": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@right-middle" - }, - { - "typ": 20 + "typ": 34, + "val": "right-middle" } ], "r": [ { - "typ": 20 - }, - { - "typ": 1, - "val": "@right-bottom" + "typ": 34, + "val": "right-bottom" } ] } @@ -45012,15 +33479,9 @@ "typ": 2, "val": "pseudo-page", "atLeastOnce": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "ident" @@ -45046,135 +33507,81 @@ { "typ": 1, "val": "A5" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "A4" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "A3" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "B5" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "B4" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "JIS-B5" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "JIS-B4" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "letter" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "legal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "ledger" @@ -45279,9 +33686,6 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length", @@ -45289,21 +33693,12 @@ 0, null ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ] } @@ -45374,186 +33769,111 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ] } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ] } @@ -45572,57 +33892,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ] } @@ -45632,15 +33928,9 @@ } ], "isOptional": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 29, "l": [ @@ -45653,27 +33943,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } @@ -45687,15 +33965,9 @@ "val": "length-percentage" } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -45705,27 +33977,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ] } @@ -45741,9 +34001,6 @@ ] } ] - }, - { - "typ": 20 } ] } @@ -45796,15 +34053,9 @@ { "typ": 2, "val": "ident-token" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 33, "val": "':'" @@ -45866,57 +34117,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "first" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "blank" - }, - { - "typ": 20 } ] } @@ -45937,45 +34164,27 @@ { "typ": 1, "val": "open-quote" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "close-quote" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-open-quote" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-close-quote" @@ -46001,27 +34210,15 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "ending-shape" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "size" - }, - { - "typ": 20 } ] } @@ -46117,45 +34314,27 @@ { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "ray-size", "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "contain", "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ @@ -46188,60 +34367,36 @@ { "typ": 1, "val": "closest-side" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "closest-corner" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "farthest-side" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "farthest-corner" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "sides" @@ -46292,15 +34447,9 @@ { "typ": 1, "val": "larger" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "smaller" @@ -46343,87 +34492,51 @@ { "typ": 1, "val": "repeat-x" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "repeat-y" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "repeat" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "space" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "round" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "no-repeat" - }, - { - "typ": 20 } ] } @@ -46517,21 +34630,12 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "to" @@ -46542,9 +34646,6 @@ { "typ": 2, "val": "side-or-corner" - }, - { - "typ": 20 } ] } @@ -46588,27 +34689,15 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "ending-shape" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "size" - }, - { - "typ": 20 } ] } @@ -46702,18 +34791,12 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgb", @@ -46743,18 +34826,12 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgb", @@ -46793,15 +34870,9 @@ } } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgb", @@ -46884,18 +34955,12 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgba", @@ -46925,18 +34990,12 @@ "isOptional": true } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgba", @@ -46975,15 +35034,9 @@ } } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "rgba", @@ -47044,27 +35097,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -47126,27 +35167,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -47169,27 +35198,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -47212,27 +35229,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -47255,27 +35260,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -47340,45 +35333,27 @@ { "typ": 1, "val": "nearest" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "up" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "down" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "to-zero" @@ -47419,27 +35394,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ] } @@ -47467,27 +35430,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ] } @@ -47515,27 +35466,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ] } @@ -47558,27 +35497,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ] } @@ -47601,27 +35528,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" - }, - { - "typ": 20 } ] } @@ -47644,27 +35559,15 @@ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "axis" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "scroller" - }, - { - "typ": 20 } ] } @@ -47684,15 +35587,9 @@ { "typ": 1, "val": "root" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "nearest" @@ -47710,90 +35607,54 @@ { "typ": 1, "val": "center" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "self-start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "self-end" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "flex-start" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "flex-end" @@ -47821,30 +35682,18 @@ { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "closest-side" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "farthest-side" @@ -47883,27 +35732,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -47927,27 +35764,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -47978,27 +35803,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -48021,27 +35834,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "angle" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "zero" - }, - { - "typ": 20 } ] } @@ -48079,15 +35880,9 @@ "typ": 1, "val": "inset", "isOptional": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length", @@ -48097,15 +35892,9 @@ } } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color", @@ -48131,15 +35920,9 @@ "min": 2, "max": 3 } - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "color", @@ -48205,15 +35988,9 @@ { "typ": 2, "val": "box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "margin-box" @@ -48234,67 +36011,37 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "left" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "right" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "top" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "bottom" - }, - { - "typ": 20 } ] } @@ -48328,148 +36075,88 @@ { "typ": 3, "val": "animation-duration" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "easing-function" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 3, "val": "animation-delay" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "single-animation-iteration-count" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "single-animation-direction" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "single-animation-fill-mode" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "single-animation-play-state" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 22, "chi": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "keyframes-name" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "single-animation-timeline" @@ -48501,45 +36188,27 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "reverse" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "alternate" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "alternate-reverse" @@ -48561,45 +36230,27 @@ { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "forwards" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "backwards" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "both" @@ -48621,15 +36272,9 @@ { "typ": 1, "val": "infinite" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "number" @@ -48647,15 +36292,9 @@ { "typ": 1, "val": "running" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "paused" @@ -48673,60 +36312,36 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "dashed-ident" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "scroll" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 5, "val": "view" @@ -48753,85 +36368,49 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "none" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "single-transition-property" - }, - { - "typ": 20 } ] } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "time" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "easing-function" - }, - { - "typ": 20 } ], "r": [ { "typ": 28, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "time" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "transition-behavior-value" @@ -48855,15 +36434,9 @@ { "typ": 1, "val": "all" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" @@ -48881,75 +36454,45 @@ { "typ": 1, "val": "closest-side" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "farthest-side" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "closest-corner" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "farthest-corner" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "length" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage", @@ -48994,75 +36537,45 @@ { "typ": 1, "val": "jump-start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "jump-end" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "jump-none" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "jump-both" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "start" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "end" @@ -49088,30 +36601,18 @@ { "typ": 1, "val": "step-start" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "step-end" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "steps", @@ -49153,45 +36654,27 @@ { "typ": 2, "val": "id-selector" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "class-selector" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "attribute-selector" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "pseudo-class-selector" @@ -49220,18 +36703,12 @@ { "typ": 2, "val": "supports-in-parens" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "supports-in-parens" @@ -49255,15 +36732,9 @@ } ], "isRepeatable": true - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "supports-in-parens" @@ -49309,30 +36780,18 @@ "val": "supports-condition" } ] - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "supports-feature" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "general-enclosed" @@ -49352,15 +36811,9 @@ { "typ": 2, "val": "supports-decl" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "supports-selector-fn" @@ -49408,30 +36861,18 @@ { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "image" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" @@ -49466,30 +36907,18 @@ { "typ": 5, "val": "target-counter" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "target-counters" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 5, "val": "target-text" @@ -49513,27 +36942,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" - }, - { - "typ": 20 } ] } @@ -49593,27 +37010,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" - }, - { - "typ": 20 } ] } @@ -49686,27 +37091,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "string" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "url" - }, - { - "typ": 20 } ] } @@ -49730,57 +37123,33 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "before" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "after" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "first-letter" - }, - { - "typ": 20 } ] } @@ -49811,15 +37180,9 @@ { "typ": 2, "val": "time" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "percentage" @@ -49837,75 +37200,45 @@ { "typ": 1, "val": "cover" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "contain" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "entry" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "exit" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "entry-crossing" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "exit-crossing" @@ -49931,30 +37264,18 @@ { "typ": 1, "val": "linear" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "cubic-bezier-timing-function" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "step-timing-function" @@ -49974,60 +37295,36 @@ { "typ": 2, "val": "length-percentage" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "flex" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "min-content" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "max-content" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "auto" @@ -50062,27 +37359,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 2, "val": "track-size" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "track-repeat" - }, - { - "typ": 20 } ] } @@ -50169,18 +37454,12 @@ { "typ": 2, "val": "track-breadth" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 18, "val": "minmax", @@ -50203,15 +37482,9 @@ "val": "track-breadth" } ] - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 18, "val": "fit-content", @@ -50237,300 +37510,180 @@ { "typ": 5, "val": "matrix" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "translate" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "translateX" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "translateY" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "scale" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "scaleX" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "scaleY" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "rotate" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "skew" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "skewX" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "skewY" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "matrix3d" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "translate3d" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "translateZ" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "scale3d" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "scaleZ" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "rotate3d" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "rotateX" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "rotateY" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 5, "val": "rotateZ" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 5, "val": "perspective" @@ -50596,15 +37749,9 @@ { "typ": 1, "val": "normal" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "allow-discrete" @@ -50747,570 +37894,342 @@ { "typ": 1, "val": "string" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "color" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "url" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "integer" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "number" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "length" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "angle" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "time" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "frequency" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cap" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ch" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "em" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ex" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ic" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "lh" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "rlh" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "rem" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vb" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vi" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vw" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vh" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vmin" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "vmax" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "mm" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "Q" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "cm" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "in" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pt" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "pc" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "px" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "deg" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "grad" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "rad" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "turn" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ms" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "s" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "Hz" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "kHz" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "%" @@ -51402,15 +38321,9 @@ { "typ": 2, "val": "wq-name" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "ns-prefix", @@ -51482,15 +38395,9 @@ { "typ": 2, "val": "axis" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 3, "val": "view-timeline-inset" @@ -51513,15 +38420,9 @@ { "typ": 1, "val": "auto" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "length-percentage" @@ -51539,30 +38440,18 @@ { "typ": 1, "val": "content-box" - }, - { - "typ": 20 } ], "r": [ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "padding-box" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "border-box" @@ -51668,27 +38557,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 1, "val": "ltr" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 1, "val": "rtl" - }, - { - "typ": 20 } ] } @@ -52515,15 +39392,9 @@ { "typ": 31, "val": "::cue" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 32, "val": "::cue", @@ -52547,15 +39418,9 @@ { "typ": 31, "val": "::cue-region" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 32, "val": "::cue-region", @@ -52695,27 +39560,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'*'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ] } @@ -52738,27 +39591,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'*'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ] } @@ -52781,27 +39622,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'*'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ] } @@ -52824,27 +39653,15 @@ { "typ": 27, "l": [ - { - "typ": 20 - }, { "typ": 33, "val": "'*'" - }, - { - "typ": 20 } ], "r": [ - { - "typ": 20 - }, { "typ": 2, "val": "custom-ident" - }, - { - "typ": 20 } ] } @@ -52872,5 +39689,1163 @@ } ] } + }, + "atRules": { + "@charset": { + "syntax": "@charset \"\";", + "ast": [ + { + "typ": 34, + "val": "charset", + "prelude": [ + { + "typ": 38, + "val": "\"" + }, + { + "typ": 2, + "val": "charset" + }, + { + "typ": 38, + "val": "\"" + }, + { + "typ": 37 + } + ] + } + ] + }, + "@counter-style": { + "syntax": "@counter-style {\n [ system: ; ] ||\n [ symbols: ; ] ||\n [ additive-symbols: ; ] ||\n [ negative: ; ] ||\n [ prefix: ; ] ||\n [ suffix: ; ] ||\n [ range: ; ] ||\n [ pad: ; ] ||\n [ speak-as: ; ] ||\n [ fallback: ; ]\n}", + "ast": [ + { + "typ": 34, + "val": "counter-style", + "prelude": [ + { + "typ": 2, + "val": "counter-style-name" + } + ], + "chi": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "system", + "val": { + "typ": 2, + "val": "counter-system" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "symbols", + "val": { + "typ": 2, + "val": "counter-symbols" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "additive-symbols", + "val": { + "typ": 2, + "val": "additive-symbols" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "negative", + "val": { + "typ": 2, + "val": "negative-symbol" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "prefix", + "val": { + "typ": 2, + "val": "prefix" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "suffix", + "val": { + "typ": 2, + "val": "suffix" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "range", + "val": { + "typ": 2, + "val": "range" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "pad", + "val": { + "typ": 2, + "val": "padding" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "speak-as", + "val": { + "typ": 2, + "val": "speak-as" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "fallback", + "val": { + "typ": 2, + "val": "counter-style-name" + } + }, + { + "typ": 37 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "@document": { + "syntax": "@document [ | url-prefix() | domain() | media-document() | regexp() ]# {\n \n}", + "ast": [ + { + "typ": 34, + "val": "document" + }, + { + "typ": 22, + "chi": [ + { + "typ": 27, + "l": [ + { + "typ": 2, + "val": "url" + } + ], + "r": [ + { + "typ": 27, + "l": [ + { + "typ": 18, + "val": "url-prefix", + "chi": [ + { + "typ": 2, + "val": "string" + } + ] + } + ], + "r": [ + { + "typ": 27, + "l": [ + { + "typ": 18, + "val": "domain", + "chi": [ + { + "typ": 2, + "val": "string" + } + ] + } + ], + "r": [ + { + "typ": 27, + "l": [ + { + "typ": 18, + "val": "media-document", + "chi": [ + { + "typ": 2, + "val": "string" + } + ] + } + ], + "r": [ + { + "typ": 18, + "val": "regexp", + "chi": [ + { + "typ": 2, + "val": "string" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ], + "isList": true, + "occurence": { + "min": 0, + "max": 0 + } + } + ] + }, + "@font-palette-values": { + "syntax": "@font-palette-values { }", + "ast": [ + { + "typ": 34, + "val": "font-palette-values", + "prelude": [ + { + "typ": 2, + "val": "dashed-ident" + } + ], + "chi": [ + { + "typ": 2, + "val": "declaration-list" + } + ] + } + ] + }, + "@font-face": { + "syntax": "@font-face {\n [ font-family: ; ] ||\n [ src: ; ] ||\n [ unicode-range: ; ] ||\n [ font-variant: ; ] ||\n [ font-feature-settings: ; ] ||\n [ font-variation-settings: ; ] ||\n [ font-stretch: ; ] ||\n [ font-weight: ; ] ||\n [ font-style: ; ] ||\n [ size-adjust: ; ] ||\n [ ascent-override: ; ] ||\n [ descent-override: ; ] ||\n [ line-gap-override: ; ]\n}", + "ast": [ + { + "typ": 34, + "val": "font-face", + "chi": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "font-family", + "val": { + "typ": 2, + "val": "family-name" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "src", + "val": { + "typ": 2, + "val": "src" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "unicode-range", + "val": { + "typ": 2, + "val": "unicode-range" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "font-variant", + "val": { + "typ": 2, + "val": "font-variant" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "font-feature-settings", + "val": { + "typ": 2, + "val": "font-feature-settings" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "font-variation-settings", + "val": { + "typ": 2, + "val": "font-variation-settings" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "font-stretch", + "val": { + "typ": 2, + "val": "font-stretch" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "font-weight", + "val": { + "typ": 2, + "val": "font-weight" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "font-style", + "val": { + "typ": 2, + "val": "font-style" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "size-adjust", + "val": { + "typ": 2, + "val": "size-adjust" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "ascent-override", + "val": { + "typ": 2, + "val": "ascent-override" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 28, + "l": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "descent-override", + "val": { + "typ": 2, + "val": "descent-override" + } + }, + { + "typ": 37 + } + ] + } + ], + "r": [ + { + "typ": 22, + "chi": [ + { + "typ": 36, + "nam": "line-gap-override", + "val": { + "typ": 2, + "val": "line-gap-override" + } + }, + { + "typ": 37 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "@font-feature-values": { + "syntax": "@font-feature-values # {\n \n}", + "ast": [ + { + "typ": 34, + "val": "font-feature-values", + "prelude": [ + { + "typ": 2, + "val": "family-name", + "isList": true + } + ], + "chi": [ + { + "typ": 2, + "val": "feature-value-block-list" + } + ] + } + ] + }, + "@import": { + "syntax": "@import [ | ]\n [ layer | layer() ]?\n [ supports( [ | ] ) ]?\n ? ;", + "ast": [ + { + "typ": 34, + "val": "import" + }, + { + "typ": 22, + "chi": [ + { + "typ": 27, + "l": [ + { + "typ": 2, + "val": "string" + } + ], + "r": [ + { + "typ": 2, + "val": "url" + } + ] + } + ] + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 22, + "chi": [ + { + "typ": 27, + "l": [ + { + "typ": 1, + "val": "layer" + } + ], + "r": [ + { + "typ": 18, + "val": "layer", + "chi": [ + { + "typ": 2, + "val": "layer-name" + } + ] + } + ] + } + ], + "isOptional": true + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 22, + "chi": [ + { + "typ": 18, + "val": "supports", + "chi": [ + { + "typ": 22, + "chi": [ + { + "typ": 27, + "l": [ + { + "typ": 2, + "val": "supports-condition" + } + ], + "r": [ + { + "typ": 2, + "val": "declaration" + } + ] + } + ] + } + ] + } + ], + "isOptional": true + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 20 + }, + { + "typ": 2, + "val": "media-query-list", + "isOptional": true + }, + { + "typ": 20 + }, + { + "typ": 37 + } + ] + }, + "@keyframes": { + "syntax": "@keyframes {\n \n}", + "ast": [ + { + "typ": 34, + "val": "keyframes", + "prelude": [ + { + "typ": 2, + "val": "keyframes-name" + } + ], + "chi": [ + { + "typ": 2, + "val": "keyframe-block-list" + } + ] + } + ] + }, + "@layer": { + "syntax": "@layer [ # | ? {\n \n} ]", + "ast": [ + { + "typ": 34, + "val": "layer" + }, + { + "typ": 22, + "chi": [ + { + "typ": 27, + "l": [ + { + "typ": 2, + "val": "layer-name", + "isList": true + } + ], + "r": [ + { + "typ": 2, + "val": "layer-name", + "isOptional": true, + "occurence": { + "min": 0, + "max": 0 + } + } + ] + } + ] + } + ] + }, + "@media": { + "syntax": "@media {\n \n}", + "ast": [ + { + "typ": 34, + "val": "media", + "prelude": [ + { + "typ": 2, + "val": "media-query-list" + } + ], + "chi": [ + { + "typ": 2, + "val": "group-rule-body" + } + ] + } + ] + }, + "@namespace": { + "syntax": "@namespace ? [ | ];", + "ast": [ + { + "typ": 34, + "val": "namespace", + "prelude": [ + { + "typ": 2, + "val": "namespace-prefix", + "isOptional": true + }, + { + "typ": 20 + }, + { + "typ": 22, + "chi": [ + { + "typ": 27, + "l": [ + { + "typ": 2, + "val": "string" + } + ], + "r": [ + { + "typ": 2, + "val": "url" + } + ] + } + ] + }, + { + "typ": 37 + } + ] + } + ] + }, + "@page": { + "syntax": "@page {\n \n}", + "ast": [ + { + "typ": 34, + "val": "page", + "prelude": [ + { + "typ": 2, + "val": "page-selector-list" + } + ], + "chi": [ + { + "typ": 2, + "val": "page-body" + } + ] + } + ] + }, + "@position-try": { + "syntax": "@position-try {\n \n}", + "ast": [ + { + "typ": 34, + "val": "position-try", + "prelude": [ + { + "typ": 2, + "val": "dashed-ident" + } + ], + "chi": [ + { + "typ": 2, + "val": "declaration-list" + } + ] + } + ] + }, + "@property": { + "syntax": "@property {\n \n}", + "ast": [ + { + "typ": 34, + "val": "property", + "prelude": [ + { + "typ": 2, + "val": "custom-property-name" + } + ], + "chi": [ + { + "typ": 2, + "val": "declaration-list" + } + ] + } + ] + }, + "@scope": { + "syntax": "@scope [()]? [to ()]? {\n \n}", + "ast": [ + { + "typ": 34, + "val": "scope", + "prelude": [ + { + "typ": 18, + "chi": [ + { + "typ": 2, + "val": "scope-start" + } + ], + "isOptional": true + }, + { + "typ": 20 + }, + { + "typ": 1, + "val": "to" + }, + { + "typ": 18, + "chi": [ + { + "typ": 2, + "val": "scope-end" + } + ], + "isOptional": true + } + ], + "chi": [ + { + "typ": 2, + "val": "rule-list" + } + ] + } + ] + }, + "@starting-style": { + "syntax": "@starting-style {\n | \n}", + "ast": [ + { + "typ": 34, + "val": "starting-style", + "chi": [ + { + "typ": 27, + "l": [ + { + "typ": 2, + "val": "declaration-list" + } + ], + "r": [ + { + "typ": 2, + "val": "group-rule-body" + } + ] + } + ] + } + ] + }, + "@supports": { + "syntax": "@supports {\n \n}", + "ast": [ + { + "typ": 34, + "val": "supports", + "prelude": [ + { + "typ": 2, + "val": "supports-condition" + } + ], + "chi": [ + { + "typ": 2, + "val": "group-rule-body" + } + ] + } + ] + } } } \ No newline at end of file diff --git a/src/lib/validation/config.ts b/src/lib/validation/config.ts index bc91a59..77dfe75 100644 --- a/src/lib/validation/config.ts +++ b/src/lib/validation/config.ts @@ -4,7 +4,7 @@ import type {ValidationConfiguration} from "../../@types/validation"; Object.freeze(config); -export function getConfig(): ValidationConfiguration { +export function getSyntaxConfig(): ValidationConfiguration { // @ts-ignore return config as ValidationConfiguration; } \ No newline at end of file diff --git a/src/lib/validation/index.ts b/src/lib/validation/index.ts index 813c615..c0d7138 100644 --- a/src/lib/validation/index.ts +++ b/src/lib/validation/index.ts @@ -1,3 +1,4 @@ export * from './config'; +export * from './parser'; diff --git a/src/lib/validation/parser/parse.ts b/src/lib/validation/parser/parse.ts index a6747bf..5f4bf55 100644 --- a/src/lib/validation/parser/parse.ts +++ b/src/lib/validation/parser/parse.ts @@ -18,9 +18,14 @@ import { SeparatorToken, StarToken, ValidationAmpersandToken, + ValidationAtRuleDefinitionToken, + ValidationAtRuleToken, ValidationBracketToken, + ValidationCharacterToken, ValidationColumnToken, ValidationCommaToken, + ValidationDeclarationDefinitionToken, + ValidationDeclarationNameToken, ValidationDeclarationToken, ValidationFunctionDefinitionToken, ValidationFunctionToken, @@ -31,18 +36,20 @@ import { ValidationPseudoClassFunctionToken, ValidationPseudoClassToken, ValidationRootToken, + ValidationSemiColonToken, ValidationStringToken, ValidationToken, ValidationTokenEnum, ValidationWhitespaceToken } from "./index"; -import {isPseudo} from '../../syntax'; +import {isIdent, isPseudo} from '../../syntax'; declare type ValidationContext = ValidationRootToken | ValidationBracketToken | ValidationFunctionToken - | ParenthesisToken; + | ParenthesisToken + | ValidationAtRuleDefinitionToken; interface ValidationTokenIteratorValue { value: ValidationToken; @@ -80,25 +87,15 @@ const fetchInit = {headers: {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS // [ || [ / ]? || || [ | border | padding | content | text ] || [ | border | padding | content ] ]# // none | [ [ || ] | inset-area( <'inset-area'> ) ] -function* tokenize(syntax: string): Generator { +function* tokenize(syntax: string, position: Position = {ind: 0, lin: 1, col: 0}, currentPosition: Position = { + ind: -1, + lin: 1, + col: 0 +}): Generator { let i: number = -1; let buffer: string = ''; - const position: Position = { - - ind: 0, - lin: 1, - col: 0 - } - - const currentPosition: Position = { - - ind: -1, - lin: 1, - col: 0 - } - while (++i < syntax.length) { let chr: string = syntax.charAt(i); @@ -107,6 +104,49 @@ function* tokenize(syntax: string): Generator { switch (chr) { + case '\\': + + if (buffer.length > 0) { + + yield getTokenType(buffer, position, currentPosition); + buffer = ''; + } + + buffer += chr; + chr = syntax.charAt(++i); + buffer += chr; + move(currentPosition, chr); + break; + + case ';': + + if (buffer.length > 0) { + + yield getTokenType(buffer, position, currentPosition); + buffer = ''; + } + + yield getTokenType(chr, position, currentPosition); + buffer = ''; + break; + + case ':': + + if (isIdent(buffer)) { + + yield Object.defineProperty({ + typ: ValidationTokenEnum.DeclarationNameToken, + val: buffer + }, 'pos', {...objectProperties, value: {...position}}) as ValidationDeclarationNameToken; + + buffer = ''; + move(currentPosition, chr); + break; + } + + buffer += chr; + break; + case '"': case "'": @@ -118,18 +158,54 @@ function* tokenize(syntax: string): Generator { buffer += chr; while (i + 1 < syntax.length) { + chr = syntax.charAt(++i); buffer += chr; move(currentPosition, chr); + if (chr == '\\') { + + chr = syntax.charAt(++i); + buffer += chr; + move(currentPosition, chr); + continue; + } + if (chr == buffer.charAt(0)) { - yield getTokenType(buffer, position, currentPosition); - buffer = ''; break; } } + // check for type "" or "<'property'>" + if (buffer.at(1) == '<' && buffer.at(-2) == '>') { + + yield Object.defineProperty({ + typ: ValidationTokenEnum.Character, + val: chr + }, 'pos', {...objectProperties, value: {...position}}) as ValidationCharacterToken; + + position = {...currentPosition}; + move(currentPosition, chr); + + buffer = buffer.slice(1, -1); + + yield* tokenize(buffer, position, currentPosition); + + yield Object.defineProperty({ + typ: ValidationTokenEnum.Character, + val: chr + }, 'pos', {...objectProperties, value: {...position}}) as ValidationCharacterToken; + + position = {...currentPosition}; + move(currentPosition, chr); + + buffer = ''; + break; + } + + yield getTokenType(buffer, position, currentPosition); + buffer = ''; break; case '<': @@ -155,6 +231,10 @@ function* tokenize(syntax: string): Generator { break; case ' ': + case '\t': + case '\n': + case '\r': + case '\f': case '|': case '#': case '+': @@ -365,6 +445,166 @@ function matchBrackets(syntax: string, iterator: Iterator): ValidationToken[] { + + const children: ValidationToken[] = []; + let item: ValidationTokenIteratorValue; + let token: ValidationAtRuleDefinitionToken | null = null; + + while ((item = iterator.next() as ValidationTokenIteratorValue) && !item.done) { + + if (item.value.typ == ValidationTokenEnum.AtRule) { + + token = Object.defineProperty({ + ...item.value, + typ: ValidationTokenEnum.AtRuleDefinition + }, 'pos', {...objectProperties, value: item.value.pos}) as ValidationAtRuleDefinitionToken; + + children.push(token); + + item = iterator.next() as ValidationTokenIteratorValue; + + if (item.done) { + + break; + } + + if (item.value.typ != ValidationTokenEnum.Whitespace) { + + console.error('unexpected token', item.value); + } + + item = iterator.next() as ValidationTokenIteratorValue; + + if (item.done) { + + break; + } + + if ([ValidationTokenEnum.Pipe, ValidationTokenEnum.OpenBracket].includes(item.value.typ)) { + + children.push(item.value); + continue; + } + + if (item.value.typ != ValidationTokenEnum.OpenCurlyBrace) { + + if (!('prelude' in token)) { + + token.prelude = []; + } + + token.prelude!.push(item.value); + } + + let braces: number = 0; + let previousItem: ValidationToken | null = item.value; + + while ((item = iterator.next() as ValidationTokenIteratorValue) && !item.done) { + + if (item.value.typ == ValidationTokenEnum.DeclarationNameToken) { + + iterator.next(); + + const t: ValidationDeclarationDefinitionToken = Object.defineProperty({ + typ: ValidationTokenEnum.DeclarationDefinitionToken, + nam: (item.value).val, + val: iterator.next().value as ValidationToken + }, 'pos', { + ...objectProperties, + value: item.value.pos + }) as ValidationDeclarationDefinitionToken; + + if (braces > 0) { + + token.chi!.push(t); + } else { + + token.prelude!.push(t); + } + + previousItem = t; + continue; + } + + if (item.value.typ == ValidationTokenEnum.OpenCurlyBrace) { + previousItem = item.value; + continue + } + + if (item.value.typ == ValidationTokenEnum.Whitespace && previousItem?.typ == ValidationTokenEnum.OpenCurlyBrace) { + + braces++; + + if (braces == 1) { + + previousItem = item.value; + continue; + } + } + + if (previousItem?.typ == ValidationTokenEnum.Whitespace && item.value.typ == ValidationTokenEnum.CloseCurlyBrace) { + + braces--; + + if (braces == 0) { + + break; + } + } + + if (braces == 0) { + + if (!('prelude' in token)) { + + token.prelude = []; + } + + token.prelude!.push(item.value); + + } else { + + if (!('chi' in token)) { + + token.chi = []; + } + + token.chi!.push(item.value); + } + + previousItem = item.value; + } + + if ('prelude' in token) { + + if (token?.prelude?.length == 1 && token.prelude[0].typ == ValidationTokenEnum.Whitespace) { + + delete token.prelude; + } else { + + const t = {typ: ValidationTokenEnum.Root, chi: token.prelude} as ValidationRootToken; + + doParseSyntax(syntax, t.chi[Symbol.iterator]() as Iterator | Generator, t); + token.prelude = t.chi; + minify(token.prelude); + } + } + + // @ts-ignore + if (token?.chi?.length > 0) { + + minify(doParseSyntax(syntax, (token.chi)[Symbol.iterator]() as Iterator | Generator, token)); + } + + } else { + + children.push(item.value); + } + } + + return children; +} + function matchToken(syntax: string, iterator: Iterator, validationToken: ValidationTokenEnum.Ampersand | ValidationTokenEnum.Pipe | ValidationTokenEnum.Column): ValidationToken[] { let children: ValidationToken[] = []; @@ -638,6 +878,8 @@ function doParseSyntax(syntax: string, iterator: IteratorObject.defineProperty({ + typ: ValidationTokenEnum.SemiColon + }, 'pos', {...objectProperties, value: pos}); + } + if (token.match(/^\s+$/)) { return Object.defineProperty({ @@ -844,6 +1093,14 @@ function getTokenType(token: string, position: Position, currentPosition: Positi }, 'pos', {...objectProperties, value: pos}); } + if (token.startsWith('@') && isIdent(token.slice(1))) { + + return Object.defineProperty({ + typ: ValidationTokenEnum.AtRule, + val: token.slice(1) + }, 'pos', {...objectProperties, value: pos}); + } + return Object.defineProperty({ typ: ValidationTokenEnum.Keyword, val: token @@ -861,14 +1118,14 @@ function move(position: Position, chr: string): Position { return position; } -export function render(token: ValidationToken): string { +export function renderSyntax(token: ValidationToken): string { let glue: string; switch (token.typ) { case ValidationTokenEnum.Root: - return (token as ValidationRootToken).chi.reduce((acc: string, curr: ValidationToken) => acc + render(curr), ''); + return (token as ValidationRootToken).chi.reduce((acc: string, curr: ValidationToken) => acc + renderSyntax(curr), ''); case ValidationTokenEnum.Whitespace: @@ -896,15 +1153,15 @@ export function render(token: ValidationToken): string { glue = token.typ == ValidationTokenEnum.PipeToken ? '|' : (token.typ == ValidationTokenEnum.ColumnToken ? '||' : '&&'); - return (token as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).l.reduce((acc: string, curr: ValidationToken) => acc + render(curr), '') + + return (token as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).l.reduce((acc: string, curr: ValidationToken) => acc + renderSyntax(curr), '') + glue + - (token as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).r.reduce((acc: string, curr: ValidationToken) => acc + render(curr), ''); + (token as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).r.reduce((acc: string, curr: ValidationToken) => acc + renderSyntax(curr), ''); case ValidationTokenEnum.Function: case ValidationTokenEnum.PseudoClassFunctionToken: case ValidationTokenEnum.Parens: - return (token as ValidationFunctionToken).val + '(' + (token as ValidationFunctionToken).chi.reduce((acc: string, curr: ValidationToken) => acc + render(curr), '') + ')' + renderAttributes(token); + return (token as ValidationFunctionToken).val + '(' + (token as ValidationFunctionToken).chi.reduce((acc: string, curr: ValidationToken) => acc + renderSyntax(curr), '') + ')' + renderAttributes(token); case ValidationTokenEnum.Comma: @@ -932,7 +1189,7 @@ export function render(token: ValidationToken): string { case ValidationTokenEnum.Bracket: - return '[' + (token as ValidationBracketToken).chi.reduce((acc: string, curr: ValidationToken) => acc + render(curr), '') + ']' + renderAttributes(token); + return '[' + (token as ValidationBracketToken).chi.reduce((acc: string, curr: ValidationToken) => acc + renderSyntax(curr), '') + ']' + renderAttributes(token); case ValidationTokenEnum.PropertyType: @@ -1001,35 +1258,42 @@ function minify(ast: ValidationToken | ValidationToken[]): ValidationToken | Val if (Array.isArray(ast)) { - if (ast.length > 0 && (ast.at(-1) as ValidationToken).typ == ValidationTokenEnum.Whitespace) { + // @ts-ignore + while (ast.length > 0 && ast[0].typ == ValidationTokenEnum.Whitespace) { - ast.pop(); + // @ts-ignore + ast.shift(); } - if (ast.length > 0 && ast[0].typ == ValidationTokenEnum.Whitespace) { - ast.shift(); + while (ast.length > 0 && (ast.at(-1) as ValidationToken).typ == ValidationTokenEnum.Whitespace) { + + ast.pop(); } for (let i = 0; i < ast.length; i++) { - if ([ValidationTokenEnum.ColumnToken, ValidationTokenEnum.PipeToken, ValidationTokenEnum.AmpersandToken].includes(ast[i].typ)) { + // if ([ValidationTokenEnum.ColumnToken, ValidationTokenEnum.PipeToken, ValidationTokenEnum.AmpersandToken].includes(ast[i].typ)) { - for (const j of (ast[i] as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).l) { + // for (const j of (ast[i] as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).l) { - minify(j); - } + minify(ast[i]); + // } - for (const j of (ast[i] as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).r) { + // for (const j of (ast[i] as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).r) { + // + // minify(j); + // } - minify(j); - } - - } else if ('chi' in ast[i]) { + // } else - minify((ast[i] as ValidationFunctionToken | ValidationBracketToken).chi as ValidationToken[]); + // if ('chi' in ast[i]) { + // + // minify((ast[i] as ValidationFunctionToken | ValidationBracketToken).chi as ValidationToken[]); + // + // } else - } else if (ast[i].typ == ValidationTokenEnum.Separator) { + if (ast[i].typ == ValidationTokenEnum.Separator) { if (ast[i + 1]?.typ == ValidationTokenEnum.Whitespace) { @@ -1043,26 +1307,38 @@ function minify(ast: ValidationToken | ValidationToken[]): ValidationToken | Val } } - } else { + return ast; - if ([ValidationTokenEnum.ColumnToken, ValidationTokenEnum.PipeToken, ValidationTokenEnum.AmpersandToken].includes(ast.typ)) { + } + // else { - for (const j of (ast as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).l) { + // if ([ValidationTokenEnum.ColumnToken, ValidationTokenEnum.PipeToken, ValidationTokenEnum.AmpersandToken].includes(ast.typ)) { - minify(j); - } + // for (const j of (ast as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).l) { - for (const j of (ast as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).r) { + if ('l' in ast) { - minify(j); - } + minify((ast as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).l); + } + // } - } else if ('chi' in ast) { + // for (const j of (ast as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).r) { - minify((ast as ValidationFunctionToken | ValidationBracketToken).chi as ValidationToken[]); - } + if ('r' in ast) { + + minify((ast as ValidationPipeToken | ValidationColumnToken | ValidationAmpersandToken).r); } + if ('chi' in ast) { + + minify((ast as ValidationFunctionToken | ValidationBracketToken).chi as ValidationToken[]); + } + + if ('prelude' in ast) { + + minify((ast as ValidationAtRuleDefinitionToken).prelude as ValidationToken[]); + } + // }/ return ast; } @@ -1198,6 +1474,29 @@ export async function parseSelectorsSyntax(): Promise { return cleanup(json) as ParsedSyntaxes; } +export async function parseAtRulesSyntax(): Promise { + + const syntaxes = await fetch('https://raw.githubusercontent.com/mdn/data/main/css/at-rules.json', fetchInit).then(r => r.json()) as Record; + + const json = {} as ParsedSyntaxes; + + for (const [key, values] of Object.entries(syntaxes)) { + + console.error(' >> parseAtRulesSyntax >> ' + key); + + json[key] = { + syntax: values.syntax, + ast: parseSyntax(values.syntax).chi, + // mdn_url: values.mdn_url + }; + } + + return cleanup(json) as ParsedSyntaxes; +} + export async function parseAllSyntaxes(): Promise { const syntaxes = await fetch('https://raw.githubusercontent.com/mdn/data/main/css/syntaxes.json', fetchInit).then(r => r.json()) as Record { return doParse(iterator, Object.assign(opt, {load, resolve, dirname, cwd: opt.cwd ?? process.cwd()})); } +/** + * parse and render css + */ export async function transform(css: string, options: TransformOptions = {}): Promise { options = {minify: true, removeEmpty: true, removeCharset: true, ...options}; diff --git a/src/web/index.ts b/src/web/index.ts index 7e86214..69f5c0f 100644 --- a/src/web/index.ts +++ b/src/web/index.ts @@ -1,3 +1,7 @@ +/** + * entry point for web + * @module + */ import type { AstNode, ParseResult, @@ -6,7 +10,7 @@ import type { RenderResult, TransformOptions, TransformResult -} from "../@types/index.d.ts"; +} from "../@types"; import {doParse, doRender} from "../lib"; import {resolve, dirname} from "../lib/fs"; @@ -15,6 +19,9 @@ import {load} from "./load"; export {minify, expand, parseString, parseTokens, renderToken, walk, walkValues, EnumToken} from '../lib'; export {dirname, resolve, load}; +/** + * render ast node + */ export function render(data: AstNode, options: RenderOptions = {}): RenderResult { return doRender(data, Object.assign(options, { @@ -24,6 +31,9 @@ export function render(data: AstNode, options: RenderOptions = {}): RenderResult cwd: options.cwd ?? self.location.pathname.endsWith('/') ? self.location.pathname : dirname(self.location.pathname) })); } +/** + * parse css + */ export async function parse(iterator: string, opt: ParserOptions = {}): Promise { return doParse(iterator, Object.assign(opt, { @@ -34,6 +44,9 @@ export async function parse(iterator: string, opt: ParserOptions = {}): Promise< })); } +/** + * parse and render css + */ export async function transform(css: string, options: TransformOptions = {}): Promise { options = {minify: true, removeEmpty: true, removeCharset: true, ...options}; diff --git a/test/specs/code/nesting.js b/test/specs/code/nesting.js index f62d2d7..7a9812d 100644 --- a/test/specs/code/nesting.js +++ b/test/specs/code/nesting.js @@ -416,7 +416,7 @@ table.colortable th { font-weight: 400; padding: 2px 3px } -table.colortable td,table.colortable th { +table.colortable :is(td,th) { border: 1px solid #d9dadd; padding: 5px } @@ -472,7 +472,6 @@ Bar:is(a .foo) { }`)); }); - it('trim universal selector #20', function () { const file = ` @@ -492,6 +491,40 @@ Bar:is(span,a *,*~a) { }`)); }); + it('trim universal selector #21', function () { + const file = ` + +.s { + [type=text],[type=text i],[type=text s],[type=text i]+b,&:focus { + --animate-duration: 1s + } +} +`; + return parse(file, { + minify: true, nestingRules: true, validation: true + }).then(result => expect(render(result.ast, {minify: false, expandNestingRules: true}).code).equals(`.s:is([type=text],[type=text i],[type=text s],[type=text i]+b,:focus) { + --animate-duration: 1s +}`)); + }); + + it('trim universal selector #22', function () { + const file = ` + +table.colortable { + & td,& th { + border: 1px solid #d9dadd; + padding: 5px + } +} +`; + return parse(file, { + minify: true, nestingRules: true, validation: true + }).then(result => expect(render(result.ast, {minify: false, expandNestingRules: true}).code).equals(`table.colortable :is(td,th) { + border: 1px solid #d9dadd; + padding: 5px +}`)); + }); + // see https://www.w3.org/TR/css-nesting-1/#conditionals /* .header { diff --git a/tools/shorthand.ts b/tools/shorthand.ts index 8e27926..27ed2b5 100644 --- a/tools/shorthand.ts +++ b/tools/shorthand.ts @@ -912,7 +912,7 @@ export const properties: PropertySetType = [ return Object.assign(acc, createProperties(data)); }, {}); -const result = JSON.stringify({properties, map}, null, 1); +const result = JSON.stringify({properties, map}); await writeFile(import.meta.dirname + '/../src/config.json', result); diff --git a/tools/validation.ts b/tools/validation.ts index 8cd87e8..c43fe2d 100644 --- a/tools/validation.ts +++ b/tools/validation.ts @@ -1,5 +1,5 @@ import { - parseAllSyntaxes, + parseAllSyntaxes, parseAtRulesSyntax, parseDeclarationsSyntax, parseFunctionsSyntax, parseSelectorsSyntax @@ -20,7 +20,8 @@ const json = JSON.stringify({ declarations: await parseDeclarationsSyntax(), functions: await parseFunctionsSyntax(), syntaxes: await parseAllSyntaxes(), - selectors: await parseSelectorsSyntax() + selectors: await parseSelectorsSyntax(), + atRules: await parseAtRulesSyntax() }, null, 1); await writeFile(import.meta.dirname + '/../src/lib/validation/config.json', json);