diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2026-05-18 23:10:59 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2026-05-18 23:41:44 +0800 |
| commit | fc87c009806dcc98867f6b58efe29b042aa01dee (patch) | |
| tree | 8f59b3f4a5b66e9dfef2d40c8d318e258a521228 /node_modules/csso | |
| parent | 3336b2356ee6152d9c6ae59bd9b87ccbc0958407 (diff) | |
node: updatemain
Diffstat (limited to 'node_modules/csso')
377 files changed, 0 insertions, 54184 deletions
diff --git a/node_modules/csso/LICENSE b/node_modules/csso/LICENSE deleted file mode 100644 index a200643d..00000000 --- a/node_modules/csso/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (C) 2015-2021 by Roman Dvornov -Copyright (C) 2011-2015 by Sergey Kryzhanovsky - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/csso/README.md b/node_modules/csso/README.md deleted file mode 100644 index 9b746b4f..00000000 --- a/node_modules/csso/README.md +++ /dev/null @@ -1,422 +0,0 @@ -[](https://www.npmjs.com/package/csso) -[](https://github.com/css/csso/actions/workflows/build.yml) -[](https://coveralls.io/github/css/csso?branch=master) -[](https://www.npmjs.com/package/csso) -[](https://twitter.com/cssoptimizer) - -CSSO (CSS Optimizer) is a CSS minifier. It performs three sort of transformations: cleaning (removing redundants), compression (replacement for the shorter forms) and restructuring (merge of declarations, rules and so on). As a result an output CSS becomes much smaller in size. - -## Install - -``` -npm install csso -``` - -## Usage - -```js -import { minify } from 'csso'; -// CommonJS is also supported -// const { minify } = require('csso'); - -const minifiedCss = minify('.test { color: #ff0000; }').css; - -console.log(minifiedCss); -// .test{color:red} -``` - -Bundles are also available for use in a browser: - -- `dist/csso.js` – minified IIFE with `csso` as global -```html -<script src="node_modules/csso/dist/csso.js"></script> -<script> - csso.minify('.example { color: green }'); -</script> -``` - -- `dist/csso.esm.js` – minified ES module -```html -<script type="module"> - import { minify } from 'node_modules/csso/dist/csso.esm.js' - - minify('.example { color: green }'); -</script> -``` - -One of CDN services like `unpkg` or `jsDelivr` can be used. By default (for short path) a ESM version is exposing. For IIFE version a full path to a bundle should be specified: - -```html -<!-- ESM --> -<script type="module"> - import * as csstree from 'https://cdn.jsdelivr.net/npm/csso'; - import * as csstree from 'https://unpkg.com/csso'; -</script> - -<!-- IIFE with an export to global --> -<script src="https://cdn.jsdelivr.net/npm/csso/dist/csso.js"></script> -<script src="https://unpkg.com/csso/dist/csso.js"></script> -``` - -CSSO is based on [CSSTree](https://github.com/csstree/csstree) to parse CSS into AST, AST traversal and to generate AST back to CSS. All `CSSTree` API is available behind `syntax` field extended with `compress()` method. You may minify CSS step by step: - -```js -import { syntax } from 'csso'; - -const ast = syntax.parse('.test { color: #ff0000; }'); -const compressedAst = syntax.compress(ast).ast; -const minifiedCss = syntax.generate(compressedAst); - -console.log(minifiedCss); -// .test{color:red} -``` - -Also syntax can be imported using `csso/syntax` entry point: - -```js -import { parse, compress, generate } from 'csso/syntax'; - -const ast = parse('.test { color: #ff0000; }'); -const compressedAst = compress(ast).ast; -const minifiedCss = generate(compressedAst); - -console.log(minifiedCss); -// .test{color:red} -``` - -> Warning: CSSO doesn't guarantee API behind a `syntax` field as well as AST format. Both might be changed with changes in CSSTree. If you rely heavily on `syntax` API, a better option might be to use CSSTree directly. - -## Related projects - -- [Web interface](http://css.github.io/csso/csso.html) -- [csso-cli](https://github.com/css/csso-cli) – command line interface -- [gulp-csso](https://github.com/ben-eb/gulp-csso) – `Gulp` plugin -- [grunt-csso](https://github.com/t32k/grunt-csso) – `Grunt` plugin -- [broccoli-csso](https://github.com/sindresorhus/broccoli-csso) – `Broccoli` plugin -- [postcss-csso](https://github.com/lahmatiy/postcss-csso) – `PostCSS` plugin -- [csso-loader](https://github.com/sandark7/csso-loader) – `webpack` loader -- [csso-webpack-plugin](https://github.com/zoobestik/csso-webpack-plugin) – `webpack` plugin -- [CSSO Visual Studio Code plugin](https://marketplace.visualstudio.com/items?itemName=Aneryu.csso) -- [vscode-csso](https://github.com/1000ch/vscode-csso) - Visual Studio Code plugin -- [atom-csso](https://github.com/1000ch/atom-csso) - Atom plugin -- [Sublime-csso](https://github.com/1000ch/Sublime-csso) - Sublime plugin - -## API - -<!-- TOC depthfrom:3 --> - -- [minify(source[, options])](#minifysource-options) -- [minifyBlock(source[, options])](#minifyblocksource-options) -- [syntax.compress(ast[, options])](#syntaxcompressast-options) -- [Source maps](#source-maps) -- [Usage data](#usage-data) - - [White list filtering](#white-list-filtering) - - [Black list filtering](#black-list-filtering) - - [Scopes](#scopes) - -<!-- /TOC --> - -### minify(source[, options]) - -Minify `source` CSS passed as `String`. - -```js -const result = csso.minify('.test { color: #ff0000; }', { - restructure: false, // don't change CSS structure, i.e. don't merge declarations, rulesets etc - debug: true // show additional debug information: - // true or number from 1 to 3 (greater number - more details) -}); - -console.log(result.css); -// > .test{color:red} -``` - -Returns an object with properties: - -- css `String` – resulting CSS -- map `Object` – instance of [`SourceMapGenerator`](https://github.com/mozilla/source-map#sourcemapgenerator) or `null` - -Options: - -- sourceMap - - Type: `Boolean` - Default: `false` - - Generate a source map when `true`. - -- filename - - Type: `String` - Default: `'<unknown>'` - - Filename of input CSS, uses for source map generation. - -- debug - - Type: `Boolean` - Default: `false` - - Output debug information to `stderr`. - -- beforeCompress - - Type: `function(ast, options)` or `Array<function(ast, options)>` or `null` - Default: `null` - - Called right after parse is run. - -- afterCompress - - Type: `function(compressResult, options)` or `Array<function(compressResult, options)>` or `null` - Default: `null` - - Called right after [`syntax.compress()`](#syntaxcompressast-options) is run. - -- Other options are the same as for [`syntax.compress()`](#syntaxcompressast-options) function. - -### minifyBlock(source[, options]) - -The same as `minify()` but for list of declarations. Usually it's a `style` attribute value. - -```js -const result = csso.minifyBlock('color: rgba(255, 0, 0, 1); color: #ff0000'); - -console.log(result.css); -// > color:red -``` - -### syntax.compress(ast[, options]) - -Does the main task – compress an AST. This is CSSO's extension in CSSTree syntax API. - -> NOTE: `syntax.compress()` performs AST compression by transforming input AST by default (since AST cloning is expensive and needed in rare cases). Use `clone` option with truthy value in case you want to keep input AST untouched. - -Returns an object with properties: - -- ast `Object` – resulting AST - -Options: - -- restructure - - Type: `Boolean` - Default: `true` - - Disable or enable a structure optimisations. - -- forceMediaMerge - - Type: `Boolean` - Default: `false` - - Enables merging of `@media` rules with the same media query by splitted by other rules. The optimisation is unsafe in general, but should work fine in most cases. Use it on your own risk. - -- clone - - Type: `Boolean` - Default: `false` - - Transform a copy of input AST if `true`. Useful in case of AST reuse. - -- comments - - Type: `String` or `Boolean` - Default: `true` - - Specify what comments to leave: - - - `'exclamation'` or `true` – leave all exclamation comments (i.e. `/*! .. */`) - - `'first-exclamation'` – remove every comment except first one - - `false` – remove all comments - -- usage - - Type: `Object` or `null` - Default: `null` - - Usage data for advanced optimisations (see [Usage data](#usage-data) for details) - -- logger - - Type: `Function` or `null` - Default: `null` - - Function to track every step of transformation. - -### Source maps - -To get a source map set `true` for `sourceMap` option. Additianaly `filename` option can be passed to specify source file. When `sourceMap` option is `true`, `map` field of result object will contain a [`SourceMapGenerator`](https://github.com/mozilla/source-map#sourcemapgenerator) instance. This object can be mixed with another source map or translated to string. - -```js -const csso = require('csso'); -const css = fs.readFileSync('path/to/my.css', 'utf8'); -const result = csso.minify(css, { - filename: 'path/to/my.css', // will be added to source map as reference to source file - sourceMap: true // generate source map -}); - -console.log(result); -// { css: '...minified...', map: SourceMapGenerator {} } - -console.log(result.map.toString()); -// '{ .. source map content .. }' -``` - -Example of generating source map with respect of source map from input CSS: - -```js -import { SourceMapConsumer } from 'source-map'; -import * as csso from 'csso'; - -const inputFile = 'path/to/my.css'; -const input = fs.readFileSync(inputFile, 'utf8'); -const inputMap = input.match(/\/\*# sourceMappingURL=(\S+)\s*\*\/\s*$/); -const output = csso.minify(input, { - filename: inputFile, - sourceMap: true -}); - -// apply input source map to output -if (inputMap) { - output.map.applySourceMap( - new SourceMapConsumer(inputMap[1]), - inputFile - ) -} - -// result CSS with source map -console.log( - output.css + - '/*# sourceMappingURL=data:application/json;base64,' + - Buffer.from(output.map.toString()).toString('base64') + - ' */' -); -``` - -### Usage data - -`CSSO` can use data about how `CSS` is used in a markup for better compression. File with this data (`JSON`) can be set using `usage` option. Usage data may contain following sections: - -- `blacklist` – a set of black lists (see [Black list filtering](#black-list-filtering)) -- `tags` – white list of tags -- `ids` – white list of ids -- `classes` – white list of classes -- `scopes` – groups of classes which never used with classes from other groups on the same element - -All sections are optional. Value of `tags`, `ids` and `classes` should be an array of a string, value of `scopes` should be an array of arrays of strings. Other values are ignoring. - -#### White list filtering - -`tags`, `ids` and `classes` are using on clean stage to filter selectors that contain something not in the lists. Selectors are filtering only by those kind of simple selector which white list is specified. For example, if only `tags` list is specified then type selectors are checking, and if all type selectors in selector present in list or selector has no any type selector it isn't filter. - -> `ids` and `classes` are case sensitive, `tags` – is not. - -Input CSS: - -```css -* { color: green; } -ul, ol, li { color: blue; } -UL.foo, span.bar { color: red; } -``` - -Usage data: - -```json -{ - "tags": ["ul", "LI"] -} -``` - -Resulting CSS: - -```css -*{color:green}ul,li{color:blue}ul.foo{color:red} -``` - -Filtering performs for nested selectors too. `:not()` pseudos content is ignoring since the result of matching is unpredictable. Example for the same usage data as above: - -```css -:nth-child(2n of ul, ol) { color: red } -:nth-child(3n + 1 of img) { color: yellow } -:not(div, ol, ul) { color: green } -:has(:matches(ul, ol), ul, ol) { color: blue } -``` - -Turns into: - -```css -:nth-child(2n of ul){color:red}:not(div,ol,ul){color:green}:has(:matches(ul),ul){color:blue} -``` - -#### Black list filtering - -Black list filtering performs the same as white list filtering, but filters things that mentioned in the lists. `blacklist` can contain the lists `tags`, `ids` and `classes`. - -Black list has a higher priority, so when something mentioned in the white list and in the black list then white list occurrence is ignoring. The `:not()` pseudos content ignoring as well. - -```css -* { color: green; } -ul, ol, li { color: blue; } -UL.foo, li.bar { color: red; } -``` - -Usage data: - -```json -{ - "blacklist": { - "tags": ["ul"] - }, - "tags": ["ul", "LI"] -} -``` - -Resulting CSS: - -```css -*{color:green}li{color:blue}li.bar{color:red} -``` - -#### Scopes - -Scopes is designed for CSS scope isolation solutions such as [css-modules](https://github.com/css-modules/css-modules). Scopes are similar to namespaces and define lists of class names that exclusively used on some markup. This information allows the optimizer to move rules more agressive. Since it assumes selectors from different scopes don't match for the same element. This can improve rule merging. - -Suppose we have a file: - -```css -.module1-foo { color: red; } -.module1-bar { font-size: 1.5em; background: yellow; } - -.module2-baz { color: red; } -.module2-qux { font-size: 1.5em; background: yellow; width: 50px; } -``` - -It can be assumed that first two rules are never used with the second two on the same markup. But we can't say that for sure without a markup review. The optimizer doesn't know it either and will perform safe transformations only. The result will be the same as input but with no spaces and some semicolons: - -```css -.module1-foo{color:red}.module1-bar{font-size:1.5em;background:#ff0}.module2-baz{color:red}.module2-qux{font-size:1.5em;background:#ff0;width:50px} -``` - -With usage data `CSSO` can produce better output. If follow usage data is provided: - -```json -{ - "scopes": [ - ["module1-foo", "module1-bar"], - ["module2-baz", "module2-qux"] - ] -} -``` - -The result will be (29 bytes extra saving): - -```css -.module1-foo,.module2-baz{color:red}.module1-bar,.module2-qux{font-size:1.5em;background:#ff0}.module2-qux{width:50px} -``` - -If class name isn't mentioned in the `scopes` it belongs to default scope. `scopes` data doesn't affect `classes` whitelist. If class name mentioned in `scopes` but missed in `classes` (both sections are specified) it will be filtered. - -Note that class name can't be set for several scopes. Also a selector can't have class names from different scopes. In both cases an exception will thrown. - -Currently the optimizer doesn't care about changing order safety for out-of-bounds selectors (i.e. selectors that match to elements without class name, e.g. `.scope div` or `.scope ~ :last-child`). It assumes that scoped CSS modules doesn't relay on it's order. It may be fix in future if to be an issue. diff --git a/node_modules/csso/cjs/clean/Atrule.cjs b/node_modules/csso/cjs/clean/Atrule.cjs deleted file mode 100644 index 22af87b6..00000000 --- a/node_modules/csso/cjs/clean/Atrule.cjs +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const utils = require('./utils.cjs'); - -function cleanAtrule(node, item, list) { - if (node.block) { - // otherwise removed at-rule don't prevent @import for removal - if (this.stylesheet !== null) { - this.stylesheet.firstAtrulesAllowed = false; - } - - if (utils.hasNoChildren(node.block)) { - list.remove(item); - return; - } - } - - switch (node.name) { - case 'charset': - if (utils.hasNoChildren(node.prelude)) { - list.remove(item); - return; - } - - // if there is any rule before @charset -> remove it - if (item.prev) { - list.remove(item); - return; - } - - break; - - case 'import': - if (this.stylesheet === null || !this.stylesheet.firstAtrulesAllowed) { - list.remove(item); - return; - } - - // if there are some rules that not an @import or @charset before @import - // remove it - list.prevUntil(item.prev, function(rule) { - if (rule.type === 'Atrule') { - if (rule.name === 'import' || rule.name === 'charset') { - return; - } - } - - this.root.firstAtrulesAllowed = false; - list.remove(item); - - return true; - }, this); - - break; - - default: { - const name = cssTree.keyword(node.name).basename; - - if (name === 'keyframes' || - name === 'media' || - name === 'supports') { - - // drop at-rule with no prelude - if (utils.hasNoChildren(node.prelude) || utils.hasNoChildren(node.block)) { - list.remove(item); - } - } - } - } -} - -module.exports = cleanAtrule; diff --git a/node_modules/csso/cjs/clean/Comment.cjs b/node_modules/csso/cjs/clean/Comment.cjs deleted file mode 100644 index a76253e9..00000000 --- a/node_modules/csso/cjs/clean/Comment.cjs +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -function cleanComment(data, item, list) { - list.remove(item); -} - -module.exports = cleanComment; diff --git a/node_modules/csso/cjs/clean/Declaration.cjs b/node_modules/csso/cjs/clean/Declaration.cjs deleted file mode 100644 index 92a2afbf..00000000 --- a/node_modules/csso/cjs/clean/Declaration.cjs +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); - -function cleanDeclartion(node, item, list) { - if (node.value.children && node.value.children.isEmpty) { - list.remove(item); - return; - } - - if (cssTree.property(node.property).custom) { - if (/\S/.test(node.value.value)) { - node.value.value = node.value.value.trim(); - } - } -} - -module.exports = cleanDeclartion; diff --git a/node_modules/csso/cjs/clean/Raw.cjs b/node_modules/csso/cjs/clean/Raw.cjs deleted file mode 100644 index 0286e198..00000000 --- a/node_modules/csso/cjs/clean/Raw.cjs +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -const utils = require('./utils.cjs'); - -function cleanRaw(node, item, list) { - // raw in stylesheet or block children - if (utils.isNodeChildrenList(this.stylesheet, list) || - utils.isNodeChildrenList(this.block, list)) { - list.remove(item); - } -} - -module.exports = cleanRaw; diff --git a/node_modules/csso/cjs/clean/Rule.cjs b/node_modules/csso/cjs/clean/Rule.cjs deleted file mode 100644 index 064bc7d7..00000000 --- a/node_modules/csso/cjs/clean/Rule.cjs +++ /dev/null @@ -1,104 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const utils = require('./utils.cjs'); - -const { hasOwnProperty } = Object.prototype; -const skipUsageFilteringAtrule = new Set(['keyframes']); - -function cleanUnused(selectorList, usageData) { - selectorList.children.forEach((selector, item, list) => { - let shouldRemove = false; - - cssTree.walk(selector, function(node) { - // ignore nodes in nested selectors - if (this.selector === null || this.selector === selectorList) { - switch (node.type) { - case 'SelectorList': - // TODO: remove toLowerCase when pseudo selectors will be normalized - // ignore selectors inside :not() - if (this.function === null || this.function.name.toLowerCase() !== 'not') { - if (cleanUnused(node, usageData)) { - shouldRemove = true; - } - } - break; - - case 'ClassSelector': - if (usageData.whitelist !== null && - usageData.whitelist.classes !== null && - !hasOwnProperty.call(usageData.whitelist.classes, node.name)) { - shouldRemove = true; - } - if (usageData.blacklist !== null && - usageData.blacklist.classes !== null && - hasOwnProperty.call(usageData.blacklist.classes, node.name)) { - shouldRemove = true; - } - break; - - case 'IdSelector': - if (usageData.whitelist !== null && - usageData.whitelist.ids !== null && - !hasOwnProperty.call(usageData.whitelist.ids, node.name)) { - shouldRemove = true; - } - if (usageData.blacklist !== null && - usageData.blacklist.ids !== null && - hasOwnProperty.call(usageData.blacklist.ids, node.name)) { - shouldRemove = true; - } - break; - - case 'TypeSelector': - // TODO: remove toLowerCase when type selectors will be normalized - // ignore universal selectors - if (node.name.charAt(node.name.length - 1) !== '*') { - if (usageData.whitelist !== null && - usageData.whitelist.tags !== null && - !hasOwnProperty.call(usageData.whitelist.tags, node.name.toLowerCase())) { - shouldRemove = true; - } - if (usageData.blacklist !== null && - usageData.blacklist.tags !== null && - hasOwnProperty.call(usageData.blacklist.tags, node.name.toLowerCase())) { - shouldRemove = true; - } - } - break; - } - } - }); - - if (shouldRemove) { - list.remove(item); - } - }); - - return selectorList.children.isEmpty; -} - -function cleanRule(node, item, list, options) { - if (utils.hasNoChildren(node.prelude) || utils.hasNoChildren(node.block)) { - list.remove(item); - return; - } - - // avoid usage filtering for some at-rules - if (this.atrule && skipUsageFilteringAtrule.has(cssTree.keyword(this.atrule.name).basename)) { - return; - } - - const { usage } = options; - - if (usage && (usage.whitelist !== null || usage.blacklist !== null)) { - cleanUnused(node.prelude, usage); - - if (utils.hasNoChildren(node.prelude)) { - list.remove(item); - return; - } - } -} - -module.exports = cleanRule; diff --git a/node_modules/csso/cjs/clean/TypeSelector.cjs b/node_modules/csso/cjs/clean/TypeSelector.cjs deleted file mode 100644 index 2c6f46a1..00000000 --- a/node_modules/csso/cjs/clean/TypeSelector.cjs +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -// remove useless universal selector -function cleanTypeSelector(node, item, list) { - const name = item.data.name; - - // check it's a non-namespaced universal selector - if (name !== '*') { - return; - } - - // remove when universal selector before other selectors - const nextType = item.next && item.next.data.type; - if (nextType === 'IdSelector' || - nextType === 'ClassSelector' || - nextType === 'AttributeSelector' || - nextType === 'PseudoClassSelector' || - nextType === 'PseudoElementSelector') { - list.remove(item); - } -} - -module.exports = cleanTypeSelector; diff --git a/node_modules/csso/cjs/clean/WhiteSpace.cjs b/node_modules/csso/cjs/clean/WhiteSpace.cjs deleted file mode 100644 index c045ed1f..00000000 --- a/node_modules/csso/cjs/clean/WhiteSpace.cjs +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -function cleanWhitespace(node, item, list) { - list.remove(item); -} - -module.exports = cleanWhitespace; diff --git a/node_modules/csso/cjs/clean/index.cjs b/node_modules/csso/cjs/clean/index.cjs deleted file mode 100644 index ba7b25a1..00000000 --- a/node_modules/csso/cjs/clean/index.cjs +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const Atrule = require('./Atrule.cjs'); -const Comment = require('./Comment.cjs'); -const Declaration = require('./Declaration.cjs'); -const Raw = require('./Raw.cjs'); -const Rule = require('./Rule.cjs'); -const TypeSelector = require('./TypeSelector.cjs'); -const WhiteSpace = require('./WhiteSpace.cjs'); - -const handlers = { - Atrule, - Comment, - Declaration, - Raw, - Rule, - TypeSelector, - WhiteSpace -}; - -function clean(ast, options) { - cssTree.walk(ast, { - leave(node, item, list) { - if (handlers.hasOwnProperty(node.type)) { - handlers[node.type].call(this, node, item, list, options); - } - } - }); -} - -module.exports = clean; diff --git a/node_modules/csso/cjs/clean/utils.cjs b/node_modules/csso/cjs/clean/utils.cjs deleted file mode 100644 index 8d3260f7..00000000 --- a/node_modules/csso/cjs/clean/utils.cjs +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -function hasNoChildren(node) { - return !node || !node.children || node.children.isEmpty; -} - -function isNodeChildrenList(node, list) { - return node !== null && node.children === list; -} - -exports.hasNoChildren = hasNoChildren; -exports.isNodeChildrenList = isNodeChildrenList; diff --git a/node_modules/csso/cjs/compress.cjs b/node_modules/csso/cjs/compress.cjs deleted file mode 100644 index 1a224e2e..00000000 --- a/node_modules/csso/cjs/compress.cjs +++ /dev/null @@ -1,200 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const usage = require('./usage.cjs'); -const index = require('./clean/index.cjs'); -const index$1 = require('./replace/index.cjs'); -const index$2 = require('./restructure/index.cjs'); - -function readChunk(input, specialComments) { - const children = new cssTree.List(); - let nonSpaceTokenInBuffer = false; - let protectedComment; - - input.nextUntil(input.head, (node, item, list) => { - if (node.type === 'Comment') { - if (!specialComments || node.value.charAt(0) !== '!') { - list.remove(item); - return; - } - - if (nonSpaceTokenInBuffer || protectedComment) { - return true; - } - - list.remove(item); - protectedComment = node; - - return; - } - - if (node.type !== 'WhiteSpace') { - nonSpaceTokenInBuffer = true; - } - - children.insert(list.remove(item)); - }); - - return { - comment: protectedComment, - stylesheet: { - type: 'StyleSheet', - loc: null, - children - } - }; -} - -function compressChunk(ast, firstAtrulesAllowed, num, options) { - options.logger(`Compress block #${num}`, null, true); - - let seed = 1; - - if (ast.type === 'StyleSheet') { - ast.firstAtrulesAllowed = firstAtrulesAllowed; - ast.id = seed++; - } - - cssTree.walk(ast, { - visit: 'Atrule', - enter(node) { - if (node.block !== null) { - node.block.id = seed++; - } - } - }); - options.logger('init', ast); - - // remove redundant - index(ast, options); - options.logger('clean', ast); - - // replace nodes for shortened forms - index$1(ast); - options.logger('replace', ast); - - // structure optimisations - if (options.restructuring) { - index$2(ast, options); - } - - return ast; -} - -function getCommentsOption(options) { - let comments = 'comments' in options ? options.comments : 'exclamation'; - - if (typeof comments === 'boolean') { - comments = comments ? 'exclamation' : false; - } else if (comments !== 'exclamation' && comments !== 'first-exclamation') { - comments = false; - } - - return comments; -} - -function getRestructureOption(options) { - if ('restructure' in options) { - return options.restructure; - } - - return 'restructuring' in options ? options.restructuring : true; -} - -function wrapBlock(block) { - return new cssTree.List().appendData({ - type: 'Rule', - loc: null, - prelude: { - type: 'SelectorList', - loc: null, - children: new cssTree.List().appendData({ - type: 'Selector', - loc: null, - children: new cssTree.List().appendData({ - type: 'TypeSelector', - loc: null, - name: 'x' - }) - }) - }, - block - }); -} - -function compress(ast, options) { - ast = ast || { type: 'StyleSheet', loc: null, children: new cssTree.List() }; - options = options || {}; - - const compressOptions = { - logger: typeof options.logger === 'function' ? options.logger : function() {}, - restructuring: getRestructureOption(options), - forceMediaMerge: Boolean(options.forceMediaMerge), - usage: options.usage ? usage.buildIndex(options.usage) : false - }; - const output = new cssTree.List(); - let specialComments = getCommentsOption(options); - let firstAtrulesAllowed = true; - let input; - let chunk; - let chunkNum = 1; - let chunkChildren; - - if (options.clone) { - ast = cssTree.clone(ast); - } - - if (ast.type === 'StyleSheet') { - input = ast.children; - ast.children = output; - } else { - input = wrapBlock(ast); - } - - do { - chunk = readChunk(input, Boolean(specialComments)); - compressChunk(chunk.stylesheet, firstAtrulesAllowed, chunkNum++, compressOptions); - chunkChildren = chunk.stylesheet.children; - - if (chunk.comment) { - // add \n before comment if there is another content in output - if (!output.isEmpty) { - output.insert(cssTree.List.createItem({ - type: 'Raw', - value: '\n' - })); - } - - output.insert(cssTree.List.createItem(chunk.comment)); - - // add \n after comment if chunk is not empty - if (!chunkChildren.isEmpty) { - output.insert(cssTree.List.createItem({ - type: 'Raw', - value: '\n' - })); - } - } - - if (firstAtrulesAllowed && !chunkChildren.isEmpty) { - const lastRule = chunkChildren.last; - - if (lastRule.type !== 'Atrule' || - (lastRule.name !== 'import' && lastRule.name !== 'charset')) { - firstAtrulesAllowed = false; - } - } - - if (specialComments !== 'exclamation') { - specialComments = false; - } - - output.appendList(chunkChildren); - } while (!input.isEmpty); - - return { - ast - }; -} - -module.exports = compress; diff --git a/node_modules/csso/cjs/index.cjs b/node_modules/csso/cjs/index.cjs deleted file mode 100644 index 5bcb9d18..00000000 --- a/node_modules/csso/cjs/index.cjs +++ /dev/null @@ -1,127 +0,0 @@ -'use strict'; - -const version = require('./version.cjs'); -const syntax = require('./syntax.cjs'); -const utils = require('./utils.cjs'); - -const { parse, generate, compress } = syntax; - -function debugOutput(name, options, startTime, data) { - if (options.debug) { - console.error(`## ${name} done in %d ms\n`, Date.now() - startTime); - } - - return data; -} - -function createDefaultLogger(level) { - let lastDebug; - - return function logger(title, ast) { - let line = title; - - if (ast) { - line = `[${((Date.now() - lastDebug) / 1000).toFixed(3)}s] ${line}`; - } - - if (level > 1 && ast) { - let css = generate(ast); - - // when level 2, limit css to 256 symbols - if (level === 2 && css.length > 256) { - css = css.substr(0, 256) + '...'; - } - - line += `\n ${css}\n`; - } - - console.error(line); - lastDebug = Date.now(); - }; -} - -function buildCompressOptions(options) { - options = { ...options }; - - if (typeof options.logger !== 'function' && options.debug) { - options.logger = createDefaultLogger(options.debug); - } - - return options; -} - -function runHandler(ast, options, handlers) { - if (!Array.isArray(handlers)) { - handlers = [handlers]; - } - - handlers.forEach(fn => fn(ast, options)); -} - -function minify(context, source, options) { - options = options || {}; - - const filename = options.filename || '<unknown>'; - let result; - - // parse - const ast = debugOutput('parsing', options, Date.now(), - parse(source, { - context, - filename, - positions: Boolean(options.sourceMap) - }) - ); - - // before compress handlers - if (options.beforeCompress) { - debugOutput('beforeCompress', options, Date.now(), - runHandler(ast, options, options.beforeCompress) - ); - } - - // compress - const compressResult = debugOutput('compress', options, Date.now(), - compress(ast, buildCompressOptions(options)) - ); - - // after compress handlers - if (options.afterCompress) { - debugOutput('afterCompress', options, Date.now(), - runHandler(compressResult, options, options.afterCompress) - ); - } - - // generate - if (options.sourceMap) { - result = debugOutput('generate(sourceMap: true)', options, Date.now(), (() => { - const tmp = generate(compressResult.ast, { sourceMap: true }); - - tmp.map._file = filename; // since other tools can relay on file in source map transform chain - tmp.map.setSourceContent(filename, source); - - return tmp; - })()); - } else { - result = debugOutput('generate', options, Date.now(), { - css: generate(compressResult.ast), - map: null - }); - } - - return result; -} - -function minifyStylesheet(source, options) { - return minify('stylesheet', source, options); -} - -function minifyBlock(source, options) { - return minify('declarationList', source, options); -} - -exports.version = version.version; -exports.syntax = syntax; -exports.utils = utils; -exports.minify = minifyStylesheet; -exports.minifyBlock = minifyBlock; diff --git a/node_modules/csso/cjs/replace/Atrule.cjs b/node_modules/csso/cjs/replace/Atrule.cjs deleted file mode 100644 index 1843bcde..00000000 --- a/node_modules/csso/cjs/replace/Atrule.cjs +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const keyframes = require('./atrule/keyframes.cjs'); - -function Atrule(node) { - // compress @keyframe selectors - if (cssTree.keyword(node.name).basename === 'keyframes') { - keyframes(node); - } -} - -module.exports = Atrule; diff --git a/node_modules/csso/cjs/replace/AttributeSelector.cjs b/node_modules/csso/cjs/replace/AttributeSelector.cjs deleted file mode 100644 index f06724fc..00000000 --- a/node_modules/csso/cjs/replace/AttributeSelector.cjs +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -// Can unquote attribute detection -// Adopted implementation of Mathias Bynens -// https://github.com/mathiasbynens/mothereff.in/blob/master/unquoted-attributes/eff.js -const blockUnquoteRx = /^(-?\d|--)|[\u0000-\u002c\u002e\u002f\u003A-\u0040\u005B-\u005E\u0060\u007B-\u009f]/; - -function canUnquote(value) { - if (value === '' || value === '-') { - return false; - } - - return !blockUnquoteRx.test(value); -} - -function AttributeSelector(node) { - const attrValue = node.value; - - if (!attrValue || attrValue.type !== 'String') { - return; - } - - if (canUnquote(attrValue.value)) { - node.value = { - type: 'Identifier', - loc: attrValue.loc, - name: attrValue.value - }; - } -} - -module.exports = AttributeSelector; diff --git a/node_modules/csso/cjs/replace/Dimension.cjs b/node_modules/csso/cjs/replace/Dimension.cjs deleted file mode 100644 index 20ad193c..00000000 --- a/node_modules/csso/cjs/replace/Dimension.cjs +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -const _Number = require('./Number.cjs'); - -const MATH_FUNCTIONS = new Set([ - 'calc', - 'min', - 'max', - 'clamp' -]); -const LENGTH_UNIT = new Set([ - // absolute length units - 'px', - 'mm', - 'cm', - 'in', - 'pt', - 'pc', - - // relative length units - 'em', - 'ex', - 'ch', - 'rem', - - // viewport-percentage lengths - 'vh', - 'vw', - 'vmin', - 'vmax', - 'vm' -]); - -function compressDimension(node, item) { - const value = _Number.packNumber(node.value); - - node.value = value; - - if (value === '0' && this.declaration !== null && this.atrulePrelude === null) { - const unit = node.unit.toLowerCase(); - - // only length values can be compressed - if (!LENGTH_UNIT.has(unit)) { - return; - } - - // issue #362: shouldn't remove unit in -ms-flex since it breaks flex in IE10/11 - // issue #200: shouldn't remove unit in flex since it breaks flex in IE10/11 - if (this.declaration.property === '-ms-flex' || - this.declaration.property === 'flex') { - return; - } - - // issue #222: don't remove units inside calc - if (this.function && MATH_FUNCTIONS.has(this.function.name)) { - return; - } - - item.data = { - type: 'Number', - loc: node.loc, - value - }; - } -} - -module.exports = compressDimension; diff --git a/node_modules/csso/cjs/replace/Number.cjs b/node_modules/csso/cjs/replace/Number.cjs deleted file mode 100644 index d85d6b52..00000000 --- a/node_modules/csso/cjs/replace/Number.cjs +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -const OMIT_PLUSSIGN = /^(?:\+|(-))?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/; -const KEEP_PLUSSIGN = /^([\+\-])?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/; -const unsafeToRemovePlusSignAfter = new Set([ - 'Dimension', - 'Hash', - 'Identifier', - 'Number', - 'Raw', - 'UnicodeRange' -]); - -function packNumber(value, item) { - // omit plus sign only if no prev or prev is safe type - const regexp = item && item.prev !== null && unsafeToRemovePlusSignAfter.has(item.prev.data.type) - ? KEEP_PLUSSIGN - : OMIT_PLUSSIGN; - - // 100 -> '100' - // 00100 -> '100' - // +100 -> '100' - // -100 -> '-100' - // 0.123 -> '.123' - // 0.12300 -> '.123' - // 0.0 -> '' - // 0 -> '' - // -0 -> '-' - value = String(value).replace(regexp, '$1$2$3'); - - if (value === '' || value === '-') { - value = '0'; - } - // FIXME: is it solution simplier? - // value = String(Number(value)).replace(/^(-?)0+\./, '$1.'); - - return value; -} - -function Number(node) { - node.value = packNumber(node.value); -} - -exports.Number = Number; -exports.packNumber = packNumber; diff --git a/node_modules/csso/cjs/replace/Percentage.cjs b/node_modules/csso/cjs/replace/Percentage.cjs deleted file mode 100644 index 46829981..00000000 --- a/node_modules/csso/cjs/replace/Percentage.cjs +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const _Number = require('./Number.cjs'); - -const blacklist = new Set([ - // see https://github.com/jakubpawlowicz/clean-css/issues/957 - 'width', - 'min-width', - 'max-width', - 'height', - 'min-height', - 'max-height', - - // issue #410: Don’t remove units in flex-basis value for (-ms-)flex shorthand - // issue #362: shouldn't remove unit in -ms-flex since it breaks flex in IE10/11 - // issue #200: shouldn't remove unit in flex since it breaks flex in IE10/11 - 'flex', - '-ms-flex' -]); - -function compressPercentage(node, item) { - node.value = _Number.packNumber(node.value); - - if (node.value === '0' && this.declaration && !blacklist.has(this.declaration.property)) { - // try to convert a number - item.data = { - type: 'Number', - loc: node.loc, - value: node.value - }; - - // that's ok only when new value matches on length - if (!cssTree.lexer.matchDeclaration(this.declaration).isType(item.data, 'length')) { - // otherwise rollback changes - item.data = node; - } - } -} - -module.exports = compressPercentage; diff --git a/node_modules/csso/cjs/replace/Url.cjs b/node_modules/csso/cjs/replace/Url.cjs deleted file mode 100644 index 20734a2d..00000000 --- a/node_modules/csso/cjs/replace/Url.cjs +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -function Url(node) { - // convert `\\` to `/` - node.value = node.value.replace(/\\/g, '/'); -} - -module.exports = Url; diff --git a/node_modules/csso/cjs/replace/Value.cjs b/node_modules/csso/cjs/replace/Value.cjs deleted file mode 100644 index 8979bdc0..00000000 --- a/node_modules/csso/cjs/replace/Value.cjs +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const font = require('./property/font.cjs'); -const fontWeight = require('./property/font-weight.cjs'); -const background = require('./property/background.cjs'); -const border = require('./property/border.cjs'); - -const handlers = { - 'font': font, - 'font-weight': fontWeight, - 'background': background, - 'border': border, - 'outline': border -}; - -function compressValue(node) { - if (!this.declaration) { - return; - } - - const property = cssTree.property(this.declaration.property); - - if (handlers.hasOwnProperty(property.basename)) { - handlers[property.basename](node); - } -} - -module.exports = compressValue; diff --git a/node_modules/csso/cjs/replace/atrule/keyframes.cjs b/node_modules/csso/cjs/replace/atrule/keyframes.cjs deleted file mode 100644 index d5181a7d..00000000 --- a/node_modules/csso/cjs/replace/atrule/keyframes.cjs +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -function compressKeyframes(node) { - node.block.children.forEach((rule) => { - rule.prelude.children.forEach((simpleselector) => { - simpleselector.children.forEach((data, item) => { - if (data.type === 'Percentage' && data.value === '100') { - item.data = { - type: 'TypeSelector', - loc: data.loc, - name: 'to' - }; - } else if (data.type === 'TypeSelector' && data.name === 'from') { - item.data = { - type: 'Percentage', - loc: data.loc, - value: '0' - }; - } - }); - }); - }); -} - -module.exports = compressKeyframes; diff --git a/node_modules/csso/cjs/replace/color.cjs b/node_modules/csso/cjs/replace/color.cjs deleted file mode 100644 index 94978cbd..00000000 --- a/node_modules/csso/cjs/replace/color.cjs +++ /dev/null @@ -1,504 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const _Number = require('./Number.cjs'); - -// http://www.w3.org/TR/css3-color/#svg-color -const NAME_TO_HEX = { - 'aliceblue': 'f0f8ff', - 'antiquewhite': 'faebd7', - 'aqua': '0ff', - 'aquamarine': '7fffd4', - 'azure': 'f0ffff', - 'beige': 'f5f5dc', - 'bisque': 'ffe4c4', - 'black': '000', - 'blanchedalmond': 'ffebcd', - 'blue': '00f', - 'blueviolet': '8a2be2', - 'brown': 'a52a2a', - 'burlywood': 'deb887', - 'cadetblue': '5f9ea0', - 'chartreuse': '7fff00', - 'chocolate': 'd2691e', - 'coral': 'ff7f50', - 'cornflowerblue': '6495ed', - 'cornsilk': 'fff8dc', - 'crimson': 'dc143c', - 'cyan': '0ff', - 'darkblue': '00008b', - 'darkcyan': '008b8b', - 'darkgoldenrod': 'b8860b', - 'darkgray': 'a9a9a9', - 'darkgrey': 'a9a9a9', - 'darkgreen': '006400', - 'darkkhaki': 'bdb76b', - 'darkmagenta': '8b008b', - 'darkolivegreen': '556b2f', - 'darkorange': 'ff8c00', - 'darkorchid': '9932cc', - 'darkred': '8b0000', - 'darksalmon': 'e9967a', - 'darkseagreen': '8fbc8f', - 'darkslateblue': '483d8b', - 'darkslategray': '2f4f4f', - 'darkslategrey': '2f4f4f', - 'darkturquoise': '00ced1', - 'darkviolet': '9400d3', - 'deeppink': 'ff1493', - 'deepskyblue': '00bfff', - 'dimgray': '696969', - 'dimgrey': '696969', - 'dodgerblue': '1e90ff', - 'firebrick': 'b22222', - 'floralwhite': 'fffaf0', - 'forestgreen': '228b22', - 'fuchsia': 'f0f', - 'gainsboro': 'dcdcdc', - 'ghostwhite': 'f8f8ff', - 'gold': 'ffd700', - 'goldenrod': 'daa520', - 'gray': '808080', - 'grey': '808080', - 'green': '008000', - 'greenyellow': 'adff2f', - 'honeydew': 'f0fff0', - 'hotpink': 'ff69b4', - 'indianred': 'cd5c5c', - 'indigo': '4b0082', - 'ivory': 'fffff0', - 'khaki': 'f0e68c', - 'lavender': 'e6e6fa', - 'lavenderblush': 'fff0f5', - 'lawngreen': '7cfc00', - 'lemonchiffon': 'fffacd', - 'lightblue': 'add8e6', - 'lightcoral': 'f08080', - 'lightcyan': 'e0ffff', - 'lightgoldenrodyellow': 'fafad2', - 'lightgray': 'd3d3d3', - 'lightgrey': 'd3d3d3', - 'lightgreen': '90ee90', - 'lightpink': 'ffb6c1', - 'lightsalmon': 'ffa07a', - 'lightseagreen': '20b2aa', - 'lightskyblue': '87cefa', - 'lightslategray': '789', - 'lightslategrey': '789', - 'lightsteelblue': 'b0c4de', - 'lightyellow': 'ffffe0', - 'lime': '0f0', - 'limegreen': '32cd32', - 'linen': 'faf0e6', - 'magenta': 'f0f', - 'maroon': '800000', - 'mediumaquamarine': '66cdaa', - 'mediumblue': '0000cd', - 'mediumorchid': 'ba55d3', - 'mediumpurple': '9370db', - 'mediumseagreen': '3cb371', - 'mediumslateblue': '7b68ee', - 'mediumspringgreen': '00fa9a', - 'mediumturquoise': '48d1cc', - 'mediumvioletred': 'c71585', - 'midnightblue': '191970', - 'mintcream': 'f5fffa', - 'mistyrose': 'ffe4e1', - 'moccasin': 'ffe4b5', - 'navajowhite': 'ffdead', - 'navy': '000080', - 'oldlace': 'fdf5e6', - 'olive': '808000', - 'olivedrab': '6b8e23', - 'orange': 'ffa500', - 'orangered': 'ff4500', - 'orchid': 'da70d6', - 'palegoldenrod': 'eee8aa', - 'palegreen': '98fb98', - 'paleturquoise': 'afeeee', - 'palevioletred': 'db7093', - 'papayawhip': 'ffefd5', - 'peachpuff': 'ffdab9', - 'peru': 'cd853f', - 'pink': 'ffc0cb', - 'plum': 'dda0dd', - 'powderblue': 'b0e0e6', - 'purple': '800080', - 'rebeccapurple': '639', - 'red': 'f00', - 'rosybrown': 'bc8f8f', - 'royalblue': '4169e1', - 'saddlebrown': '8b4513', - 'salmon': 'fa8072', - 'sandybrown': 'f4a460', - 'seagreen': '2e8b57', - 'seashell': 'fff5ee', - 'sienna': 'a0522d', - 'silver': 'c0c0c0', - 'skyblue': '87ceeb', - 'slateblue': '6a5acd', - 'slategray': '708090', - 'slategrey': '708090', - 'snow': 'fffafa', - 'springgreen': '00ff7f', - 'steelblue': '4682b4', - 'tan': 'd2b48c', - 'teal': '008080', - 'thistle': 'd8bfd8', - 'tomato': 'ff6347', - 'turquoise': '40e0d0', - 'violet': 'ee82ee', - 'wheat': 'f5deb3', - 'white': 'fff', - 'whitesmoke': 'f5f5f5', - 'yellow': 'ff0', - 'yellowgreen': '9acd32' -}; - -const HEX_TO_NAME = { - '800000': 'maroon', - '800080': 'purple', - '808000': 'olive', - '808080': 'gray', - '00ffff': 'cyan', - 'f0ffff': 'azure', - 'f5f5dc': 'beige', - 'ffe4c4': 'bisque', - '000000': 'black', - '0000ff': 'blue', - 'a52a2a': 'brown', - 'ff7f50': 'coral', - 'ffd700': 'gold', - '008000': 'green', - '4b0082': 'indigo', - 'fffff0': 'ivory', - 'f0e68c': 'khaki', - '00ff00': 'lime', - 'faf0e6': 'linen', - '000080': 'navy', - 'ffa500': 'orange', - 'da70d6': 'orchid', - 'cd853f': 'peru', - 'ffc0cb': 'pink', - 'dda0dd': 'plum', - 'f00': 'red', - 'ff0000': 'red', - 'fa8072': 'salmon', - 'a0522d': 'sienna', - 'c0c0c0': 'silver', - 'fffafa': 'snow', - 'd2b48c': 'tan', - '008080': 'teal', - 'ff6347': 'tomato', - 'ee82ee': 'violet', - 'f5deb3': 'wheat', - 'ffffff': 'white', - 'ffff00': 'yellow' -}; - -function hueToRgb(p, q, t) { - if (t < 0) { - t += 1; - } - if (t > 1) { - t -= 1; - } - if (t < 1 / 6) { - return p + (q - p) * 6 * t; - } - if (t < 1 / 2) { - return q; - } - if (t < 2 / 3) { - return p + (q - p) * (2 / 3 - t) * 6; - } - return p; -} - -function hslToRgb(h, s, l, a) { - let r; - let g; - let b; - - if (s === 0) { - r = g = b = l; // achromatic - } else { - const q = l < 0.5 ? l * (1 + s) : l + s - l * s; - const p = 2 * l - q; - - r = hueToRgb(p, q, h + 1 / 3); - g = hueToRgb(p, q, h); - b = hueToRgb(p, q, h - 1 / 3); - } - - return [ - Math.round(r * 255), - Math.round(g * 255), - Math.round(b * 255), - a - ]; -} - -function toHex(value) { - value = value.toString(16); - - return value.length === 1 ? '0' + value : value; -} - -function parseFunctionArgs(functionArgs, count, rgb) { - let cursor = functionArgs.head; - let args = []; - let wasValue = false; - - while (cursor !== null) { - const { type, value } = cursor.data; - - switch (type) { - case 'Number': - case 'Percentage': - if (wasValue) { - return; - } - - wasValue = true; - args.push({ - type, - value: Number(value) - }); - - break; - - case 'Operator': - if (value === ',') { - if (!wasValue) { - return; - } - wasValue = false; - } else if (wasValue || value !== '+') { - return; - } - - break; - - default: - // something we couldn't understand - return; - } - - cursor = cursor.next; - } - - if (args.length !== count) { - // invalid arguments count - // TODO: remove those tokens - return; - } - - if (args.length === 4) { - if (args[3].type !== 'Number') { - // 4th argument should be a number - // TODO: remove those tokens - return; - } - - args[3].type = 'Alpha'; - } - - if (rgb) { - if (args[0].type !== args[1].type || args[0].type !== args[2].type) { - // invalid color, numbers and percentage shouldn't be mixed - // TODO: remove those tokens - return; - } - } else { - if (args[0].type !== 'Number' || - args[1].type !== 'Percentage' || - args[2].type !== 'Percentage') { - // invalid color, for hsl values should be: number, percentage, percentage - // TODO: remove those tokens - return; - } - - args[0].type = 'Angle'; - } - - return args.map(function(arg) { - let value = Math.max(0, arg.value); - - switch (arg.type) { - case 'Number': - // fit value to [0..255] range - value = Math.min(value, 255); - break; - - case 'Percentage': - // convert 0..100% to value in [0..255] range - value = Math.min(value, 100) / 100; - - if (!rgb) { - return value; - } - - value = 255 * value; - break; - - case 'Angle': - // fit value to (-360..360) range - return (((value % 360) + 360) % 360) / 360; - - case 'Alpha': - // fit value to [0..1] range - return Math.min(value, 1); - } - - return Math.round(value); - }); -} - -function compressFunction(node, item) { - let functionName = node.name; - let args; - - if (functionName === 'rgba' || functionName === 'hsla') { - args = parseFunctionArgs(node.children, 4, functionName === 'rgba'); - - if (!args) { - // something went wrong - return; - } - - if (functionName === 'hsla') { - args = hslToRgb(...args); - node.name = 'rgba'; - } - - if (args[3] === 0) { - // try to replace `rgba(x, x, x, 0)` to `transparent` - // always replace `rgba(0, 0, 0, 0)` to `transparent` - // otherwise avoid replacement in gradients since it may break color transition - // http://stackoverflow.com/questions/11829410/css3-gradient-rendering-issues-from-transparent-to-white - const scopeFunctionName = this.function && this.function.name; - - if ((args[0] === 0 && args[1] === 0 && args[2] === 0) || - !/^(?:to|from|color-stop)$|gradient$/i.test(scopeFunctionName)) { - - item.data = { - type: 'Identifier', - loc: node.loc, - name: 'transparent' - }; - - return; - } - } - - if (args[3] !== 1) { - // replace argument values for normalized/interpolated - node.children.forEach((node, item, list) => { - if (node.type === 'Operator') { - if (node.value !== ',') { - list.remove(item); - } - return; - } - - item.data = { - type: 'Number', - loc: node.loc, - value: _Number.packNumber(args.shift()) - }; - }); - - return; - } - - // otherwise convert to rgb, i.e. rgba(255, 0, 0, 1) -> rgb(255, 0, 0) - functionName = 'rgb'; - } - - if (functionName === 'hsl') { - args = args || parseFunctionArgs(node.children, 3, false); - - if (!args) { - // something went wrong - return; - } - - // convert to rgb - args = hslToRgb(...args); - functionName = 'rgb'; - } - - if (functionName === 'rgb') { - args = args || parseFunctionArgs(node.children, 3, true); - - if (!args) { - // something went wrong - return; - } - - item.data = { - type: 'Hash', - loc: node.loc, - value: toHex(args[0]) + toHex(args[1]) + toHex(args[2]) - }; - - compressHex(item.data, item); - } -} - -function compressIdent(node, item) { - if (this.declaration === null) { - return; - } - - let color = node.name.toLowerCase(); - - if (NAME_TO_HEX.hasOwnProperty(color) && - cssTree.lexer.matchDeclaration(this.declaration).isType(node, 'color')) { - const hex = NAME_TO_HEX[color]; - - if (hex.length + 1 <= color.length) { - // replace for shorter hex value - item.data = { - type: 'Hash', - loc: node.loc, - value: hex - }; - } else { - // special case for consistent colors - if (color === 'grey') { - color = 'gray'; - } - - // just replace value for lower cased name - node.name = color; - } - } -} - -function compressHex(node, item) { - let color = node.value.toLowerCase(); - - // #112233 -> #123 - if (color.length === 6 && - color[0] === color[1] && - color[2] === color[3] && - color[4] === color[5]) { - color = color[0] + color[2] + color[4]; - } - - if (HEX_TO_NAME[color]) { - item.data = { - type: 'Identifier', - loc: node.loc, - name: HEX_TO_NAME[color] - }; - } else { - node.value = color; - } -} - -exports.compressFunction = compressFunction; -exports.compressHex = compressHex; -exports.compressIdent = compressIdent; diff --git a/node_modules/csso/cjs/replace/index.cjs b/node_modules/csso/cjs/replace/index.cjs deleted file mode 100644 index 59bdf476..00000000 --- a/node_modules/csso/cjs/replace/index.cjs +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const Atrule = require('./Atrule.cjs'); -const AttributeSelector = require('./AttributeSelector.cjs'); -const Value = require('./Value.cjs'); -const Dimension = require('./Dimension.cjs'); -const Percentage = require('./Percentage.cjs'); -const _Number = require('./Number.cjs'); -const Url = require('./Url.cjs'); -const color = require('./color.cjs'); - -const handlers = { - Atrule, - AttributeSelector, - Value, - Dimension, - Percentage, - Number: _Number.Number, - Url, - Hash: color.compressHex, - Identifier: color.compressIdent, - Function: color.compressFunction -}; - -function replace(ast) { - cssTree.walk(ast, { - leave(node, item, list) { - if (handlers.hasOwnProperty(node.type)) { - handlers[node.type].call(this, node, item, list); - } - } - }); -} - -module.exports = replace; diff --git a/node_modules/csso/cjs/replace/property/background.cjs b/node_modules/csso/cjs/replace/property/background.cjs deleted file mode 100644 index fd407809..00000000 --- a/node_modules/csso/cjs/replace/property/background.cjs +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); - -function compressBackground(node) { - function flush() { - if (!buffer.length) { - buffer.unshift( - { - type: 'Number', - loc: null, - value: '0' - }, - { - type: 'Number', - loc: null, - value: '0' - } - ); - } - - newValue.push.apply(newValue, buffer); - - buffer = []; - } - - let newValue = []; - let buffer = []; - - node.children.forEach((node) => { - if (node.type === 'Operator' && node.value === ',') { - flush(); - newValue.push(node); - return; - } - - // remove defaults - if (node.type === 'Identifier') { - if (node.name === 'transparent' || - node.name === 'none' || - node.name === 'repeat' || - node.name === 'scroll') { - return; - } - } - - buffer.push(node); - }); - - flush(); - node.children = new cssTree.List().fromArray(newValue); -} - -module.exports = compressBackground; diff --git a/node_modules/csso/cjs/replace/property/border.cjs b/node_modules/csso/cjs/replace/property/border.cjs deleted file mode 100644 index 4fc505f7..00000000 --- a/node_modules/csso/cjs/replace/property/border.cjs +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -function compressBorder(node) { - node.children.forEach((node, item, list) => { - if (node.type === 'Identifier' && node.name.toLowerCase() === 'none') { - if (list.head === list.tail) { - // replace `none` for zero when `none` is a single term - item.data = { - type: 'Number', - loc: node.loc, - value: '0' - }; - } else { - list.remove(item); - } - } - }); -} - -module.exports = compressBorder; diff --git a/node_modules/csso/cjs/replace/property/font-weight.cjs b/node_modules/csso/cjs/replace/property/font-weight.cjs deleted file mode 100644 index 0824f1dd..00000000 --- a/node_modules/csso/cjs/replace/property/font-weight.cjs +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -function compressFontWeight(node) { - const value = node.children.head.data; - - if (value.type === 'Identifier') { - switch (value.name) { - case 'normal': - node.children.head.data = { - type: 'Number', - loc: value.loc, - value: '400' - }; - break; - case 'bold': - node.children.head.data = { - type: 'Number', - loc: value.loc, - value: '700' - }; - break; - } - } -} - -module.exports = compressFontWeight; diff --git a/node_modules/csso/cjs/replace/property/font.cjs b/node_modules/csso/cjs/replace/property/font.cjs deleted file mode 100644 index a23cf363..00000000 --- a/node_modules/csso/cjs/replace/property/font.cjs +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -function compressFont(node) { - const list = node.children; - - list.forEachRight(function(node, item) { - if (node.type === 'Identifier') { - if (node.name === 'bold') { - item.data = { - type: 'Number', - loc: node.loc, - value: '700' - }; - } else if (node.name === 'normal') { - const prev = item.prev; - - if (prev && prev.data.type === 'Operator' && prev.data.value === '/') { - this.remove(prev); - } - - this.remove(item); - } - } - }); - - if (list.isEmpty) { - list.insert(list.createItem({ - type: 'Identifier', - name: 'normal' - })); - } -} - -module.exports = compressFont; diff --git a/node_modules/csso/cjs/restructure/1-mergeAtrule.cjs b/node_modules/csso/cjs/restructure/1-mergeAtrule.cjs deleted file mode 100644 index 308587a0..00000000 --- a/node_modules/csso/cjs/restructure/1-mergeAtrule.cjs +++ /dev/null @@ -1,109 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); - -const { hasOwnProperty } = Object.prototype; - -function addRuleToMap(map, item, list, single) { - const node = item.data; - const name = cssTree.keyword(node.name).basename; - const id = node.name.toLowerCase() + '/' + (node.prelude ? node.prelude.id : null); - - if (!hasOwnProperty.call(map, name)) { - map[name] = Object.create(null); - } - - if (single) { - delete map[name][id]; - } - - if (!hasOwnProperty.call(map[name], id)) { - map[name][id] = new cssTree.List(); - } - - map[name][id].append(list.remove(item)); -} - -function relocateAtrules(ast, options) { - const collected = Object.create(null); - let topInjectPoint = null; - - ast.children.forEach(function(node, item, list) { - if (node.type === 'Atrule') { - const name = cssTree.keyword(node.name).basename; - - switch (name) { - case 'keyframes': - addRuleToMap(collected, item, list, true); - return; - - case 'media': - if (options.forceMediaMerge) { - addRuleToMap(collected, item, list, false); - return; - } - break; - } - - if (topInjectPoint === null && - name !== 'charset' && - name !== 'import') { - topInjectPoint = item; - } - } else { - if (topInjectPoint === null) { - topInjectPoint = item; - } - } - }); - - for (const atrule in collected) { - for (const id in collected[atrule]) { - ast.children.insertList( - collected[atrule][id], - atrule === 'media' ? null : topInjectPoint - ); - } - } -} -function isMediaRule(node) { - return node.type === 'Atrule' && node.name === 'media'; -} - -function processAtrule(node, item, list) { - if (!isMediaRule(node)) { - return; - } - - const prev = item.prev && item.prev.data; - - if (!prev || !isMediaRule(prev)) { - return; - } - - // merge @media with same query - if (node.prelude && - prev.prelude && - node.prelude.id === prev.prelude.id) { - prev.block.children.appendList(node.block.children); - list.remove(item); - - // TODO: use it when we can refer to several points in source - // prev.loc = { - // primary: prev.loc, - // merged: node.loc - // }; - } -} - -function rejoinAtrule(ast, options) { - relocateAtrules(ast, options); - - cssTree.walk(ast, { - visit: 'Atrule', - reverse: true, - enter: processAtrule - }); -} - -module.exports = rejoinAtrule; diff --git a/node_modules/csso/cjs/restructure/2-initialMergeRuleset.cjs b/node_modules/csso/cjs/restructure/2-initialMergeRuleset.cjs deleted file mode 100644 index 1a1f90ce..00000000 --- a/node_modules/csso/cjs/restructure/2-initialMergeRuleset.cjs +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const utils = require('./utils.cjs'); - -function processRule(node, item, list) { - const selectors = node.prelude.children; - const declarations = node.block.children; - - list.prevUntil(item.prev, function(prev) { - // skip non-ruleset node if safe - if (prev.type !== 'Rule') { - return utils.unsafeToSkipNode.call(selectors, prev); - } - - const prevSelectors = prev.prelude.children; - const prevDeclarations = prev.block.children; - - // try to join rulesets with equal pseudo signature - if (node.pseudoSignature === prev.pseudoSignature) { - // try to join by selectors - if (utils.isEqualSelectors(prevSelectors, selectors)) { - prevDeclarations.appendList(declarations); - list.remove(item); - return true; - } - - // try to join by declarations - if (utils.isEqualDeclarations(declarations, prevDeclarations)) { - utils.addSelectors(prevSelectors, selectors); - list.remove(item); - return true; - } - } - - // go to prev ruleset if has no selector similarities - return utils.hasSimilarSelectors(selectors, prevSelectors); - }); -} - -// NOTE: direction should be left to right, since rulesets merge to left -// ruleset. When direction right to left unmerged rulesets may prevent lookup -// TODO: remove initial merge -function initialMergeRule(ast) { - cssTree.walk(ast, { - visit: 'Rule', - enter: processRule - }); -} - -module.exports = initialMergeRule; diff --git a/node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs b/node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs deleted file mode 100644 index bf1d627d..00000000 --- a/node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); - -function processRule(node, item, list) { - const selectors = node.prelude.children; - - // generate new rule sets: - // .a, .b { color: red; } - // -> - // .a { color: red; } - // .b { color: red; } - - // while there are more than 1 simple selector split for rulesets - while (selectors.head !== selectors.tail) { - const newSelectors = new cssTree.List(); - - newSelectors.insert(selectors.remove(selectors.head)); - - list.insert(list.createItem({ - type: 'Rule', - loc: node.loc, - prelude: { - type: 'SelectorList', - loc: node.prelude.loc, - children: newSelectors - }, - block: { - type: 'Block', - loc: node.block.loc, - children: node.block.children.copy() - }, - pseudoSignature: node.pseudoSignature - }), item); - } -} - -function disjoinRule(ast) { - cssTree.walk(ast, { - visit: 'Rule', - reverse: true, - enter: processRule - }); -} - -module.exports = disjoinRule; diff --git a/node_modules/csso/cjs/restructure/4-restructShorthand.cjs b/node_modules/csso/cjs/restructure/4-restructShorthand.cjs deleted file mode 100644 index a2acfa2b..00000000 --- a/node_modules/csso/cjs/restructure/4-restructShorthand.cjs +++ /dev/null @@ -1,429 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); - -const REPLACE = 1; -const REMOVE = 2; -const TOP = 0; -const RIGHT = 1; -const BOTTOM = 2; -const LEFT = 3; -const SIDES = ['top', 'right', 'bottom', 'left']; -const SIDE = { - 'margin-top': 'top', - 'margin-right': 'right', - 'margin-bottom': 'bottom', - 'margin-left': 'left', - - 'padding-top': 'top', - 'padding-right': 'right', - 'padding-bottom': 'bottom', - 'padding-left': 'left', - - 'border-top-color': 'top', - 'border-right-color': 'right', - 'border-bottom-color': 'bottom', - 'border-left-color': 'left', - 'border-top-width': 'top', - 'border-right-width': 'right', - 'border-bottom-width': 'bottom', - 'border-left-width': 'left', - 'border-top-style': 'top', - 'border-right-style': 'right', - 'border-bottom-style': 'bottom', - 'border-left-style': 'left' -}; -const MAIN_PROPERTY = { - 'margin': 'margin', - 'margin-top': 'margin', - 'margin-right': 'margin', - 'margin-bottom': 'margin', - 'margin-left': 'margin', - - 'padding': 'padding', - 'padding-top': 'padding', - 'padding-right': 'padding', - 'padding-bottom': 'padding', - 'padding-left': 'padding', - - 'border-color': 'border-color', - 'border-top-color': 'border-color', - 'border-right-color': 'border-color', - 'border-bottom-color': 'border-color', - 'border-left-color': 'border-color', - 'border-width': 'border-width', - 'border-top-width': 'border-width', - 'border-right-width': 'border-width', - 'border-bottom-width': 'border-width', - 'border-left-width': 'border-width', - 'border-style': 'border-style', - 'border-top-style': 'border-style', - 'border-right-style': 'border-style', - 'border-bottom-style': 'border-style', - 'border-left-style': 'border-style' -}; - -class TRBL { - constructor(name) { - this.name = name; - this.loc = null; - this.iehack = undefined; - this.sides = { - 'top': null, - 'right': null, - 'bottom': null, - 'left': null - }; - } - - getValueSequence(declaration, count) { - const values = []; - let iehack = ''; - const hasBadValues = declaration.value.type !== 'Value' || declaration.value.children.some(function(child) { - let special = false; - - switch (child.type) { - case 'Identifier': - switch (child.name) { - case '\\0': - case '\\9': - iehack = child.name; - return; - - case 'inherit': - case 'initial': - case 'unset': - case 'revert': - special = child.name; - break; - } - break; - - case 'Dimension': - switch (child.unit) { - // is not supported until IE11 - case 'rem': - - // v* units is too buggy across browsers and better - // don't merge values with those units - case 'vw': - case 'vh': - case 'vmin': - case 'vmax': - case 'vm': // IE9 supporting "vm" instead of "vmin". - special = child.unit; - break; - } - break; - - case 'Hash': // color - case 'Number': - case 'Percentage': - break; - - case 'Function': - if (child.name === 'var') { - return true; - } - - special = child.name; - break; - - default: - return true; // bad value - } - - values.push({ - node: child, - special, - important: declaration.important - }); - }); - - if (hasBadValues || values.length > count) { - return false; - } - - if (typeof this.iehack === 'string' && this.iehack !== iehack) { - return false; - } - - this.iehack = iehack; // move outside - - return values; - } - - canOverride(side, value) { - const currentValue = this.sides[side]; - - return !currentValue || (value.important && !currentValue.important); - } - - add(name, declaration) { - function attemptToAdd() { - const sides = this.sides; - const side = SIDE[name]; - - if (side) { - if (side in sides === false) { - return false; - } - - const values = this.getValueSequence(declaration, 1); - - if (!values || !values.length) { - return false; - } - - // can mix only if specials are equal - for (const key in sides) { - if (sides[key] !== null && sides[key].special !== values[0].special) { - return false; - } - } - - if (!this.canOverride(side, values[0])) { - return true; - } - - sides[side] = values[0]; - - return true; - } else if (name === this.name) { - const values = this.getValueSequence(declaration, 4); - - if (!values || !values.length) { - return false; - } - - switch (values.length) { - case 1: - values[RIGHT] = values[TOP]; - values[BOTTOM] = values[TOP]; - values[LEFT] = values[TOP]; - break; - - case 2: - values[BOTTOM] = values[TOP]; - values[LEFT] = values[RIGHT]; - break; - - case 3: - values[LEFT] = values[RIGHT]; - break; - } - - // can mix only if specials are equal - for (let i = 0; i < 4; i++) { - for (const key in sides) { - if (sides[key] !== null && sides[key].special !== values[i].special) { - return false; - } - } - } - - for (let i = 0; i < 4; i++) { - if (this.canOverride(SIDES[i], values[i])) { - sides[SIDES[i]] = values[i]; - } - } - - return true; - } - } - - if (!attemptToAdd.call(this)) { - return false; - } - - // TODO: use it when we can refer to several points in source - // if (this.loc) { - // this.loc = { - // primary: this.loc, - // merged: declaration.loc - // }; - // } else { - // this.loc = declaration.loc; - // } - if (!this.loc) { - this.loc = declaration.loc; - } - - return true; - } - - isOkToMinimize() { - const top = this.sides.top; - const right = this.sides.right; - const bottom = this.sides.bottom; - const left = this.sides.left; - - if (top && right && bottom && left) { - const important = - top.important + - right.important + - bottom.important + - left.important; - - return important === 0 || important === 4; - } - - return false; - } - - getValue() { - const result = new cssTree.List(); - const sides = this.sides; - const values = [ - sides.top, - sides.right, - sides.bottom, - sides.left - ]; - const stringValues = [ - cssTree.generate(sides.top.node), - cssTree.generate(sides.right.node), - cssTree.generate(sides.bottom.node), - cssTree.generate(sides.left.node) - ]; - - if (stringValues[LEFT] === stringValues[RIGHT]) { - values.pop(); - if (stringValues[BOTTOM] === stringValues[TOP]) { - values.pop(); - if (stringValues[RIGHT] === stringValues[TOP]) { - values.pop(); - } - } - } - - for (let i = 0; i < values.length; i++) { - result.appendData(values[i].node); - } - - if (this.iehack) { - result.appendData({ - type: 'Identifier', - loc: null, - name: this.iehack - }); - } - - return { - type: 'Value', - loc: null, - children: result - }; - } - - getDeclaration() { - return { - type: 'Declaration', - loc: this.loc, - important: this.sides.top.important, - property: this.name, - value: this.getValue() - }; - } -} - -function processRule(rule, shorts, shortDeclarations, lastShortSelector) { - const declarations = rule.block.children; - const selector = rule.prelude.children.first.id; - - rule.block.children.forEachRight(function(declaration, item) { - const property = declaration.property; - - if (!MAIN_PROPERTY.hasOwnProperty(property)) { - return; - } - - const key = MAIN_PROPERTY[property]; - let shorthand; - let operation; - - if (!lastShortSelector || selector === lastShortSelector) { - if (key in shorts) { - operation = REMOVE; - shorthand = shorts[key]; - } - } - - if (!shorthand || !shorthand.add(property, declaration)) { - operation = REPLACE; - shorthand = new TRBL(key); - - // if can't parse value ignore it and break shorthand children - if (!shorthand.add(property, declaration)) { - lastShortSelector = null; - return; - } - } - - shorts[key] = shorthand; - shortDeclarations.push({ - operation, - block: declarations, - item, - shorthand - }); - - lastShortSelector = selector; - }); - - return lastShortSelector; -} - -function processShorthands(shortDeclarations, markDeclaration) { - shortDeclarations.forEach(function(item) { - const shorthand = item.shorthand; - - if (!shorthand.isOkToMinimize()) { - return; - } - - if (item.operation === REPLACE) { - item.item.data = markDeclaration(shorthand.getDeclaration()); - } else { - item.block.remove(item.item); - } - }); -} - -function restructBlock(ast, indexer) { - const stylesheetMap = {}; - const shortDeclarations = []; - - cssTree.walk(ast, { - visit: 'Rule', - reverse: true, - enter(node) { - const stylesheet = this.block || this.stylesheet; - const ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first.id; - let ruleMap; - let shorts; - - if (!stylesheetMap.hasOwnProperty(stylesheet.id)) { - ruleMap = { - lastShortSelector: null - }; - stylesheetMap[stylesheet.id] = ruleMap; - } else { - ruleMap = stylesheetMap[stylesheet.id]; - } - - if (ruleMap.hasOwnProperty(ruleId)) { - shorts = ruleMap[ruleId]; - } else { - shorts = {}; - ruleMap[ruleId] = shorts; - } - - ruleMap.lastShortSelector = processRule.call(this, node, shorts, shortDeclarations, ruleMap.lastShortSelector); - } - }); - - processShorthands(shortDeclarations, indexer.declaration); -} - -module.exports = restructBlock; diff --git a/node_modules/csso/cjs/restructure/6-restructBlock.cjs b/node_modules/csso/cjs/restructure/6-restructBlock.cjs deleted file mode 100644 index ba2d0f0d..00000000 --- a/node_modules/csso/cjs/restructure/6-restructBlock.cjs +++ /dev/null @@ -1,307 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); - -let fingerprintId = 1; -const dontRestructure = new Set([ - 'src' // https://github.com/afelix/csso/issues/50 -]); - -const DONT_MIX_VALUE = { - // https://developer.mozilla.org/en-US/docs/Web/CSS/display#Browser_compatibility - 'display': /table|ruby|flex|-(flex)?box$|grid|contents|run-in/i, - // https://developer.mozilla.org/en/docs/Web/CSS/text-align - 'text-align': /^(start|end|match-parent|justify-all)$/i -}; - -const SAFE_VALUES = { - cursor: [ - 'auto', 'crosshair', 'default', 'move', 'text', 'wait', 'help', - 'n-resize', 'e-resize', 's-resize', 'w-resize', - 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', - 'pointer', 'progress', 'not-allowed', 'no-drop', 'vertical-text', 'all-scroll', - 'col-resize', 'row-resize' - ], - overflow: [ - 'hidden', 'visible', 'scroll', 'auto' - ], - position: [ - 'static', 'relative', 'absolute', 'fixed' - ] -}; - -const NEEDLESS_TABLE = { - 'border-width': ['border'], - 'border-style': ['border'], - 'border-color': ['border'], - 'border-top': ['border'], - 'border-right': ['border'], - 'border-bottom': ['border'], - 'border-left': ['border'], - 'border-top-width': ['border-top', 'border-width', 'border'], - 'border-right-width': ['border-right', 'border-width', 'border'], - 'border-bottom-width': ['border-bottom', 'border-width', 'border'], - 'border-left-width': ['border-left', 'border-width', 'border'], - 'border-top-style': ['border-top', 'border-style', 'border'], - 'border-right-style': ['border-right', 'border-style', 'border'], - 'border-bottom-style': ['border-bottom', 'border-style', 'border'], - 'border-left-style': ['border-left', 'border-style', 'border'], - 'border-top-color': ['border-top', 'border-color', 'border'], - 'border-right-color': ['border-right', 'border-color', 'border'], - 'border-bottom-color': ['border-bottom', 'border-color', 'border'], - 'border-left-color': ['border-left', 'border-color', 'border'], - 'margin-top': ['margin'], - 'margin-right': ['margin'], - 'margin-bottom': ['margin'], - 'margin-left': ['margin'], - 'padding-top': ['padding'], - 'padding-right': ['padding'], - 'padding-bottom': ['padding'], - 'padding-left': ['padding'], - 'font-style': ['font'], - 'font-variant': ['font'], - 'font-weight': ['font'], - 'font-size': ['font'], - 'font-family': ['font'], - 'list-style-type': ['list-style'], - 'list-style-position': ['list-style'], - 'list-style-image': ['list-style'] -}; - -function getPropertyFingerprint(propertyName, declaration, fingerprints) { - const realName = cssTree.property(propertyName).basename; - - if (realName === 'background') { - return propertyName + ':' + cssTree.generate(declaration.value); - } - - const declarationId = declaration.id; - let fingerprint = fingerprints[declarationId]; - - if (!fingerprint) { - switch (declaration.value.type) { - case 'Value': - const special = {}; - let vendorId = ''; - let iehack = ''; - let raw = false; - - declaration.value.children.forEach(function walk(node) { - switch (node.type) { - case 'Value': - case 'Brackets': - case 'Parentheses': - node.children.forEach(walk); - break; - - case 'Raw': - raw = true; - break; - - case 'Identifier': { - const { name } = node; - - if (!vendorId) { - vendorId = cssTree.keyword(name).vendor; - } - - if (/\\[09]/.test(name)) { - iehack = RegExp.lastMatch; - } - - if (SAFE_VALUES.hasOwnProperty(realName)) { - if (SAFE_VALUES[realName].indexOf(name) === -1) { - special[name] = true; - } - } else if (DONT_MIX_VALUE.hasOwnProperty(realName)) { - if (DONT_MIX_VALUE[realName].test(name)) { - special[name] = true; - } - } - - break; - } - - case 'Function': { - let { name } = node; - - if (!vendorId) { - vendorId = cssTree.keyword(name).vendor; - } - - if (name === 'rect') { - // there are 2 forms of rect: - // rect(<top>, <right>, <bottom>, <left>) - standart - // rect(<top> <right> <bottom> <left>) – backwards compatible syntax - // only the same form values can be merged - const hasComma = node.children.some((node) => - node.type === 'Operator' && node.value === ',' - ); - - if (!hasComma) { - name = 'rect-backward'; - } - } - - special[name + '()'] = true; - - // check nested tokens too - node.children.forEach(walk); - - break; - } - - case 'Dimension': { - const { unit } = node; - - if (/\\[09]/.test(unit)) { - iehack = RegExp.lastMatch; - } - - switch (unit) { - // is not supported until IE11 - case 'rem': - - // v* units is too buggy across browsers and better - // don't merge values with those units - case 'vw': - case 'vh': - case 'vmin': - case 'vmax': - case 'vm': // IE9 supporting "vm" instead of "vmin". - special[unit] = true; - break; - } - - break; - } - } - }); - - fingerprint = raw - ? '!' + fingerprintId++ - : '!' + Object.keys(special).sort() + '|' + iehack + vendorId; - break; - - case 'Raw': - fingerprint = '!' + declaration.value.value; - break; - - default: - fingerprint = cssTree.generate(declaration.value); - } - - fingerprints[declarationId] = fingerprint; - } - - return propertyName + fingerprint; -} - -function needless(props, declaration, fingerprints) { - const property = cssTree.property(declaration.property); - - if (NEEDLESS_TABLE.hasOwnProperty(property.basename)) { - const table = NEEDLESS_TABLE[property.basename]; - - for (const entry of table) { - const ppre = getPropertyFingerprint(property.prefix + entry, declaration, fingerprints); - const prev = props.hasOwnProperty(ppre) ? props[ppre] : null; - - if (prev && (!declaration.important || prev.item.data.important)) { - return prev; - } - } - } -} - -function processRule(rule, item, list, props, fingerprints) { - const declarations = rule.block.children; - - declarations.forEachRight(function(declaration, declarationItem) { - const { property } = declaration; - const fingerprint = getPropertyFingerprint(property, declaration, fingerprints); - const prev = props[fingerprint]; - - if (prev && !dontRestructure.has(property)) { - if (declaration.important && !prev.item.data.important) { - props[fingerprint] = { - block: declarations, - item: declarationItem - }; - - prev.block.remove(prev.item); - - // TODO: use it when we can refer to several points in source - // declaration.loc = { - // primary: declaration.loc, - // merged: prev.item.data.loc - // }; - } else { - declarations.remove(declarationItem); - - // TODO: use it when we can refer to several points in source - // prev.item.data.loc = { - // primary: prev.item.data.loc, - // merged: declaration.loc - // }; - } - } else { - const prev = needless(props, declaration, fingerprints); - - if (prev) { - declarations.remove(declarationItem); - - // TODO: use it when we can refer to several points in source - // prev.item.data.loc = { - // primary: prev.item.data.loc, - // merged: declaration.loc - // }; - } else { - declaration.fingerprint = fingerprint; - - props[fingerprint] = { - block: declarations, - item: declarationItem - }; - } - } - }); - - if (declarations.isEmpty) { - list.remove(item); - } -} - -function restructBlock(ast) { - const stylesheetMap = {}; - const fingerprints = Object.create(null); - - cssTree.walk(ast, { - visit: 'Rule', - reverse: true, - enter(node, item, list) { - const stylesheet = this.block || this.stylesheet; - const ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first.id; - let ruleMap; - let props; - - if (!stylesheetMap.hasOwnProperty(stylesheet.id)) { - ruleMap = {}; - stylesheetMap[stylesheet.id] = ruleMap; - } else { - ruleMap = stylesheetMap[stylesheet.id]; - } - - if (ruleMap.hasOwnProperty(ruleId)) { - props = ruleMap[ruleId]; - } else { - props = {}; - ruleMap[ruleId] = props; - } - - processRule.call(this, node, item, list, props, fingerprints); - } - }); -} - -module.exports = restructBlock; diff --git a/node_modules/csso/cjs/restructure/7-mergeRuleset.cjs b/node_modules/csso/cjs/restructure/7-mergeRuleset.cjs deleted file mode 100644 index 797b9401..00000000 --- a/node_modules/csso/cjs/restructure/7-mergeRuleset.cjs +++ /dev/null @@ -1,90 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const utils = require('./utils.cjs'); - -/* - At this step all rules has single simple selector. We try to join by equal - declaration blocks to first rule, e.g. - - .a { color: red } - b { ... } - .b { color: red } - -> - .a, .b { color: red } - b { ... } -*/ - -function processRule(node, item, list) { - const selectors = node.prelude.children; - const declarations = node.block.children; - const nodeCompareMarker = selectors.first.compareMarker; - const skippedCompareMarkers = {}; - - list.nextUntil(item.next, function(next, nextItem) { - // skip non-ruleset node if safe - if (next.type !== 'Rule') { - return utils.unsafeToSkipNode.call(selectors, next); - } - - if (node.pseudoSignature !== next.pseudoSignature) { - return true; - } - - const nextFirstSelector = next.prelude.children.head; - const nextDeclarations = next.block.children; - const nextCompareMarker = nextFirstSelector.data.compareMarker; - - // if next ruleset has same marked as one of skipped then stop joining - if (nextCompareMarker in skippedCompareMarkers) { - return true; - } - - // try to join by selectors - if (selectors.head === selectors.tail) { - if (selectors.first.id === nextFirstSelector.data.id) { - declarations.appendList(nextDeclarations); - list.remove(nextItem); - return; - } - } - - // try to join by properties - if (utils.isEqualDeclarations(declarations, nextDeclarations)) { - const nextStr = nextFirstSelector.data.id; - - selectors.some((data, item) => { - const curStr = data.id; - - if (nextStr < curStr) { - selectors.insert(nextFirstSelector, item); - return true; - } - - if (!item.next) { - selectors.insert(nextFirstSelector); - return true; - } - }); - - list.remove(nextItem); - return; - } - - // go to next ruleset if current one can be skipped (has no equal specificity nor element selector) - if (nextCompareMarker === nodeCompareMarker) { - return true; - } - - skippedCompareMarkers[nextCompareMarker] = true; - }); -} - -function mergeRule(ast) { - cssTree.walk(ast, { - visit: 'Rule', - enter: processRule - }); -} - -module.exports = mergeRule; diff --git a/node_modules/csso/cjs/restructure/8-restructRuleset.cjs b/node_modules/csso/cjs/restructure/8-restructRuleset.cjs deleted file mode 100644 index 3eda382f..00000000 --- a/node_modules/csso/cjs/restructure/8-restructRuleset.cjs +++ /dev/null @@ -1,175 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const utils = require('./utils.cjs'); - -function calcSelectorLength(list) { - return list.reduce((res, data) => res + data.id.length + 1, 0) - 1; -} - -function calcDeclarationsLength(tokens) { - let length = 0; - - for (const token of tokens) { - length += token.length; - } - - return ( - length + // declarations - tokens.length - 1 // delimeters - ); -} - -function processRule(node, item, list) { - const avoidRulesMerge = this.block !== null ? this.block.avoidRulesMerge : false; - const selectors = node.prelude.children; - const block = node.block; - const disallowDownMarkers = Object.create(null); - let allowMergeUp = true; - let allowMergeDown = true; - - list.prevUntil(item.prev, function(prev, prevItem) { - const prevBlock = prev.block; - const prevType = prev.type; - - if (prevType !== 'Rule') { - const unsafe = utils.unsafeToSkipNode.call(selectors, prev); - - if (!unsafe && prevType === 'Atrule' && prevBlock) { - cssTree.walk(prevBlock, { - visit: 'Rule', - enter(node) { - node.prelude.children.forEach((data) => { - disallowDownMarkers[data.compareMarker] = true; - }); - } - }); - } - - return unsafe; - } - - if (node.pseudoSignature !== prev.pseudoSignature) { - return true; - } - - const prevSelectors = prev.prelude.children; - - allowMergeDown = !prevSelectors.some((selector) => - selector.compareMarker in disallowDownMarkers - ); - - // try prev ruleset if simpleselectors has no equal specifity and element selector - if (!allowMergeDown && !allowMergeUp) { - return true; - } - - // try to join by selectors - if (allowMergeUp && utils.isEqualSelectors(prevSelectors, selectors)) { - prevBlock.children.appendList(block.children); - list.remove(item); - - return true; - } - - // try to join by properties - const diff = utils.compareDeclarations(block.children, prevBlock.children); - - // console.log(diff.eq, diff.ne1, diff.ne2); - - if (diff.eq.length) { - if (!diff.ne1.length && !diff.ne2.length) { - // equal blocks - if (allowMergeDown) { - utils.addSelectors(selectors, prevSelectors); - list.remove(prevItem); - } - - return true; - } else if (!avoidRulesMerge) { /* probably we don't need to prevent those merges for @keyframes - TODO: need to be checked */ - - if (diff.ne1.length && !diff.ne2.length) { - // prevBlock is subset block - const selectorLength = calcSelectorLength(selectors); - const blockLength = calcDeclarationsLength(diff.eq); // declarations length - - if (allowMergeUp && selectorLength < blockLength) { - utils.addSelectors(prevSelectors, selectors); - block.children.fromArray(diff.ne1); - } - } else if (!diff.ne1.length && diff.ne2.length) { - // node is subset of prevBlock - const selectorLength = calcSelectorLength(prevSelectors); - const blockLength = calcDeclarationsLength(diff.eq); // declarations length - - if (allowMergeDown && selectorLength < blockLength) { - utils.addSelectors(selectors, prevSelectors); - prevBlock.children.fromArray(diff.ne2); - } - } else { - // diff.ne1.length && diff.ne2.length - // extract equal block - const newSelector = { - type: 'SelectorList', - loc: null, - children: utils.addSelectors(prevSelectors.copy(), selectors) - }; - const newBlockLength = calcSelectorLength(newSelector.children) + 2; // selectors length + curly braces length - const blockLength = calcDeclarationsLength(diff.eq); // declarations length - - // create new ruleset if declarations length greater than - // ruleset description overhead - if (blockLength >= newBlockLength) { - const newItem = list.createItem({ - type: 'Rule', - loc: null, - prelude: newSelector, - block: { - type: 'Block', - loc: null, - children: new cssTree.List().fromArray(diff.eq) - }, - pseudoSignature: node.pseudoSignature - }); - - block.children.fromArray(diff.ne1); - prevBlock.children.fromArray(diff.ne2overrided); - - if (allowMergeUp) { - list.insert(newItem, prevItem); - } else { - list.insert(newItem, item); - } - - return true; - } - } - } - } - - if (allowMergeUp) { - // TODO: disallow up merge only if any property interception only (i.e. diff.ne2overrided.length > 0); - // await property families to find property interception correctly - allowMergeUp = !prevSelectors.some((prevSelector) => - selectors.some((selector) => - selector.compareMarker === prevSelector.compareMarker - ) - ); - } - - prevSelectors.forEach((data) => { - disallowDownMarkers[data.compareMarker] = true; - }); - }); -} - -function restructRule(ast) { - cssTree.walk(ast, { - visit: 'Rule', - reverse: true, - enter: processRule - }); -} - -module.exports = restructRule; diff --git a/node_modules/csso/cjs/restructure/index.cjs b/node_modules/csso/cjs/restructure/index.cjs deleted file mode 100644 index dac7a3c3..00000000 --- a/node_modules/csso/cjs/restructure/index.cjs +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -const index = require('./prepare/index.cjs'); -const _1MergeAtrule = require('./1-mergeAtrule.cjs'); -const _2InitialMergeRuleset = require('./2-initialMergeRuleset.cjs'); -const _3DisjoinRuleset = require('./3-disjoinRuleset.cjs'); -const _4RestructShorthand = require('./4-restructShorthand.cjs'); -const _6RestructBlock = require('./6-restructBlock.cjs'); -const _7MergeRuleset = require('./7-mergeRuleset.cjs'); -const _8RestructRuleset = require('./8-restructRuleset.cjs'); - -function restructure(ast, options) { - // prepare ast for restructing - const indexer = index(ast, options); - options.logger('prepare', ast); - - _1MergeAtrule(ast, options); - options.logger('mergeAtrule', ast); - - _2InitialMergeRuleset(ast); - options.logger('initialMergeRuleset', ast); - - _3DisjoinRuleset(ast); - options.logger('disjoinRuleset', ast); - - _4RestructShorthand(ast, indexer); - options.logger('restructShorthand', ast); - - _6RestructBlock(ast); - options.logger('restructBlock', ast); - - _7MergeRuleset(ast); - options.logger('mergeRuleset', ast); - - _8RestructRuleset(ast); - options.logger('restructRuleset', ast); -} - -module.exports = restructure; diff --git a/node_modules/csso/cjs/restructure/prepare/createDeclarationIndexer.cjs b/node_modules/csso/cjs/restructure/prepare/createDeclarationIndexer.cjs deleted file mode 100644 index 94489728..00000000 --- a/node_modules/csso/cjs/restructure/prepare/createDeclarationIndexer.cjs +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); - -class Index { - constructor() { - this.map = new Map(); - } - resolve(str) { - let index = this.map.get(str); - - if (index === undefined) { - index = this.map.size + 1; - this.map.set(str, index); - } - - return index; - } -} -function createDeclarationIndexer() { - const ids = new Index(); - - return function markDeclaration(node) { - const id = cssTree.generate(node); - - node.id = ids.resolve(id); - node.length = id.length; - node.fingerprint = null; - - return node; - }; -} - -module.exports = createDeclarationIndexer; diff --git a/node_modules/csso/cjs/restructure/prepare/index.cjs b/node_modules/csso/cjs/restructure/prepare/index.cjs deleted file mode 100644 index 42b49127..00000000 --- a/node_modules/csso/cjs/restructure/prepare/index.cjs +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const createDeclarationIndexer = require('./createDeclarationIndexer.cjs'); -const processSelector = require('./processSelector.cjs'); - -function prepare(ast, options) { - const markDeclaration = createDeclarationIndexer(); - - cssTree.walk(ast, { - visit: 'Rule', - enter(node) { - node.block.children.forEach(markDeclaration); - processSelector(node, options.usage); - } - }); - - cssTree.walk(ast, { - visit: 'Atrule', - enter(node) { - if (node.prelude) { - node.prelude.id = null; // pre-init property to avoid multiple hidden class for generate - node.prelude.id = cssTree.generate(node.prelude); - } - - // compare keyframe selectors by its values - // NOTE: still no clarification about problems with keyframes selector grouping (issue #197) - if (cssTree.keyword(node.name).basename === 'keyframes') { - node.block.avoidRulesMerge = true; /* probably we don't need to prevent those merges for @keyframes - TODO: need to be checked */ - node.block.children.forEach(function(rule) { - rule.prelude.children.forEach(function(simpleselector) { - simpleselector.compareMarker = simpleselector.id; - }); - }); - } - } - }); - - return { - declaration: markDeclaration - }; -} - -module.exports = prepare; diff --git a/node_modules/csso/cjs/restructure/prepare/processSelector.cjs b/node_modules/csso/cjs/restructure/prepare/processSelector.cjs deleted file mode 100644 index 5c9e1d21..00000000 --- a/node_modules/csso/cjs/restructure/prepare/processSelector.cjs +++ /dev/null @@ -1,101 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const specificity = require('./specificity.cjs'); - -const nonFreezePseudoElements = new Set([ - 'first-letter', - 'first-line', - 'after', - 'before' -]); -const nonFreezePseudoClasses = new Set([ - 'link', - 'visited', - 'hover', - 'active', - 'first-letter', - 'first-line', - 'after', - 'before' -]); - -function processSelector(node, usageData) { - const pseudos = new Set(); - - node.prelude.children.forEach(function(simpleSelector) { - let tagName = '*'; - let scope = 0; - - simpleSelector.children.forEach(function(node) { - switch (node.type) { - case 'ClassSelector': - if (usageData && usageData.scopes) { - const classScope = usageData.scopes[node.name] || 0; - - if (scope !== 0 && classScope !== scope) { - throw new Error('Selector can\'t has classes from different scopes: ' + cssTree.generate(simpleSelector)); - } - - scope = classScope; - } - - break; - - case 'PseudoClassSelector': { - const name = node.name.toLowerCase(); - - if (!nonFreezePseudoClasses.has(name)) { - pseudos.add(`:${name}`); - } - - break; - } - - case 'PseudoElementSelector': { - const name = node.name.toLowerCase(); - - if (!nonFreezePseudoElements.has(name)) { - pseudos.add(`::${name}`); - } - - break; - } - - case 'TypeSelector': - tagName = node.name.toLowerCase(); - break; - - case 'AttributeSelector': - if (node.flags) { - pseudos.add(`[${node.flags.toLowerCase()}]`); - } - - break; - - case 'Combinator': - tagName = '*'; - break; - } - }); - - simpleSelector.compareMarker = specificity(simpleSelector).toString(); - simpleSelector.id = null; // pre-init property to avoid multiple hidden class - simpleSelector.id = cssTree.generate(simpleSelector); - - if (scope) { - simpleSelector.compareMarker += ':' + scope; - } - - if (tagName !== '*') { - simpleSelector.compareMarker += ',' + tagName; - } - }); - - // add property to all rule nodes to avoid multiple hidden class - node.pseudoSignature = pseudos.size > 0 - ? [...pseudos].sort().join(',') - : false; -} - -module.exports = processSelector; diff --git a/node_modules/csso/cjs/restructure/prepare/specificity.cjs b/node_modules/csso/cjs/restructure/prepare/specificity.cjs deleted file mode 100644 index b62c3291..00000000 --- a/node_modules/csso/cjs/restructure/prepare/specificity.cjs +++ /dev/null @@ -1,133 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); - -function ensureSelectorList(node) { - if (node.type === 'Raw') { - return cssTree.parse(node.value, { context: 'selectorList' }); - } - - return node; -} - -function maxSpecificity(a, b) { - for (let i = 0; i < 3; i++) { - if (a[i] !== b[i]) { - return a[i] > b[i] ? a : b; - } - } - - return a; -} - -function maxSelectorListSpecificity(selectorList) { - return ensureSelectorList(selectorList).children.reduce( - (result, node) => maxSpecificity(specificity(node), result), - [0, 0, 0] - ); -} - -// §16. Calculating a selector’s specificity -// https://www.w3.org/TR/selectors-4/#specificity-rules -function specificity(simpleSelector) { - let A = 0; - let B = 0; - let C = 0; - - // A selector’s specificity is calculated for a given element as follows: - simpleSelector.children.forEach((node) => { - switch (node.type) { - // count the number of ID selectors in the selector (= A) - case 'IdSelector': - A++; - break; - - // count the number of class selectors, attributes selectors, ... - case 'ClassSelector': - case 'AttributeSelector': - B++; - break; - - // ... and pseudo-classes in the selector (= B) - case 'PseudoClassSelector': - switch (node.name.toLowerCase()) { - // The specificity of an :is(), :not(), or :has() pseudo-class is replaced - // by the specificity of the most specific complex selector in its selector list argument. - case 'not': - case 'has': - case 'is': - // :matches() is used before it was renamed to :is() - // https://github.com/w3c/csswg-drafts/issues/3258 - case 'matches': - // Older browsers support :is() functionality as prefixed pseudo-class :any() - // https://developer.mozilla.org/en-US/docs/Web/CSS/:is - case '-webkit-any': - case '-moz-any': { - const [a, b, c] = maxSelectorListSpecificity(node.children.first); - - A += a; - B += b; - C += c; - - break; - } - - // Analogously, the specificity of an :nth-child() or :nth-last-child() selector - // is the specificity of the pseudo class itself (counting as one pseudo-class selector) - // plus the specificity of the most specific complex selector in its selector list argument (if any). - case 'nth-child': - case 'nth-last-child': { - const arg = node.children.first; - - if (arg.type === 'Nth' && arg.selector) { - const [a, b, c] = maxSelectorListSpecificity(arg.selector); - - A += a; - B += b + 1; - C += c; - } else { - B++; - } - - break; - } - - // The specificity of a :where() pseudo-class is replaced by zero. - case 'where': - break; - - // The four Level 2 pseudo-elements (::before, ::after, ::first-line, and ::first-letter) may, - // for legacy reasons, be represented using the <pseudo-class-selector> grammar, - // with only a single ":" character at their start. - // https://www.w3.org/TR/selectors-4/#single-colon-pseudos - case 'before': - case 'after': - case 'first-line': - case 'first-letter': - C++; - break; - - default: - B++; - } - break; - - // count the number of type selectors ... - case 'TypeSelector': - // ignore the universal selector - if (!node.name.endsWith('*')) { - C++; - } - break; - - // ... and pseudo-elements in the selector (= C) - case 'PseudoElementSelector': - C++; - break; - } - }); - - return [A, B, C]; -} - -module.exports = specificity; diff --git a/node_modules/csso/cjs/restructure/utils.cjs b/node_modules/csso/cjs/restructure/utils.cjs deleted file mode 100644 index cd66a6a8..00000000 --- a/node_modules/csso/cjs/restructure/utils.cjs +++ /dev/null @@ -1,151 +0,0 @@ -'use strict'; - -const { hasOwnProperty } = Object.prototype; - -function isEqualSelectors(a, b) { - let cursor1 = a.head; - let cursor2 = b.head; - - while (cursor1 !== null && cursor2 !== null && cursor1.data.id === cursor2.data.id) { - cursor1 = cursor1.next; - cursor2 = cursor2.next; - } - - return cursor1 === null && cursor2 === null; -} - -function isEqualDeclarations(a, b) { - let cursor1 = a.head; - let cursor2 = b.head; - - while (cursor1 !== null && cursor2 !== null && cursor1.data.id === cursor2.data.id) { - cursor1 = cursor1.next; - cursor2 = cursor2.next; - } - - return cursor1 === null && cursor2 === null; -} - -function compareDeclarations(declarations1, declarations2) { - const result = { - eq: [], - ne1: [], - ne2: [], - ne2overrided: [] - }; - - const fingerprints = Object.create(null); - const declarations2hash = Object.create(null); - - for (let cursor = declarations2.head; cursor; cursor = cursor.next) { - declarations2hash[cursor.data.id] = true; - } - - for (let cursor = declarations1.head; cursor; cursor = cursor.next) { - const data = cursor.data; - - if (data.fingerprint) { - fingerprints[data.fingerprint] = data.important; - } - - if (declarations2hash[data.id]) { - declarations2hash[data.id] = false; - result.eq.push(data); - } else { - result.ne1.push(data); - } - } - - for (let cursor = declarations2.head; cursor; cursor = cursor.next) { - const data = cursor.data; - - if (declarations2hash[data.id]) { - // when declarations1 has an overriding declaration, this is not a difference - // unless no !important is used on prev and !important is used on the following - if (!hasOwnProperty.call(fingerprints, data.fingerprint) || - (!fingerprints[data.fingerprint] && data.important)) { - result.ne2.push(data); - } - - result.ne2overrided.push(data); - } - } - - return result; -} - -function addSelectors(dest, source) { - source.forEach((sourceData) => { - const newStr = sourceData.id; - let cursor = dest.head; - - while (cursor) { - const nextStr = cursor.data.id; - - if (nextStr === newStr) { - return; - } - - if (nextStr > newStr) { - break; - } - - cursor = cursor.next; - } - - dest.insert(dest.createItem(sourceData), cursor); - }); - - return dest; -} - -// check if simpleselectors has no equal specificity and element selector -function hasSimilarSelectors(selectors1, selectors2) { - let cursor1 = selectors1.head; - - while (cursor1 !== null) { - let cursor2 = selectors2.head; - - while (cursor2 !== null) { - if (cursor1.data.compareMarker === cursor2.data.compareMarker) { - return true; - } - - cursor2 = cursor2.next; - } - - cursor1 = cursor1.next; - } - - return false; -} - -// test node can't to be skipped -function unsafeToSkipNode(node) { - switch (node.type) { - case 'Rule': - // unsafe skip ruleset with selector similarities - return hasSimilarSelectors(node.prelude.children, this); - - case 'Atrule': - // can skip at-rules with blocks - if (node.block) { - // unsafe skip at-rule if block contains something unsafe to skip - return node.block.children.some(unsafeToSkipNode, this); - } - break; - - case 'Declaration': - return false; - } - - // unsafe by default - return true; -} - -exports.addSelectors = addSelectors; -exports.compareDeclarations = compareDeclarations; -exports.hasSimilarSelectors = hasSimilarSelectors; -exports.isEqualDeclarations = isEqualDeclarations; -exports.isEqualSelectors = isEqualSelectors; -exports.unsafeToSkipNode = unsafeToSkipNode; diff --git a/node_modules/csso/cjs/syntax.cjs b/node_modules/csso/cjs/syntax.cjs deleted file mode 100644 index 527604c0..00000000 --- a/node_modules/csso/cjs/syntax.cjs +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const compress = require('./compress.cjs'); -const specificity = require('./restructure/prepare/specificity.cjs'); - -function encodeString(value) { - const stringApostrophe = cssTree.string.encode(value, true); - const stringQuote = cssTree.string.encode(value); - - return stringApostrophe.length < stringQuote.length - ? stringApostrophe - : stringQuote; -} - -const { - lexer, - tokenize, - parse, - generate, - walk, - find, - findLast, - findAll, - fromPlainObject, - toPlainObject -} = cssTree.fork({ - node: { - String: { - generate(node) { - this.token(cssTree.tokenTypes.String, encodeString(node.value)); - } - }, - Url: { - generate(node) { - const encodedUrl = cssTree.url.encode(node.value); - const string = encodeString(node.value); - - this.token(cssTree.tokenTypes.Url, - encodedUrl.length <= string.length + 5 /* "url()".length */ - ? encodedUrl - : 'url(' + string + ')' - ); - } - } - } -}); - -exports.compress = compress; -exports.specificity = specificity; -exports.find = find; -exports.findAll = findAll; -exports.findLast = findLast; -exports.fromPlainObject = fromPlainObject; -exports.generate = generate; -exports.lexer = lexer; -exports.parse = parse; -exports.toPlainObject = toPlainObject; -exports.tokenize = tokenize; -exports.walk = walk; diff --git a/node_modules/csso/cjs/usage.cjs b/node_modules/csso/cjs/usage.cjs deleted file mode 100644 index 90abe9d2..00000000 --- a/node_modules/csso/cjs/usage.cjs +++ /dev/null @@ -1,75 +0,0 @@ -'use strict'; - -const { hasOwnProperty } = Object.prototype; - -function buildMap(list, caseInsensitive) { - const map = Object.create(null); - - if (!Array.isArray(list)) { - return null; - } - - for (let name of list) { - if (caseInsensitive) { - name = name.toLowerCase(); - } - - map[name] = true; - } - - return map; -} - -function buildList(data) { - if (!data) { - return null; - } - - const tags = buildMap(data.tags, true); - const ids = buildMap(data.ids); - const classes = buildMap(data.classes); - - if (tags === null && - ids === null && - classes === null) { - return null; - } - - return { - tags, - ids, - classes - }; -} - -function buildIndex(data) { - let scopes = false; - - if (data.scopes && Array.isArray(data.scopes)) { - scopes = Object.create(null); - - for (let i = 0; i < data.scopes.length; i++) { - const list = data.scopes[i]; - - if (!list || !Array.isArray(list)) { - throw new Error('Wrong usage format'); - } - - for (const name of list) { - if (hasOwnProperty.call(scopes, name)) { - throw new Error(`Class can't be used for several scopes: ${name}`); - } - - scopes[name] = i + 1; - } - } - } - - return { - whitelist: buildList(data), - blacklist: buildList(data.blacklist), - scopes - }; -} - -exports.buildIndex = buildIndex; diff --git a/node_modules/csso/cjs/utils.cjs b/node_modules/csso/cjs/utils.cjs deleted file mode 100644 index 61e75ec8..00000000 --- a/node_modules/csso/cjs/utils.cjs +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -const processSelector = require('./restructure/prepare/processSelector.cjs'); -const utils$1 = require('./restructure/utils.cjs'); - - - -exports.processSelector = processSelector; -exports.addSelectors = utils$1.addSelectors; -exports.compareDeclarations = utils$1.compareDeclarations; -exports.hasSimilarSelectors = utils$1.hasSimilarSelectors; -exports.isEqualDeclarations = utils$1.isEqualDeclarations; -exports.isEqualSelectors = utils$1.isEqualSelectors; -exports.unsafeToSkipNode = utils$1.unsafeToSkipNode; diff --git a/node_modules/csso/cjs/version.cjs b/node_modules/csso/cjs/version.cjs deleted file mode 100644 index eaa2fef2..00000000 --- a/node_modules/csso/cjs/version.cjs +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -const { version } = require('../package.json'); - -exports.version = version; diff --git a/node_modules/csso/dist/csso.esm.js b/node_modules/csso/dist/csso.esm.js deleted file mode 100644 index 57afe611..00000000 --- a/node_modules/csso/dist/csso.esm.js +++ /dev/null @@ -1,16 +0,0 @@ -var zl=Object.create;var Sr=Object.defineProperty;var Fl=Object.getOwnPropertyDescriptor;var Bl=Object.getOwnPropertyNames;var _l=Object.getPrototypeOf,Ul=Object.prototype.hasOwnProperty;var Ue=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),y=(e,t)=>{for(var r in t)Sr(e,r,{get:t[r],enumerable:!0})},jl=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Bl(t))!Ul.call(e,o)&&o!==r&&Sr(e,o,{get:()=>t[o],enumerable:!(n=Fl(t,o))||n.enumerable});return e};var ql=(e,t,r)=>(r=e!=null?zl(_l(e)):{},jl(t||!e||!e.__esModule?Sr(r,"default",{value:e,enumerable:!0}):r,e));var Zi=Ue(Dr=>{var Xi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");Dr.encode=function(e){if(0<=e&&e<Xi.length)return Xi[e];throw new TypeError("Must be between 0 and 63: "+e)};Dr.decode=function(e){var t=65,r=90,n=97,o=122,i=48,a=57,l=43,c=47,s=26,u=52;return t<=e&&e<=r?e-t:n<=e&&e<=o?e-n+s:i<=e&&e<=a?e-i+u:e==l?62:e==c?63:-1}});var na=Ue(Mr=>{var Ji=Zi(),Nr=5,ea=1<<Nr,ta=ea-1,ra=ea;function tc(e){return e<0?(-e<<1)+1:(e<<1)+0}function rc(e){var t=(e&1)===1,r=e>>1;return t?-r:r}Mr.encode=function(t){var r="",n,o=tc(t);do n=o&ta,o>>>=Nr,o>0&&(n|=ra),r+=Ji.encode(n);while(o>0);return r};Mr.decode=function(t,r,n){var o=t.length,i=0,a=0,l,c;do{if(r>=o)throw new Error("Expected more digits in base 64 VLQ value.");if(c=Ji.decode(t.charCodeAt(r++)),c===-1)throw new Error("Invalid base64 digit: "+t.charAt(r-1));l=!!(c&ra),c&=ta,i=i+(c<<a),a+=Nr}while(l);n.value=rc(i),n.rest=r}});var Gt=Ue(X=>{function nc(e,t,r){if(t in e)return e[t];if(arguments.length===3)return r;throw new Error('"'+t+'" is a required argument.')}X.getArg=nc;var oa=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,oc=/^data:.+\,.+$/;function dt(e){var t=e.match(oa);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}X.urlParse=dt;function Ve(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}X.urlGenerate=Ve;var ic=32;function ac(e){var t=[];return function(r){for(var n=0;n<t.length;n++)if(t[n].input===r){var o=t[0];return t[0]=t[n],t[n]=o,t[0].result}var i=e(r);return t.unshift({input:r,result:i}),t.length>ic&&t.pop(),i}}var Rr=ac(function(t){var r=t,n=dt(t);if(n){if(!n.path)return t;r=n.path}for(var o=X.isAbsolute(r),i=[],a=0,l=0;;)if(a=l,l=r.indexOf("/",a),l===-1){i.push(r.slice(a));break}else for(i.push(r.slice(a,l));l<r.length&&r[l]==="/";)l++;for(var c,s=0,l=i.length-1;l>=0;l--)c=i[l],c==="."?i.splice(l,1):c===".."?s++:s>0&&(c===""?(i.splice(l+1,s),s=0):(i.splice(l,2),s--));return r=i.join("/"),r===""&&(r=o?"/":"."),n?(n.path=r,Ve(n)):r});X.normalize=Rr;function ia(e,t){e===""&&(e="."),t===""&&(t=".");var r=dt(t),n=dt(e);if(n&&(e=n.path||"/"),r&&!r.scheme)return n&&(r.scheme=n.scheme),Ve(r);if(r||t.match(oc))return t;if(n&&!n.host&&!n.path)return n.host=t,Ve(n);var o=t.charAt(0)==="/"?t:Rr(e.replace(/\/+$/,"")+"/"+t);return n?(n.path=o,Ve(n)):o}X.join=ia;X.isAbsolute=function(e){return e.charAt(0)==="/"||oa.test(e)};function sc(e,t){e===""&&(e="."),e=e.replace(/\/$/,"");for(var r=0;t.indexOf(e+"/")!==0;){var n=e.lastIndexOf("/");if(n<0||(e=e.slice(0,n),e.match(/^([^\/]+:\/)?\/*$/)))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)}X.relative=sc;var aa=function(){var e=Object.create(null);return!("__proto__"in e)}();function sa(e){return e}function lc(e){return la(e)?"$"+e:e}X.toSetString=aa?sa:lc;function cc(e){return la(e)?e.slice(1):e}X.fromSetString=aa?sa:cc;function la(e){if(!e)return!1;var t=e.length;if(t<9||e.charCodeAt(t-1)!==95||e.charCodeAt(t-2)!==95||e.charCodeAt(t-3)!==111||e.charCodeAt(t-4)!==116||e.charCodeAt(t-5)!==111||e.charCodeAt(t-6)!==114||e.charCodeAt(t-7)!==112||e.charCodeAt(t-8)!==95||e.charCodeAt(t-9)!==95)return!1;for(var r=t-10;r>=0;r--)if(e.charCodeAt(r)!==36)return!1;return!0}function uc(e,t,r){var n=we(e.source,t.source);return n!==0||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:we(e.name,t.name)}X.compareByOriginalPositions=uc;function pc(e,t,r){var n;return n=e.originalLine-t.originalLine,n!==0||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:we(e.name,t.name)}X.compareByOriginalPositionsNoSource=pc;function hc(e,t,r){var n=e.generatedLine-t.generatedLine;return n!==0||(n=e.generatedColumn-t.generatedColumn,n!==0||r)||(n=we(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:we(e.name,t.name)}X.compareByGeneratedPositionsDeflated=hc;function fc(e,t,r){var n=e.generatedColumn-t.generatedColumn;return n!==0||r||(n=we(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:we(e.name,t.name)}X.compareByGeneratedPositionsDeflatedNoLine=fc;function we(e,t){return e===t?0:e===null?1:t===null?-1:e>t?1:-1}function mc(e,t){var r=e.generatedLine-t.generatedLine;return r!==0||(r=e.generatedColumn-t.generatedColumn,r!==0)||(r=we(e.source,t.source),r!==0)||(r=e.originalLine-t.originalLine,r!==0)||(r=e.originalColumn-t.originalColumn,r!==0)?r:we(e.name,t.name)}X.compareByGeneratedPositionsInflated=mc;function dc(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}X.parseSourceMapInput=dc;function gc(e,t,r){if(t=t||"",e&&(e[e.length-1]!=="/"&&t[0]!=="/"&&(e+="/"),t=e+t),r){var n=dt(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var o=n.path.lastIndexOf("/");o>=0&&(n.path=n.path.substring(0,o+1))}t=ia(Ve(n),t)}return Rr(t)}X.computeSourceURL=gc});var ua=Ue(ca=>{var zr=Gt(),Fr=Object.prototype.hasOwnProperty,ze=typeof Map<"u";function ve(){this._array=[],this._set=ze?new Map:Object.create(null)}ve.fromArray=function(t,r){for(var n=new ve,o=0,i=t.length;o<i;o++)n.add(t[o],r);return n};ve.prototype.size=function(){return ze?this._set.size:Object.getOwnPropertyNames(this._set).length};ve.prototype.add=function(t,r){var n=ze?t:zr.toSetString(t),o=ze?this.has(t):Fr.call(this._set,n),i=this._array.length;(!o||r)&&this._array.push(t),o||(ze?this._set.set(t,i):this._set[n]=i)};ve.prototype.has=function(t){if(ze)return this._set.has(t);var r=zr.toSetString(t);return Fr.call(this._set,r)};ve.prototype.indexOf=function(t){if(ze){var r=this._set.get(t);if(r>=0)return r}else{var n=zr.toSetString(t);if(Fr.call(this._set,n))return this._set[n]}throw new Error('"'+t+'" is not in the set.')};ve.prototype.at=function(t){if(t>=0&&t<this._array.length)return this._array[t];throw new Error("No element indexed by "+t)};ve.prototype.toArray=function(){return this._array.slice()};ca.ArraySet=ve});var fa=Ue(ha=>{var pa=Gt();function bc(e,t){var r=e.generatedLine,n=t.generatedLine,o=e.generatedColumn,i=t.generatedColumn;return n>r||n==r&&i>=o||pa.compareByGeneratedPositionsInflated(e,t)<=0}function Kt(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Kt.prototype.unsortedForEach=function(t,r){this._array.forEach(t,r)};Kt.prototype.add=function(t){bc(this._last,t)?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))};Kt.prototype.toArray=function(){return this._sorted||(this._array.sort(pa.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};ha.MappingList=Kt});var da=Ue(ma=>{var gt=na(),Y=Gt(),Qt=ua().ArraySet,yc=fa().MappingList;function se(e){e||(e={}),this._file=Y.getArg(e,"file",null),this._sourceRoot=Y.getArg(e,"sourceRoot",null),this._skipValidation=Y.getArg(e,"skipValidation",!1),this._sources=new Qt,this._names=new Qt,this._mappings=new yc,this._sourcesContents=null}se.prototype._version=3;se.fromSourceMap=function(t){var r=t.sourceRoot,n=new se({file:t.file,sourceRoot:r});return t.eachMapping(function(o){var i={generated:{line:o.generatedLine,column:o.generatedColumn}};o.source!=null&&(i.source=o.source,r!=null&&(i.source=Y.relative(r,i.source)),i.original={line:o.originalLine,column:o.originalColumn},o.name!=null&&(i.name=o.name)),n.addMapping(i)}),t.sources.forEach(function(o){var i=o;r!==null&&(i=Y.relative(r,o)),n._sources.has(i)||n._sources.add(i);var a=t.sourceContentFor(o);a!=null&&n.setSourceContent(o,a)}),n};se.prototype.addMapping=function(t){var r=Y.getArg(t,"generated"),n=Y.getArg(t,"original",null),o=Y.getArg(t,"source",null),i=Y.getArg(t,"name",null);this._skipValidation||this._validateMapping(r,n,o,i),o!=null&&(o=String(o),this._sources.has(o)||this._sources.add(o)),i!=null&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:o,name:i})};se.prototype.setSourceContent=function(t,r){var n=t;this._sourceRoot!=null&&(n=Y.relative(this._sourceRoot,n)),r!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[Y.toSetString(n)]=r):this._sourcesContents&&(delete this._sourcesContents[Y.toSetString(n)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};se.prototype.applySourceMap=function(t,r,n){var o=r;if(r==null){if(t.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);o=t.file}var i=this._sourceRoot;i!=null&&(o=Y.relative(i,o));var a=new Qt,l=new Qt;this._mappings.unsortedForEach(function(c){if(c.source===o&&c.originalLine!=null){var s=t.originalPositionFor({line:c.originalLine,column:c.originalColumn});s.source!=null&&(c.source=s.source,n!=null&&(c.source=Y.join(n,c.source)),i!=null&&(c.source=Y.relative(i,c.source)),c.originalLine=s.line,c.originalColumn=s.column,s.name!=null&&(c.name=s.name))}var u=c.source;u!=null&&!a.has(u)&&a.add(u);var p=c.name;p!=null&&!l.has(p)&&l.add(p)},this),this._sources=a,this._names=l,t.sources.forEach(function(c){var s=t.sourceContentFor(c);s!=null&&(n!=null&&(c=Y.join(n,c)),i!=null&&(c=Y.relative(i,c)),this.setSourceContent(c,s))},this)};se.prototype._validateMapping=function(t,r,n,o){if(r&&typeof r.line!="number"&&typeof r.column!="number")throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if(!(t&&"line"in t&&"column"in t&&t.line>0&&t.column>=0&&!r&&!n&&!o)){if(t&&"line"in t&&"column"in t&&r&&"line"in r&&"column"in r&&t.line>0&&t.column>=0&&r.line>0&&r.column>=0&&n)return;throw new Error("Invalid mapping: "+JSON.stringify({generated:t,source:n,original:r,name:o}))}};se.prototype._serializeMappings=function(){for(var t=0,r=1,n=0,o=0,i=0,a=0,l="",c,s,u,p,h=this._mappings.toArray(),m=0,b=h.length;m<b;m++){if(s=h[m],c="",s.generatedLine!==r)for(t=0;s.generatedLine!==r;)c+=";",r++;else if(m>0){if(!Y.compareByGeneratedPositionsInflated(s,h[m-1]))continue;c+=","}c+=gt.encode(s.generatedColumn-t),t=s.generatedColumn,s.source!=null&&(p=this._sources.indexOf(s.source),c+=gt.encode(p-a),a=p,c+=gt.encode(s.originalLine-1-o),o=s.originalLine-1,c+=gt.encode(s.originalColumn-n),n=s.originalColumn,s.name!=null&&(u=this._names.indexOf(s.name),c+=gt.encode(u-i),i=u)),l+=c}return l};se.prototype._generateSourcesContent=function(t,r){return t.map(function(n){if(!this._sourcesContents)return null;r!=null&&(n=Y.relative(r,n));var o=Y.toSetString(n);return Object.prototype.hasOwnProperty.call(this._sourcesContents,o)?this._sourcesContents[o]:null},this)};se.prototype.toJSON=function(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(t.file=this._file),this._sourceRoot!=null&&(t.sourceRoot=this._sourceRoot),this._sourcesContents&&(t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot)),t};se.prototype.toString=function(){return JSON.stringify(this.toJSON())};ma.SourceMapGenerator=se});var Hl="5.0.4";var Fi={};y(Fi,{compress:()=>zi,find:()=>ld,findAll:()=>ud,findLast:()=>cd,fromPlainObject:()=>pd,generate:()=>ad,lexer:()=>nd,parse:()=>id,specificity:()=>kr,toPlainObject:()=>hd,tokenize:()=>od,walk:()=>sd});var Ee={};y(Ee,{AtKeyword:()=>M,BadString:()=>Ne,BadUrl:()=>K,CDC:()=>W,CDO:()=>pe,Colon:()=>R,Comma:()=>Q,Comment:()=>I,Delim:()=>g,Dimension:()=>k,EOF:()=>st,Function:()=>x,Hash:()=>A,Ident:()=>f,LeftCurlyBracket:()=>_,LeftParenthesis:()=>P,LeftSquareBracket:()=>H,Number:()=>d,Percentage:()=>L,RightCurlyBracket:()=>G,RightParenthesis:()=>S,RightSquareBracket:()=>$,Semicolon:()=>q,String:()=>V,Url:()=>U,WhiteSpace:()=>v});var st=0,f=1,x=2,M=3,A=4,V=5,Ne=6,U=7,K=8,g=9,d=10,L=11,k=12,v=13,pe=14,W=15,R=16,q=17,Q=18,H=19,$=20,P=21,S=22,_=23,G=24,I=25;function j(e){return e>=48&&e<=57}function oe(e){return j(e)||e>=65&&e<=70||e>=97&&e<=102}function _t(e){return e>=65&&e<=90}function Wl(e){return e>=97&&e<=122}function Yl(e){return _t(e)||Wl(e)}function Vl(e){return e>=128}function Bt(e){return Yl(e)||Vl(e)||e===95}function lt(e){return Bt(e)||j(e)||e===45}function Gl(e){return e>=0&&e<=8||e===11||e>=14&&e<=31||e===127}function ct(e){return e===10||e===13||e===12}function he(e){return ct(e)||e===32||e===9}function re(e,t){return!(e!==92||ct(t)||t===0)}function je(e,t,r){return e===45?Bt(t)||t===45||re(t,r):Bt(e)?!0:e===92?re(e,t):!1}function Ut(e,t,r){return e===43||e===45?j(t)?2:t===46&&j(r)?3:0:e===46?j(t)?2:0:j(e)?1:0}function jt(e){return e===65279||e===65534?1:0}var Cr=new Array(128),Kl=128,ut=130,Ar=131,qt=132,Er=133;for(let e=0;e<Cr.length;e++)Cr[e]=he(e)&&ut||j(e)&&Ar||Bt(e)&&qt||Gl(e)&&Er||e||Kl;function Ht(e){return e<128?Cr[e]:qt}function qe(e,t){return t<e.length?e.charCodeAt(t):0}function Wt(e,t,r){return r===13&&qe(e,t+1)===10?2:1}function xe(e,t,r){let n=e.charCodeAt(t);return _t(n)&&(n=n|32),n===r}function ke(e,t,r,n){if(r-t!==n.length||t<0||r>e.length)return!1;for(let o=t;o<r;o++){let i=n.charCodeAt(o-t),a=e.charCodeAt(o);if(_t(a)&&(a=a|32),a!==i)return!1}return!0}function _i(e,t){for(;t>=0&&he(e.charCodeAt(t));t--);return t+1}function pt(e,t){for(;t<e.length&&he(e.charCodeAt(t));t++);return t}function Tr(e,t){for(;t<e.length&&j(e.charCodeAt(t));t++);return t}function fe(e,t){if(t+=2,oe(qe(e,t-1))){for(let n=Math.min(e.length,t+5);t<n&&oe(qe(e,t));t++);let r=qe(e,t);he(r)&&(t+=Wt(e,t,r))}return t}function ht(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(!lt(r)){if(re(r,qe(e,t+1))){t=fe(e,t)-1;continue}break}}return t}function Me(e,t){let r=e.charCodeAt(t);if((r===43||r===45)&&(r=e.charCodeAt(t+=1)),j(r)&&(t=Tr(e,t+1),r=e.charCodeAt(t)),r===46&&j(e.charCodeAt(t+1))&&(t+=2,t=Tr(e,t)),xe(e,t,101)){let n=0;r=e.charCodeAt(t+1),(r===45||r===43)&&(n=1,r=e.charCodeAt(t+2)),j(r)&&(t=Tr(e,t+1+n+1))}return t}function Yt(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(r===41){t++;break}re(r,qe(e,t+1))&&(t=fe(e,t))}return t}function ft(e){if(e.length===1&&!oe(e.charCodeAt(0)))return e[0];let t=parseInt(e,16);return(t===0||t>=55296&&t<=57343||t>1114111)&&(t=65533),String.fromCodePoint(t)}var He=["EOF-token","ident-token","function-token","at-keyword-token","hash-token","string-token","bad-string-token","url-token","bad-url-token","delim-token","number-token","percentage-token","dimension-token","whitespace-token","CDO-token","CDC-token","colon-token","semicolon-token","comma-token","[-token","]-token","(-token",")-token","{-token","}-token"];function We(e=null,t){return e===null||e.length<t?new Uint32Array(Math.max(t+1024,16384)):e}var Ui=10,Ql=12,ji=13;function qi(e){let t=e.source,r=t.length,n=t.length>0?jt(t.charCodeAt(0)):0,o=We(e.lines,r),i=We(e.columns,r),a=e.startLine,l=e.startColumn;for(let c=n;c<r;c++){let s=t.charCodeAt(c);o[c]=a,i[c]=l++,(s===Ui||s===ji||s===Ql)&&(s===ji&&c+1<r&&t.charCodeAt(c+1)===Ui&&(c++,o[c]=a,i[c]=l),a++,l=1)}o[r]=a,i[r]=l,e.lines=o,e.columns=i,e.computed=!0}var Vt=class{constructor(){this.lines=null,this.columns=null,this.computed=!1}setSource(t,r=0,n=1,o=1){this.source=t,this.startOffset=r,this.startLine=n,this.startColumn=o,this.computed=!1}getLocation(t,r){return this.computed||qi(this),{source:r,offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]}}getLocationRange(t,r,n){return this.computed||qi(this),{source:n,start:{offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]},end:{offset:this.startOffset+r,line:this.lines[r],column:this.columns[r]}}}};var ae=16777215,Te=24,$l=new Map([[2,22],[21,22],[19,20],[23,24]]),mt=class{constructor(t,r){this.setSource(t,r)}reset(){this.eof=!1,this.tokenIndex=-1,this.tokenType=0,this.tokenStart=this.firstCharOffset,this.tokenEnd=this.firstCharOffset}setSource(t="",r=()=>{}){t=String(t||"");let n=t.length,o=We(this.offsetAndType,t.length+1),i=We(this.balance,t.length+1),a=0,l=0,c=0,s=-1;for(this.offsetAndType=null,this.balance=null,r(t,(u,p,h)=>{switch(u){default:i[a]=n;break;case l:{let m=c&ae;for(c=i[m],l=c>>Te,i[a]=m,i[m++]=a;m<a;m++)i[m]===n&&(i[m]=a);break}case 21:case 2:case 19:case 23:i[a]=c,l=$l.get(u),c=l<<Te|a;break}o[a++]=u<<Te|h,s===-1&&(s=p)}),o[a]=0<<Te|n,i[a]=n,i[n]=n;c!==0;){let u=c&ae;c=i[u],i[u]=n}this.source=t,this.firstCharOffset=s===-1?0:s,this.tokenCount=a,this.offsetAndType=o,this.balance=i,this.reset(),this.next()}lookupType(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t]>>Te:0}lookupOffset(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t-1]&ae:this.source.length}lookupValue(t,r){return t+=this.tokenIndex,t<this.tokenCount?ke(this.source,this.offsetAndType[t-1]&ae,this.offsetAndType[t]&ae,r):!1}getTokenStart(t){return t===this.tokenIndex?this.tokenStart:t>0?t<this.tokenCount?this.offsetAndType[t-1]&ae:this.offsetAndType[this.tokenCount]&ae:this.firstCharOffset}substrToCursor(t){return this.source.substring(t,this.tokenStart)}isBalanceEdge(t){return this.balance[this.tokenIndex]<t}isDelim(t,r){return r?this.lookupType(r)===9&&this.source.charCodeAt(this.lookupOffset(r))===t:this.tokenType===9&&this.source.charCodeAt(this.tokenStart)===t}skip(t){let r=this.tokenIndex+t;r<this.tokenCount?(this.tokenIndex=r,this.tokenStart=this.offsetAndType[r-1]&ae,r=this.offsetAndType[r],this.tokenType=r>>Te,this.tokenEnd=r&ae):(this.tokenIndex=this.tokenCount,this.next())}next(){let t=this.tokenIndex+1;t<this.tokenCount?(this.tokenIndex=t,this.tokenStart=this.tokenEnd,t=this.offsetAndType[t],this.tokenType=t>>Te,this.tokenEnd=t&ae):(this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=0,this.tokenStart=this.tokenEnd=this.source.length)}skipSC(){for(;this.tokenType===13||this.tokenType===25;)this.next()}skipUntilBalanced(t,r){let n=t,o,i;e:for(;n<this.tokenCount;n++){if(o=this.balance[n],o<t)break e;switch(i=n>0?this.offsetAndType[n-1]&ae:this.firstCharOffset,r(this.source.charCodeAt(i))){case 1:break e;case 2:n++;break e;default:this.balance[o]===n&&(n=o)}}this.skip(n-this.tokenIndex)}forEachToken(t){for(let r=0,n=this.firstCharOffset;r<this.tokenCount;r++){let o=n,i=this.offsetAndType[r],a=i&ae,l=i>>Te;n=a,t(l,o,a,r)}}dump(){let t=new Array(this.tokenCount);return this.forEachToken((r,n,o,i)=>{t[i]={idx:i,type:He[r],chunk:this.source.substring(n,o),balance:this.balance[i]}}),t}};function Le(e,t){function r(p){return p<l?e.charCodeAt(p):0}function n(){if(s=Me(e,s),je(r(s),r(s+1),r(s+2))){u=12,s=ht(e,s);return}if(r(s)===37){u=11,s++;return}u=10}function o(){let p=s;if(s=ht(e,s),ke(e,p,s,"url")&&r(s)===40){if(s=pt(e,s+1),r(s)===34||r(s)===39){u=2,s=p+4;return}a();return}if(r(s)===40){u=2,s++;return}u=1}function i(p){for(p||(p=r(s++)),u=5;s<e.length;s++){let h=e.charCodeAt(s);switch(Ht(h)){case p:s++;return;case ut:if(ct(h)){s+=Wt(e,s,h),u=6;return}break;case 92:if(s===e.length-1)break;let m=r(s+1);ct(m)?s+=Wt(e,s+1,m):re(h,m)&&(s=fe(e,s)-1);break}}}function a(){for(u=7,s=pt(e,s);s<e.length;s++){let p=e.charCodeAt(s);switch(Ht(p)){case 41:s++;return;case ut:if(s=pt(e,s),r(s)===41||s>=e.length){s<e.length&&s++;return}s=Yt(e,s),u=8;return;case 34:case 39:case 40:case Er:s=Yt(e,s),u=8;return;case 92:if(re(p,r(s+1))){s=fe(e,s)-1;break}s=Yt(e,s),u=8;return}}}e=String(e||"");let l=e.length,c=jt(r(0)),s=c,u;for(;s<l;){let p=e.charCodeAt(s);switch(Ht(p)){case ut:u=13,s=pt(e,s+1);break;case 34:i();break;case 35:lt(r(s+1))||re(r(s+1),r(s+2))?(u=4,s=ht(e,s+1)):(u=9,s++);break;case 39:i();break;case 40:u=21,s++;break;case 41:u=22,s++;break;case 43:Ut(p,r(s+1),r(s+2))?n():(u=9,s++);break;case 44:u=18,s++;break;case 45:Ut(p,r(s+1),r(s+2))?n():r(s+1)===45&&r(s+2)===62?(u=15,s=s+3):je(p,r(s+1),r(s+2))?o():(u=9,s++);break;case 46:Ut(p,r(s+1),r(s+2))?n():(u=9,s++);break;case 47:r(s+1)===42?(u=25,s=e.indexOf("*/",s+2),s=s===-1?e.length:s+2):(u=9,s++);break;case 58:u=16,s++;break;case 59:u=17,s++;break;case 60:r(s+1)===33&&r(s+2)===45&&r(s+3)===45?(u=14,s=s+4):(u=9,s++);break;case 64:je(r(s+1),r(s+2),r(s+3))?(u=3,s=ht(e,s+1)):(u=9,s++);break;case 91:u=19,s++;break;case 92:re(p,r(s+1))?o():(u=9,s++);break;case 93:u=20,s++;break;case 123:u=23,s++;break;case 125:u=24,s++;break;case Ar:n();break;case qt:o();break;default:u=9,s++}t(u,c,c=s)}}var Ye=null,w=class{static createItem(t){return{prev:null,next:null,data:t}}constructor(){this.head=null,this.tail=null,this.cursor=null}createItem(t){return w.createItem(t)}allocateCursor(t,r){let n;return Ye!==null?(n=Ye,Ye=Ye.cursor,n.prev=t,n.next=r,n.cursor=this.cursor):n={prev:t,next:r,cursor:this.cursor},this.cursor=n,n}releaseCursor(){let{cursor:t}=this;this.cursor=t.cursor,t.prev=null,t.next=null,t.cursor=Ye,Ye=t}updateCursors(t,r,n,o){let{cursor:i}=this;for(;i!==null;)i.prev===t&&(i.prev=r),i.next===n&&(i.next=o),i=i.cursor}*[Symbol.iterator](){for(let t=this.head;t!==null;t=t.next)yield t.data}get size(){let t=0;for(let r=this.head;r!==null;r=r.next)t++;return t}get isEmpty(){return this.head===null}get first(){return this.head&&this.head.data}get last(){return this.tail&&this.tail.data}fromArray(t){let r=null;this.head=null;for(let n of t){let o=w.createItem(n);r!==null?r.next=o:this.head=o,o.prev=r,r=o}return this.tail=r,this}toArray(){return[...this]}toJSON(){return[...this]}forEach(t,r=this){let n=this.allocateCursor(null,this.head);for(;n.next!==null;){let o=n.next;n.next=o.next,t.call(r,o.data,o,this)}this.releaseCursor()}forEachRight(t,r=this){let n=this.allocateCursor(this.tail,null);for(;n.prev!==null;){let o=n.prev;n.prev=o.prev,t.call(r,o.data,o,this)}this.releaseCursor()}reduce(t,r,n=this){let o=this.allocateCursor(null,this.head),i=r,a;for(;o.next!==null;)a=o.next,o.next=a.next,i=t.call(n,i,a.data,a,this);return this.releaseCursor(),i}reduceRight(t,r,n=this){let o=this.allocateCursor(this.tail,null),i=r,a;for(;o.prev!==null;)a=o.prev,o.prev=a.prev,i=t.call(n,i,a.data,a,this);return this.releaseCursor(),i}some(t,r=this){for(let n=this.head;n!==null;n=n.next)if(t.call(r,n.data,n,this))return!0;return!1}map(t,r=this){let n=new w;for(let o=this.head;o!==null;o=o.next)n.appendData(t.call(r,o.data,o,this));return n}filter(t,r=this){let n=new w;for(let o=this.head;o!==null;o=o.next)t.call(r,o.data,o,this)&&n.appendData(o.data);return n}nextUntil(t,r,n=this){if(t===null)return;let o=this.allocateCursor(null,t);for(;o.next!==null;){let i=o.next;if(o.next=i.next,r.call(n,i.data,i,this))break}this.releaseCursor()}prevUntil(t,r,n=this){if(t===null)return;let o=this.allocateCursor(t,null);for(;o.prev!==null;){let i=o.prev;if(o.prev=i.prev,r.call(n,i.data,i,this))break}this.releaseCursor()}clear(){this.head=null,this.tail=null}copy(){let t=new w;for(let r of this)t.appendData(r);return t}prepend(t){return this.updateCursors(null,t,this.head,t),this.head!==null?(this.head.prev=t,t.next=this.head):this.tail=t,this.head=t,this}prependData(t){return this.prepend(w.createItem(t))}append(t){return this.insert(t)}appendData(t){return this.insert(w.createItem(t))}insert(t,r=null){if(r!==null)if(this.updateCursors(r.prev,t,r,t),r.prev===null){if(this.head!==r)throw new Error("before doesn't belong to list");this.head=t,r.prev=t,t.next=r,this.updateCursors(null,t)}else r.prev.next=t,t.prev=r.prev,r.prev=t,t.next=r;else this.updateCursors(this.tail,t,null,t),this.tail!==null?(this.tail.next=t,t.prev=this.tail):this.head=t,this.tail=t;return this}insertData(t,r){return this.insert(w.createItem(t),r)}remove(t){if(this.updateCursors(t,t.prev,t,t.next),t.prev!==null)t.prev.next=t.next;else{if(this.head!==t)throw new Error("item doesn't belong to list");this.head=t.next}if(t.next!==null)t.next.prev=t.prev;else{if(this.tail!==t)throw new Error("item doesn't belong to list");this.tail=t.prev}return t.prev=null,t.next=null,t}push(t){this.insert(w.createItem(t))}pop(){return this.tail!==null?this.remove(this.tail):null}unshift(t){this.prepend(w.createItem(t))}shift(){return this.head!==null?this.remove(this.head):null}prependList(t){return this.insertList(t,this.head)}appendList(t){return this.insertList(t)}insertList(t,r){return t.head===null?this:(r!=null?(this.updateCursors(r.prev,t.tail,r,t.head),r.prev!==null?(r.prev.next=t.head,t.head.prev=r.prev):this.head=t.head,r.prev=t.tail,t.tail.next=r):(this.updateCursors(this.tail,t.tail,null,t.head),this.tail!==null?(this.tail.next=t.head,t.head.prev=this.tail):this.head=t.head,this.tail=t.tail),t.head=null,t.tail=null,this)}replace(t,r){"head"in r?this.insertList(r,t):this.insert(r,t),this.remove(t)}};function Re(e,t){let r=Object.create(SyntaxError.prototype),n=new Error;return Object.assign(r,{name:e,message:t,get stack(){return(n.stack||"").replace(/^(.+\n){1,3}/,`${e}: ${t} -`)}})}var Lr=100,Hi=60,Wi=" ";function Yi({source:e,line:t,column:r},n){function o(u,p){return i.slice(u,p).map((h,m)=>String(u+m+1).padStart(c)+" |"+h).join(` -`)}let i=e.split(/\r\n?|\n|\f/),a=Math.max(1,t-n)-1,l=Math.min(t+n,i.length+1),c=Math.max(4,String(l).length)+1,s=0;r+=(Wi.length-1)*(i[t-1].substr(0,r-1).match(/\t/g)||[]).length,r>Lr&&(s=r-Hi+3,r=Hi-2);for(let u=a;u<=l;u++)u>=0&&u<i.length&&(i[u]=i[u].replace(/\t/g,Wi),i[u]=(s>0&&i[u].length>s?"\u2026":"")+i[u].substr(s,Lr-2)+(i[u].length>s+Lr-1?"\u2026":""));return[o(a,t),new Array(r+c+2).join("-")+"^",o(t,l)].filter(Boolean).join(` -`)}function Pr(e,t,r,n,o){return Object.assign(Re("SyntaxError",e),{source:t,offset:r,line:n,column:o,sourceFragment(a){return Yi({source:t,line:n,column:o},isNaN(a)?0:a)},get formattedMessage(){return`Parse error: ${e} -`+Yi({source:t,line:n,column:o},2)}})}function Vi(e){let t=this.createList(),r=!1,n={recognizer:e};for(;!this.eof;){switch(this.tokenType){case 25:this.next();continue;case 13:r=!0,this.next();continue}let o=e.getNode.call(this,n);if(o===void 0)break;r&&(e.onWhiteSpace&&e.onWhiteSpace.call(this,o,t,n),r=!1),t.push(o)}return r&&e.onWhiteSpace&&e.onWhiteSpace.call(this,null,t,n),t}var Gi=()=>{},Xl=33,Zl=35,Ir=59,Ki=123,Qi=0;function Jl(e){return function(){return this[e]()}}function Or(e){let t=Object.create(null);for(let r in e){let n=e[r],o=n.parse||n;o&&(t[r]=o)}return t}function ec(e){let t={context:Object.create(null),scope:Object.assign(Object.create(null),e.scope),atrule:Or(e.atrule),pseudo:Or(e.pseudo),node:Or(e.node)};for(let r in e.parseContext)switch(typeof e.parseContext[r]){case"function":t.context[r]=e.parseContext[r];break;case"string":t.context[r]=Jl(e.parseContext[r]);break}return{config:t,...t,...t.node}}function $i(e){let t="",r="<unknown>",n=!1,o=Gi,i=!1,a=new Vt,l=Object.assign(new mt,ec(e||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:Vi,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket(s){return s===Ki?1:0},consumeUntilLeftCurlyBracketOrSemicolon(s){return s===Ki||s===Ir?1:0},consumeUntilExclamationMarkOrSemicolon(s){return s===Xl||s===Ir?1:0},consumeUntilSemicolonIncluded(s){return s===Ir?2:0},createList(){return new w},createSingleNodeList(s){return new w().appendData(s)},getFirstListNode(s){return s&&s.first},getLastListNode(s){return s&&s.last},parseWithFallback(s,u){let p=this.tokenIndex;try{return s.call(this)}catch(h){if(i)throw h;let m=u.call(this,p);return i=!0,o(h,m),i=!1,m}},lookupNonWSType(s){let u;do if(u=this.lookupType(s++),u!==13)return u;while(u!==Qi);return Qi},charCodeAt(s){return s>=0&&s<t.length?t.charCodeAt(s):0},substring(s,u){return t.substring(s,u)},substrToCursor(s){return this.source.substring(s,this.tokenStart)},cmpChar(s,u){return xe(t,s,u)},cmpStr(s,u,p){return ke(t,s,u,p)},consume(s){let u=this.tokenStart;return this.eat(s),this.substrToCursor(u)},consumeFunctionName(){let s=t.substring(this.tokenStart,this.tokenEnd-1);return this.eat(2),s},consumeNumber(s){let u=t.substring(this.tokenStart,Me(t,this.tokenStart));return this.eat(s),u},eat(s){if(this.tokenType!==s){let u=He[s].slice(0,-6).replace(/-/g," ").replace(/^./,m=>m.toUpperCase()),p=`${/[[\](){}]/.test(u)?`"${u}"`:u} is expected`,h=this.tokenStart;switch(s){case 1:this.tokenType===2||this.tokenType===7?(h=this.tokenEnd-1,p="Identifier is expected but function found"):p="Identifier is expected";break;case 4:this.isDelim(Zl)&&(this.next(),h++,p="Name is expected");break;case 11:this.tokenType===10&&(h=this.tokenEnd,p="Percent sign is expected");break}this.error(p,h)}this.next()},eatIdent(s){(this.tokenType!==1||this.lookupValue(0,s)===!1)&&this.error(`Identifier "${s}" is expected`),this.next()},eatDelim(s){this.isDelim(s)||this.error(`Delim "${String.fromCharCode(s)}" is expected`),this.next()},getLocation(s,u){return n?a.getLocationRange(s,u,r):null},getLocationFromList(s){if(n){let u=this.getFirstListNode(s),p=this.getLastListNode(s);return a.getLocationRange(u!==null?u.loc.start.offset-a.startOffset:this.tokenStart,p!==null?p.loc.end.offset-a.startOffset:this.tokenStart,r)}return null},error(s,u){let p=typeof u<"u"&&u<t.length?a.getLocation(u):this.eof?a.getLocation(_i(t,t.length-1)):a.getLocation(this.tokenStart);throw new Pr(s||"Unexpected input",t,p.offset,p.line,p.column)}});return Object.assign(function(s,u){t=s,u=u||{},l.setSource(t,Le),a.setSource(t,u.offset,u.line,u.column),r=u.filename||"<unknown>",n=Boolean(u.positions),o=typeof u.onParseError=="function"?u.onParseError:Gi,i=!1,l.parseAtrulePrelude="parseAtrulePrelude"in u?Boolean(u.parseAtrulePrelude):!0,l.parseRulePrelude="parseRulePrelude"in u?Boolean(u.parseRulePrelude):!0,l.parseValue="parseValue"in u?Boolean(u.parseValue):!0,l.parseCustomProperty="parseCustomProperty"in u?Boolean(u.parseCustomProperty):!1;let{context:p="default",onComment:h}=u;if(!(p in l.context))throw new Error("Unknown context `"+p+"`");typeof h=="function"&&l.forEachToken((b,T,N)=>{if(b===25){let C=l.getLocation(T,N),D=ke(t,N-2,N,"*/")?t.slice(T+2,N-2):t.slice(T+2,N);h(D,C)}});let m=l.context[p].call(l,u);return l.eof||l.error(),m},{SyntaxError:Pr,config:l.config})}var ba=ql(da(),1),ga=new Set(["Atrule","Selector","Declaration"]);function ya(e){let t=new ba.SourceMapGenerator,r={line:1,column:0},n={line:0,column:0},o={line:1,column:0},i={generated:o},a=1,l=0,c=!1,s=e.node;e.node=function(h){if(h.loc&&h.loc.start&&ga.has(h.type)){let m=h.loc.start.line,b=h.loc.start.column-1;(n.line!==m||n.column!==b)&&(n.line=m,n.column=b,r.line=a,r.column=l,c&&(c=!1,(r.line!==o.line||r.column!==o.column)&&t.addMapping(i)),c=!0,t.addMapping({source:h.loc.source,original:n,generated:r}))}s.call(this,h),c&&ga.has(h.type)&&(o.line=a,o.column=l)};let u=e.emit;e.emit=function(h,m,b){for(let T=0;T<h.length;T++)h.charCodeAt(T)===10?(a++,l=0):l++;u(h,m,b)};let p=e.result;return e.result=function(){return c&&t.addMapping(i),{css:p(),map:t}},e}var $t={};y($t,{safe:()=>_r,spec:()=>vc});var xc=43,kc=45,Br=(e,t)=>{if(e===9&&(e=t),typeof e=="string"){let r=e.charCodeAt(0);return r>127?32768:r<<8}return e},xa=[[1,1],[1,2],[1,7],[1,8],[1,"-"],[1,10],[1,11],[1,12],[1,15],[1,21],[3,1],[3,2],[3,7],[3,8],[3,"-"],[3,10],[3,11],[3,12],[3,15],[4,1],[4,2],[4,7],[4,8],[4,"-"],[4,10],[4,11],[4,12],[4,15],[12,1],[12,2],[12,7],[12,8],[12,"-"],[12,10],[12,11],[12,12],[12,15],["#",1],["#",2],["#",7],["#",8],["#","-"],["#",10],["#",11],["#",12],["#",15],["-",1],["-",2],["-",7],["-",8],["-","-"],["-",10],["-",11],["-",12],["-",15],[10,1],[10,2],[10,7],[10,8],[10,10],[10,11],[10,12],[10,"%"],[10,15],["@",1],["@",2],["@",7],["@",8],["@","-"],["@",15],[".",10],[".",11],[".",12],["+",10],["+",11],["+",12],["/","*"]],wc=xa.concat([[1,4],[12,4],[4,4],[3,21],[3,5],[3,16],[11,11],[11,12],[11,2],[11,"-"],[22,1],[22,2],[22,11],[22,12],[22,4],[22,"-"]]);function ka(e){let t=new Set(e.map(([r,n])=>Br(r)<<16|Br(n)));return function(r,n,o){let i=Br(n,o),a=o.charCodeAt(0);return(a===kc&&n!==1&&n!==2&&n!==15||a===xc?t.has(r<<16|a<<8):t.has(r<<16|i))&&this.emit(" ",13,!0),i}}var vc=ka(xa),_r=ka(wc);var Sc=92;function Cc(e,t){if(typeof t=="function"){let r=null;e.children.forEach(n=>{r!==null&&t.call(this,r),this.node(n),r=n});return}e.children.forEach(this.node,this)}function Ac(e){Le(e,(t,r,n)=>{this.token(t,e.slice(r,n))})}function wa(e){let t=new Map;for(let r in e.node){let n=e.node[r];typeof(n.generate||n)=="function"&&t.set(r,n.generate||n)}return function(r,n){let o="",i=0,a={node(c){if(t.has(c.type))t.get(c.type).call(l,c);else throw new Error("Unknown node type: "+c.type)},tokenBefore:_r,token(c,s){i=this.tokenBefore(i,c,s),this.emit(s,c,!1),c===9&&s.charCodeAt(0)===Sc&&this.emit(` -`,13,!0)},emit(c){o+=c},result(){return o}};n&&(typeof n.decorator=="function"&&(a=n.decorator(a)),n.sourceMap&&(a=ya(a)),n.mode in $t&&(a.tokenBefore=$t[n.mode]));let l={node:c=>a.node(c),children:Cc,token:(c,s)=>a.token(c,s),tokenize:Ac};return a.node(r),a.result()}}function va(e){return{fromPlainObject(t){return e(t,{enter(r){r.children&&!(r.children instanceof w)&&(r.children=new w().fromArray(r.children))}}),t},toPlainObject(t){return e(t,{leave(r){r.children&&r.children instanceof w&&(r.children=r.children.toArray())}}),t}}}var{hasOwnProperty:Ur}=Object.prototype,bt=function(){};function Sa(e){return typeof e=="function"?e:bt}function Ca(e,t){return function(r,n,o){r.type===t&&e.call(this,r,n,o)}}function Ec(e,t){let r=t.structure,n=[];for(let o in r){if(Ur.call(r,o)===!1)continue;let i=r[o],a={name:o,type:!1,nullable:!1};Array.isArray(i)||(i=[i]);for(let l of i)l===null?a.nullable=!0:typeof l=="string"?a.type="node":Array.isArray(l)&&(a.type="list");a.type&&n.push(a)}return n.length?{context:t.walkContext,fields:n}:null}function Tc(e){let t={};for(let r in e.node)if(Ur.call(e.node,r)){let n=e.node[r];if(!n.structure)throw new Error("Missed `structure` field in `"+r+"` node type definition");t[r]=Ec(r,n)}return t}function Aa(e,t){let r=e.fields.slice(),n=e.context,o=typeof n=="string";return t&&r.reverse(),function(i,a,l,c){let s;o&&(s=a[n],a[n]=i);for(let u of r){let p=i[u.name];if(!u.nullable||p){if(u.type==="list"){if(t?p.reduceRight(c,!1):p.reduce(c,!1))return!0}else if(l(p))return!0}}o&&(a[n]=s)}}function Ea({StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}){return{Atrule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Rule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Declaration:{StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}}}function Ta(e){let t=Tc(e),r={},n={},o=Symbol("break-walk"),i=Symbol("skip-node");for(let s in t)Ur.call(t,s)&&t[s]!==null&&(r[s]=Aa(t[s],!1),n[s]=Aa(t[s],!0));let a=Ea(r),l=Ea(n),c=function(s,u){function p(C,D,Ae){let B=h.call(N,C,D,Ae);return B===o?!0:B===i?!1:!!(b.hasOwnProperty(C.type)&&b[C.type](C,N,p,T)||m.call(N,C,D,Ae)===o)}let h=bt,m=bt,b=r,T=(C,D,Ae,B)=>C||p(D,Ae,B),N={break:o,skip:i,root:s,stylesheet:null,atrule:null,atrulePrelude:null,rule:null,selector:null,block:null,declaration:null,function:null};if(typeof u=="function")h=u;else if(u&&(h=Sa(u.enter),m=Sa(u.leave),u.reverse&&(b=n),u.visit)){if(a.hasOwnProperty(u.visit))b=u.reverse?l[u.visit]:a[u.visit];else if(!t.hasOwnProperty(u.visit))throw new Error("Bad value `"+u.visit+"` for `visit` option (should be: "+Object.keys(t).sort().join(", ")+")");h=Ca(h,u.visit),m=Ca(m,u.visit)}if(h===bt&&m===bt)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");p(s)};return c.break=o,c.skip=i,c.find=function(s,u){let p=null;return c(s,function(h,m,b){if(u.call(this,h,m,b))return p=h,o}),p},c.findLast=function(s,u){let p=null;return c(s,{reverse:!0,enter(h,m,b){if(u.call(this,h,m,b))return p=h,o}}),p},c.findAll=function(s,u){let p=[];return c(s,function(h,m,b){u.call(this,h,m,b)&&p.push(h)}),p},c}function Lc(e){return e}function Pc(e){let{min:t,max:r,comma:n}=e;return t===0&&r===0?n?"#?":"*":t===0&&r===1?"?":t===1&&r===0?n?"#":"+":t===1&&r===1?"":(n?"#":"")+(t===r?"{"+t+"}":"{"+t+","+(r!==0?r:"")+"}")}function Ic(e){switch(e.type){case"Range":return" ["+(e.min===null?"-\u221E":e.min)+","+(e.max===null?"\u221E":e.max)+"]";default:throw new Error("Unknown node type `"+e.type+"`")}}function Oc(e,t,r,n){let o=e.combinator===" "||n?e.combinator:" "+e.combinator+" ",i=e.terms.map(a=>jr(a,t,r,n)).join(o);return e.explicit||r?(n||i[0]===","?"[":"[ ")+i+(n?"]":" ]"):i}function jr(e,t,r,n){let o;switch(e.type){case"Group":o=Oc(e,t,r,n)+(e.disallowEmpty?"!":"");break;case"Multiplier":return jr(e.term,t,r,n)+t(Pc(e),e);case"Type":o="<"+e.name+(e.opts?t(Ic(e.opts),e.opts):"")+">";break;case"Property":o="<'"+e.name+"'>";break;case"Keyword":o=e.name;break;case"AtKeyword":o="@"+e.name;break;case"Function":o=e.name+"(";break;case"String":case"Token":o=e.value;break;case"Comma":o=",";break;default:throw new Error("Unknown node type `"+e.type+"`")}return t(o,e)}function Ge(e,t){let r=Lc,n=!1,o=!1;return typeof t=="function"?r=t:t&&(n=Boolean(t.forceBraces),o=Boolean(t.compact),typeof t.decorate=="function"&&(r=t.decorate)),jr(e,r,n,o)}var La={offset:0,line:1,column:1};function Dc(e,t){let r=e.tokens,n=e.longestMatch,o=n<r.length&&r[n].node||null,i=o!==t?o:null,a=0,l=0,c=0,s="",u,p;for(let h=0;h<r.length;h++){let m=r[h].value;h===n&&(l=m.length,a=s.length),i!==null&&r[h].node===i&&(h<=n?c++:c=0),s+=m}return n===r.length||c>1?(u=Xt(i||t,"end")||yt(La,s),p=yt(u)):(u=Xt(i,"start")||yt(Xt(t,"start")||La,s.slice(0,a)),p=Xt(i,"end")||yt(u,s.substr(a,l))),{css:s,mismatchOffset:a,mismatchLength:l,start:u,end:p}}function Xt(e,t){let r=e&&e.loc&&e.loc[t];return r?"line"in r?yt(r):r:null}function yt({offset:e,line:t,column:r},n){let o={offset:e,line:t,column:r};if(n){let i=n.split(/\n|\r\n?|\f/);o.offset+=n.length,o.line+=i.length-1,o.column=i.length===1?o.column+n.length:i.pop().length+1}return o}var Ke=function(e,t){let r=Re("SyntaxReferenceError",e+(t?" `"+t+"`":""));return r.reference=t,r},Pa=function(e,t,r,n){let o=Re("SyntaxMatchError",e),{css:i,mismatchOffset:a,mismatchLength:l,start:c,end:s}=Dc(n,r);return o.rawMessage=e,o.syntax=t?Ge(t):"<generic>",o.css=i,o.mismatchOffset=a,o.mismatchLength=l,o.message=e+` - syntax: `+o.syntax+` - value: `+(i||"<empty string>")+` - --------`+new Array(o.mismatchOffset+1).join("-")+"^",Object.assign(o,c),o.loc={source:r&&r.loc&&r.loc.source||"<unknown>",start:c,end:s},o};var Zt=new Map,Qe=new Map,Jt=45,Z=Nc,me=Mc;function er(e,t){return t=t||0,e.length-t>=2&&e.charCodeAt(t)===Jt&&e.charCodeAt(t+1)===Jt}function Ia(e,t){if(t=t||0,e.length-t>=3&&e.charCodeAt(t)===Jt&&e.charCodeAt(t+1)!==Jt){let r=e.indexOf("-",t+2);if(r!==-1)return e.substring(t,r+1)}return""}function Nc(e){if(Zt.has(e))return Zt.get(e);let t=e.toLowerCase(),r=Zt.get(t);if(r===void 0){let n=er(t,0),o=n?"":Ia(t,0);r=Object.freeze({basename:t.substr(o.length),name:t,prefix:o,vendor:o,custom:n})}return Zt.set(e,r),r}function Mc(e){if(Qe.has(e))return Qe.get(e);let t=e,r=e[0];r==="/"?r=e[1]==="/"?"//":"/":r!=="_"&&r!=="*"&&r!=="$"&&r!=="#"&&r!=="+"&&r!=="&"&&(r="");let n=er(t,r.length);if(!n&&(t=t.toLowerCase(),Qe.has(t))){let l=Qe.get(t);return Qe.set(e,l),l}let o=n?"":Ia(t,r.length),i=t.substr(0,r.length+o.length),a=Object.freeze({basename:t.substr(i.length),name:t.substr(r.length),hack:r,vendor:o,prefix:i,custom:n});return Qe.set(e,a),a}var tr=["initial","inherit","unset","revert","revert-layer"];var kt=43,de=45,qr=110,$e=!0,zc=!1;function Wr(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function xt(e,t,r){for(;e!==null&&(e.type===13||e.type===25);)e=r(++t);return t}function Pe(e,t,r,n){if(!e)return 0;let o=e.value.charCodeAt(t);if(o===kt||o===de){if(r)return 0;t++}for(;t<e.value.length;t++)if(!j(e.value.charCodeAt(t)))return 0;return n+1}function Hr(e,t,r){let n=!1,o=xt(e,t,r);if(e=r(o),e===null)return t;if(e.type!==10)if(Wr(e,kt)||Wr(e,de)){if(n=!0,o=xt(r(++o),o,r),e=r(o),e===null||e.type!==10)return 0}else return t;if(!n){let i=e.value.charCodeAt(0);if(i!==kt&&i!==de)return 0}return Pe(e,n?0:1,n,o)}function Yr(e,t){let r=0;if(!e)return 0;if(e.type===10)return Pe(e,0,zc,r);if(e.type===1&&e.value.charCodeAt(0)===de){if(!xe(e.value,1,qr))return 0;switch(e.value.length){case 2:return Hr(t(++r),r,t);case 3:return e.value.charCodeAt(2)!==de?0:(r=xt(t(++r),r,t),e=t(r),Pe(e,0,$e,r));default:return e.value.charCodeAt(2)!==de?0:Pe(e,3,$e,r)}}else if(e.type===1||Wr(e,kt)&&t(r+1).type===1){if(e.type!==1&&(e=t(++r)),e===null||!xe(e.value,0,qr))return 0;switch(e.value.length){case 1:return Hr(t(++r),r,t);case 2:return e.value.charCodeAt(1)!==de?0:(r=xt(t(++r),r,t),e=t(r),Pe(e,0,$e,r));default:return e.value.charCodeAt(1)!==de?0:Pe(e,2,$e,r)}}else if(e.type===12){let n=e.value.charCodeAt(0),o=n===kt||n===de?1:0,i=o;for(;i<e.value.length&&j(e.value.charCodeAt(i));i++);return i===o||!xe(e.value,i,qr)?0:i+1===e.value.length?Hr(t(++r),r,t):e.value.charCodeAt(i+1)!==de?0:i+2===e.value.length?(r=xt(t(++r),r,t),e=t(r),Pe(e,0,$e,r)):Pe(e,i+2,$e,r)}return 0}var Fc=43,Oa=45,Da=63,Bc=117;function Vr(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function _c(e,t){return e.value.charCodeAt(0)===t}function wt(e,t,r){let n=0;for(let o=t;o<e.value.length;o++){let i=e.value.charCodeAt(o);if(i===Oa&&r&&n!==0)return wt(e,t+n+1,!1),6;if(!oe(i)||++n>6)return 0}return n}function rr(e,t,r){if(!e)return 0;for(;Vr(r(t),Da);){if(++e>6)return 0;t++}return t}function Gr(e,t){let r=0;if(e===null||e.type!==1||!xe(e.value,0,Bc)||(e=t(++r),e===null))return 0;if(Vr(e,Fc))return e=t(++r),e===null?0:e.type===1?rr(wt(e,0,!0),++r,t):Vr(e,Da)?rr(1,++r,t):0;if(e.type===10){let n=wt(e,1,!0);return n===0?0:(e=t(++r),e===null?r:e.type===12||e.type===10?!_c(e,Oa)||!wt(e,1,!1)?0:r+1:rr(n,r,t))}return e.type===12?rr(wt(e,1,!0),++r,t):0}var Uc=["calc(","-moz-calc(","-webkit-calc("],Kr=new Map([[2,22],[21,22],[19,20],[23,24]]),jc=["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],qc=["deg","grad","rad","turn"],Hc=["s","ms"],Wc=["hz","khz"],Yc=["dpi","dpcm","dppx","x"],Vc=["fr"],Gc=["db"],Kc=["st"];function ue(e,t){return t<e.length?e.charCodeAt(t):0}function Ma(e,t){return ke(e,0,e.length,t)}function Ra(e,t){for(let r=0;r<t.length;r++)if(Ma(e,t[r]))return!0;return!1}function za(e,t){return t!==e.length-2?!1:ue(e,t)===92&&j(ue(e,t+1))}function nr(e,t,r){if(e&&e.type==="Range"){let n=Number(r!==void 0&&r!==t.length?t.substr(0,r):t);if(isNaN(n)||e.min!==null&&n<e.min&&typeof e.min!="string"||e.max!==null&&n>e.max&&typeof e.max!="string")return!0}return!1}function Qc(e,t){let r=0,n=[],o=0;e:do{switch(e.type){case 24:case 22:case 20:if(e.type!==r)break e;if(r=n.pop(),n.length===0){o++;break e}break;case 2:case 21:case 19:case 23:n.push(r),r=Kr.get(e.type);break}o++}while(e=t(o));return o}function le(e){return function(t,r,n){return t===null?0:t.type===2&&Ra(t.value,Uc)?Qc(t,r):e(t,r,n)}}function z(e){return function(t){return t===null||t.type!==e?0:1}}function $c(e){if(e===null||e.type!==1)return 0;let t=e.value.toLowerCase();return Ra(t,tr)||Ma(t,"default")?0:1}function Xc(e){return e===null||e.type!==1||ue(e.value,0)!==45||ue(e.value,1)!==45?0:1}function Zc(e){if(e===null||e.type!==4)return 0;let t=e.value.length;if(t!==4&&t!==5&&t!==7&&t!==9)return 0;for(let r=1;r<t;r++)if(!oe(ue(e.value,r)))return 0;return 1}function Jc(e){return e===null||e.type!==4||!je(ue(e.value,1),ue(e.value,2),ue(e.value,3))?0:1}function eu(e,t){if(!e)return 0;let r=0,n=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==r)break e;r=n.pop();break;case 17:if(r===0)break e;break;case 9:if(r===0&&e.value==="!")break e;break;case 2:case 21:case 19:case 23:n.push(r),r=Kr.get(e.type);break}o++}while(e=t(o));return o}function tu(e,t){if(!e)return 0;let r=0,n=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==r)break e;r=n.pop();break;case 2:case 21:case 19:case 23:n.push(r),r=Kr.get(e.type);break}o++}while(e=t(o));return o}function Se(e){return e&&(e=new Set(e)),function(t,r,n){if(t===null||t.type!==12)return 0;let o=Me(t.value,0);if(e!==null){let i=t.value.indexOf("\\",o),a=i===-1||!za(t.value,i)?t.value.substr(o):t.value.substring(o,i);if(e.has(a.toLowerCase())===!1)return 0}return nr(n,t.value,o)?0:1}}function ru(e,t,r){return e===null||e.type!==11||nr(r,e.value,e.value.length-1)?0:1}function Na(e){return typeof e!="function"&&(e=function(){return 0}),function(t,r,n){return t!==null&&t.type===10&&Number(t.value)===0?1:e(t,r,n)}}function nu(e,t,r){if(e===null)return 0;let n=Me(e.value,0);return!(n===e.value.length)&&!za(e.value,n)||nr(r,e.value,n)?0:1}function ou(e,t,r){if(e===null||e.type!==10)return 0;let n=ue(e.value,0)===43||ue(e.value,0)===45?1:0;for(;n<e.value.length;n++)if(!j(ue(e.value,n)))return 0;return nr(r,e.value,n)?0:1}var Qr={"ident-token":z(1),"function-token":z(2),"at-keyword-token":z(3),"hash-token":z(4),"string-token":z(5),"bad-string-token":z(6),"url-token":z(7),"bad-url-token":z(8),"delim-token":z(9),"number-token":z(10),"percentage-token":z(11),"dimension-token":z(12),"whitespace-token":z(13),"CDO-token":z(14),"CDC-token":z(15),"colon-token":z(16),"semicolon-token":z(17),"comma-token":z(18),"[-token":z(19),"]-token":z(20),"(-token":z(21),")-token":z(22),"{-token":z(23),"}-token":z(24),string:z(5),ident:z(1),"custom-ident":$c,"custom-property-name":Xc,"hex-color":Zc,"id-selector":Jc,"an-plus-b":Yr,urange:Gr,"declaration-value":eu,"any-value":tu,dimension:le(Se(null)),angle:le(Se(qc)),decibel:le(Se(Gc)),frequency:le(Se(Wc)),flex:le(Se(Vc)),length:le(Na(Se(jc))),resolution:le(Se(Yc)),semitones:le(Se(Kc)),time:le(Se(Hc)),percentage:le(ru),zero:Na(),number:le(nu),integer:le(ou)};function $r(e,t,r){return Object.assign(Re("SyntaxError",e),{input:t,offset:r,rawMessage:e,message:e+` - `+t+` ---`+new Array((r||t.length)+1).join("-")+"^"})}var iu=9,au=10,su=12,lu=13,cu=32,or=class{constructor(t){this.str=t,this.pos=0}charCodeAt(t){return t<this.str.length?this.str.charCodeAt(t):0}charCode(){return this.charCodeAt(this.pos)}nextCharCode(){return this.charCodeAt(this.pos+1)}nextNonWsCode(t){return this.charCodeAt(this.findWsEnd(t))}findWsEnd(t){for(;t<this.str.length;t++){let r=this.str.charCodeAt(t);if(r!==lu&&r!==au&&r!==su&&r!==cu&&r!==iu)break}return t}substringToPos(t){return this.str.substring(this.pos,this.pos=t)}eat(t){this.charCode()!==t&&this.error("Expect `"+String.fromCharCode(t)+"`"),this.pos++}peek(){return this.pos<this.str.length?this.str.charAt(this.pos++):""}error(t){throw new $r(t,this.str,this.pos)}};var uu=9,pu=10,hu=12,fu=13,mu=32,Wa=33,Jr=35,Fa=38,ir=39,Ya=40,du=41,Va=42,en=43,tn=44,Ba=45,rn=60,Ga=62,Zr=63,gu=64,cr=91,nn=93,ar=123,_a=124,Ua=125,ja=8734,vt=new Uint8Array(128).map((e,t)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(t))?1:0),qa={" ":1,"&&":2,"||":3,"|":4};function sr(e){return e.substringToPos(e.findWsEnd(e.pos))}function Xe(e){let t=e.pos;for(;t<e.str.length;t++){let r=e.str.charCodeAt(t);if(r>=128||vt[r]===0)break}return e.pos===t&&e.error("Expect a keyword"),e.substringToPos(t)}function lr(e){let t=e.pos;for(;t<e.str.length;t++){let r=e.str.charCodeAt(t);if(r<48||r>57)break}return e.pos===t&&e.error("Expect a number"),e.substringToPos(t)}function bu(e){let t=e.str.indexOf("'",e.pos+1);return t===-1&&(e.pos=e.str.length,e.error("Expect an apostrophe")),e.substringToPos(t+1)}function Ha(e){let t=null,r=null;return e.eat(ar),t=lr(e),e.charCode()===tn?(e.pos++,e.charCode()!==Ua&&(r=lr(e))):r=t,e.eat(Ua),{min:Number(t),max:r?Number(r):0}}function yu(e){let t=null,r=!1;switch(e.charCode()){case Va:e.pos++,t={min:0,max:0};break;case en:e.pos++,t={min:1,max:0};break;case Zr:e.pos++,t={min:0,max:1};break;case Jr:e.pos++,r=!0,e.charCode()===ar?t=Ha(e):e.charCode()===Zr?(e.pos++,t={min:0,max:0}):t={min:1,max:0};break;case ar:t=Ha(e);break;default:return null}return{type:"Multiplier",comma:r,min:t.min,max:t.max,term:null}}function Ze(e,t){let r=yu(e);return r!==null?(r.term=t,e.charCode()===Jr&&e.charCodeAt(e.pos-1)===en?Ze(e,r):r):t}function Xr(e){let t=e.peek();return t===""?null:{type:"Token",value:t}}function xu(e){let t;return e.eat(rn),e.eat(ir),t=Xe(e),e.eat(ir),e.eat(Ga),Ze(e,{type:"Property",name:t})}function ku(e){let t=null,r=null,n=1;return e.eat(cr),e.charCode()===Ba&&(e.peek(),n=-1),n==-1&&e.charCode()===ja?e.peek():(t=n*Number(lr(e)),vt[e.charCode()]!==0&&(t+=Xe(e))),sr(e),e.eat(tn),sr(e),e.charCode()===ja?e.peek():(n=1,e.charCode()===Ba&&(e.peek(),n=-1),r=n*Number(lr(e)),vt[e.charCode()]!==0&&(r+=Xe(e))),e.eat(nn),{type:"Range",min:t,max:r}}function wu(e){let t,r=null;return e.eat(rn),t=Xe(e),e.charCode()===Ya&&e.nextCharCode()===du&&(e.pos+=2,t+="()"),e.charCodeAt(e.findWsEnd(e.pos))===cr&&(sr(e),r=ku(e)),e.eat(Ga),Ze(e,{type:"Type",name:t,opts:r})}function vu(e){let t=Xe(e);return e.charCode()===Ya?(e.pos++,{type:"Function",name:t}):Ze(e,{type:"Keyword",name:t})}function Su(e,t){function r(o,i){return{type:"Group",terms:o,combinator:i,disallowEmpty:!1,explicit:!1}}let n;for(t=Object.keys(t).sort((o,i)=>qa[o]-qa[i]);t.length>0;){n=t.shift();let o=0,i=0;for(;o<e.length;o++){let a=e[o];a.type==="Combinator"&&(a.value===n?(i===-1&&(i=o-1),e.splice(o,1),o--):(i!==-1&&o-i>1&&(e.splice(i,o-i,r(e.slice(i,o),n)),o=i+1),i=-1))}i!==-1&&t.length&&e.splice(i,o-i,r(e.slice(i,o),n))}return n}function Ka(e){let t=[],r={},n,o=null,i=e.pos;for(;n=Au(e);)n.type!=="Spaces"&&(n.type==="Combinator"?((o===null||o.type==="Combinator")&&(e.pos=i,e.error("Unexpected combinator")),r[n.value]=!0):o!==null&&o.type!=="Combinator"&&(r[" "]=!0,t.push({type:"Combinator",value:" "})),t.push(n),o=n,i=e.pos);return o!==null&&o.type==="Combinator"&&(e.pos-=i,e.error("Unexpected combinator")),{type:"Group",terms:t,combinator:Su(t,r)||" ",disallowEmpty:!1,explicit:!1}}function Cu(e){let t;return e.eat(cr),t=Ka(e),e.eat(nn),t.explicit=!0,e.charCode()===Wa&&(e.pos++,t.disallowEmpty=!0),t}function Au(e){let t=e.charCode();if(t<128&&vt[t]===1)return vu(e);switch(t){case nn:break;case cr:return Ze(e,Cu(e));case rn:return e.nextCharCode()===ir?xu(e):wu(e);case _a:return{type:"Combinator",value:e.substringToPos(e.pos+(e.nextCharCode()===_a?2:1))};case Fa:return e.pos++,e.eat(Fa),{type:"Combinator",value:"&&"};case tn:return e.pos++,{type:"Comma"};case ir:return Ze(e,{type:"String",value:bu(e)});case mu:case uu:case pu:case fu:case hu:return{type:"Spaces",value:sr(e)};case gu:return t=e.nextCharCode(),t<128&&vt[t]===1?(e.pos++,{type:"AtKeyword",name:Xe(e)}):Xr(e);case Va:case en:case Zr:case Jr:case Wa:break;case ar:if(t=e.nextCharCode(),t<48||t>57)return Xr(e);break;default:return Xr(e)}}function St(e){let t=new or(e),r=Ka(t);return t.pos!==e.length&&t.error("Unexpected input"),r.terms.length===1&&r.terms[0].type==="Group"?r.terms[0]:r}var Ct=function(){};function Qa(e){return typeof e=="function"?e:Ct}function on(e,t,r){function n(a){switch(o.call(r,a),a.type){case"Group":a.terms.forEach(n);break;case"Multiplier":n(a.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+a.type)}i.call(r,a)}let o=Ct,i=Ct;if(typeof t=="function"?o=t:t&&(o=Qa(t.enter),i=Qa(t.leave)),o===Ct&&i===Ct)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");n(e,r)}var Tu={decorator(e){let t=[],r=null;return{...e,node(n){let o=r;r=n,e.node.call(this,n),r=o},emit(n,o,i){t.push({type:o,value:n,node:i?null:r})},result(){return t}}}};function Lu(e){let t=[];return Le(e,(r,n,o)=>t.push({type:r,value:e.slice(n,o),node:null})),t}function $a(e,t){return typeof e=="string"?Lu(e):t.generate(e,Tu)}var E={type:"Match"},O={type:"Mismatch"},ur={type:"DisallowEmpty"},Pu=40,Iu=41;function ee(e,t,r){return t===E&&r===O||e===E&&t===E&&r===E?e:(e.type==="If"&&e.else===O&&t===E&&(t=e.then,e=e.match),{type:"If",match:e,then:t,else:r})}function Za(e){return e.length>2&&e.charCodeAt(e.length-2)===Pu&&e.charCodeAt(e.length-1)===Iu}function Xa(e){return e.type==="Keyword"||e.type==="AtKeyword"||e.type==="Function"||e.type==="Type"&&Za(e.name)}function an(e,t,r){switch(e){case" ":{let n=E;for(let o=t.length-1;o>=0;o--){let i=t[o];n=ee(i,n,O)}return n}case"|":{let n=O,o=null;for(let i=t.length-1;i>=0;i--){let a=t[i];if(Xa(a)&&(o===null&&i>0&&Xa(t[i-1])&&(o=Object.create(null),n=ee({type:"Enum",map:o},E,n)),o!==null)){let l=(Za(a.name)?a.name.slice(0,-1):a.name).toLowerCase();if(!(l in o)){o[l]=a;continue}}o=null,n=ee(a,E,n)}return n}case"&&":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!0};let n=O;for(let o=t.length-1;o>=0;o--){let i=t[o],a;t.length>1?a=an(e,t.filter(function(l){return l!==i}),!1):a=E,n=ee(i,a,n)}return n}case"||":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!1};let n=r?E:O;for(let o=t.length-1;o>=0;o--){let i=t[o],a;t.length>1?a=an(e,t.filter(function(l){return l!==i}),!0):a=E,n=ee(i,a,n)}return n}}}function Ou(e){let t=E,r=sn(e.term);if(e.max===0)r=ee(r,ur,O),t=ee(r,null,O),t.then=ee(E,E,t),e.comma&&(t.then.else=ee({type:"Comma",syntax:e},t,O));else for(let n=e.min||1;n<=e.max;n++)e.comma&&t!==E&&(t=ee({type:"Comma",syntax:e},t,O)),t=ee(r,ee(E,E,t),O);if(e.min===0)t=ee(E,E,t);else for(let n=0;n<e.min-1;n++)e.comma&&t!==E&&(t=ee({type:"Comma",syntax:e},t,O)),t=ee(r,t,O);return t}function sn(e){if(typeof e=="function")return{type:"Generic",fn:e};switch(e.type){case"Group":{let t=an(e.combinator,e.terms.map(sn),!1);return e.disallowEmpty&&(t=ee(t,ur,O)),t}case"Multiplier":return Ou(e);case"Type":case"Property":return{type:e.type,name:e.name,syntax:e};case"Keyword":return{type:e.type,name:e.name.toLowerCase(),syntax:e};case"AtKeyword":return{type:e.type,name:"@"+e.name.toLowerCase(),syntax:e};case"Function":return{type:e.type,name:e.name.toLowerCase()+"(",syntax:e};case"String":return e.value.length===3?{type:"Token",value:e.value.charAt(1),syntax:e}:{type:e.type,value:e.value.substr(1,e.value.length-2).replace(/\\'/g,"'"),syntax:e};case"Token":return{type:e.type,value:e.value,syntax:e};case"Comma":return{type:e.type,syntax:e};default:throw new Error("Unknown node type:",e.type)}}function pr(e,t){return typeof e=="string"&&(e=St(e)),{type:"MatchGraph",match:sn(e),syntax:t||null,source:e}}var{hasOwnProperty:Ja}=Object.prototype,Du=0,Nu=1,cn=2,os=3,es="Match",Mu="Mismatch",Ru="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",ts=15e3,zu=0;function Fu(e){let t=null,r=null,n=e;for(;n!==null;)r=n.prev,n.prev=t,t=n,n=r;return t}function ln(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++){let n=t.charCodeAt(r),o=e.charCodeAt(r);if(o>=65&&o<=90&&(o=o|32),o!==n)return!1}return!0}function Bu(e){return e.type!==9?!1:e.value!=="?"}function rs(e){return e===null?!0:e.type===18||e.type===2||e.type===21||e.type===19||e.type===23||Bu(e)}function ns(e){return e===null?!0:e.type===22||e.type===20||e.type===24||e.type===9&&e.value==="/"}function _u(e,t,r){function n(){do D++,C=D<e.length?e[D]:null;while(C!==null&&(C.type===13||C.type===25))}function o(ce){let ye=D+ce;return ye<e.length?e[ye]:null}function i(ce,ye){return{nextState:ce,matchStack:B,syntaxStack:p,thenStack:h,tokenIndex:D,prev:ye}}function a(ce){h={nextState:ce,matchStack:B,syntaxStack:p,prev:h}}function l(ce){m=i(ce,m)}function c(){B={type:Nu,syntax:t.syntax,token:C,prev:B},n(),b=null,D>Ae&&(Ae=D)}function s(){p={syntax:t.syntax,opts:t.syntax.opts||p!==null&&p.opts||null,prev:p},B={type:cn,syntax:t.syntax,token:B.token,prev:B}}function u(){B.type===cn?B=B.prev:B={type:os,syntax:p.syntax,token:B.token,prev:B},p=p.prev}let p=null,h=null,m=null,b=null,T=0,N=null,C=null,D=-1,Ae=0,B={type:Du,syntax:null,token:null,prev:null};for(n();N===null&&++T<ts;)switch(t.type){case"Match":if(h===null){if(C!==null&&(D!==e.length-1||C.value!=="\\0"&&C.value!=="\\9")){t=O;break}N=es;break}if(t=h.nextState,t===ur)if(h.matchStack===B){t=O;break}else t=E;for(;h.syntaxStack!==p;)u();h=h.prev;break;case"Mismatch":if(b!==null&&b!==!1)(m===null||D>m.tokenIndex)&&(m=b,b=!1);else if(m===null){N=Mu;break}t=m.nextState,h=m.thenStack,p=m.syntaxStack,B=m.matchStack,D=m.tokenIndex,C=D<e.length?e[D]:null,m=m.prev;break;case"MatchGraph":t=t.match;break;case"If":t.else!==O&&l(t.else),t.then!==E&&a(t.then),t=t.match;break;case"MatchOnce":t={type:"MatchOnceBuffer",syntax:t,index:0,mask:0};break;case"MatchOnceBuffer":{let J=t.syntax.terms;if(t.index===J.length){if(t.mask===0||t.syntax.all){t=O;break}t=E;break}if(t.mask===(1<<J.length)-1){t=E;break}for(;t.index<J.length;t.index++){let te=1<<t.index;if((t.mask&te)===0){l(t),a({type:"AddMatchOnce",syntax:t.syntax,mask:t.mask|te}),t=J[t.index++];break}}break}case"AddMatchOnce":t={type:"MatchOnceBuffer",syntax:t.syntax,index:0,mask:t.mask};break;case"Enum":if(C!==null){let J=C.value.toLowerCase();if(J.indexOf("\\")!==-1&&(J=J.replace(/\\[09].*$/,"")),Ja.call(t.map,J)){t=t.map[J];break}}t=O;break;case"Generic":{let J=p!==null?p.opts:null,te=D+Math.floor(t.fn(C,o,J));if(!isNaN(te)&&te>D){for(;D<te;)c();t=E}else t=O;break}case"Type":case"Property":{let J=t.type==="Type"?"types":"properties",te=Ja.call(r,J)?r[J][t.name]:null;if(!te||!te.match)throw new Error("Bad syntax reference: "+(t.type==="Type"?"<"+t.name+">":"<'"+t.name+"'>"));if(b!==!1&&C!==null&&t.type==="Type"&&(t.name==="custom-ident"&&C.type===1||t.name==="length"&&C.value==="0")){b===null&&(b=i(t,m)),t=O;break}s(),t=te.match;break}case"Keyword":{let J=t.name;if(C!==null){let te=C.value;if(te.indexOf("\\")!==-1&&(te=te.replace(/\\[09].*$/,"")),ln(te,J)){c(),t=E;break}}t=O;break}case"AtKeyword":case"Function":if(C!==null&&ln(C.value,t.name)){c(),t=E;break}t=O;break;case"Token":if(C!==null&&C.value===t.value){c(),t=E;break}t=O;break;case"Comma":C!==null&&C.type===18?rs(B.token)?t=O:(c(),t=ns(C)?O:E):t=rs(B.token)||ns(C)?E:O;break;case"String":let ce="",ye=D;for(;ye<e.length&&ce.length<t.value.length;ye++)ce+=e[ye].value;if(ln(ce,t.value)){for(;D<ye;)c();t=E}else t=O;break;default:throw new Error("Unknown node type: "+t.type)}switch(zu+=T,N){case null:console.warn("[csstree-match] BREAK after "+ts+" iterations"),N=Ru,B=null;break;case es:for(;p!==null;)u();break;default:B=null}return{tokens:e,reason:N,iterations:T,match:B,longestMatch:Ae}}function un(e,t,r){let n=_u(e,t,r||{});if(n.match===null)return n;let o=n.match,i=n.match={syntax:t.syntax||null,match:[]},a=[i];for(o=Fu(o).prev;o!==null;){switch(o.type){case cn:i.match.push(i={syntax:o.syntax,match:[]}),a.push(i);break;case os:a.pop(),i=a[a.length-1];break;default:i.match.push({syntax:o.syntax||null,token:o.token.value,node:o.token.node})}o=o.prev}return n}var hn={};y(hn,{getTrace:()=>is,isKeyword:()=>qu,isProperty:()=>ju,isType:()=>Uu});function is(e){function t(o){return o===null?!1:o.type==="Type"||o.type==="Property"||o.type==="Keyword"}function r(o){if(Array.isArray(o.match)){for(let i=0;i<o.match.length;i++)if(r(o.match[i]))return t(o.syntax)&&n.unshift(o.syntax),!0}else if(o.node===e)return n=t(o.syntax)?[o.syntax]:[],!0;return!1}let n=null;return this.matched!==null&&r(this.matched),n}function Uu(e,t){return pn(this,e,r=>r.type==="Type"&&r.name===t)}function ju(e,t){return pn(this,e,r=>r.type==="Property"&&r.name===t)}function qu(e){return pn(this,e,t=>t.type==="Keyword")}function pn(e,t,r){let n=is.call(e,t);return n===null?!1:n.some(r)}function as(e){return"node"in e?e.node:as(e.match[0])}function ss(e){return"node"in e?e.node:ss(e.match[e.match.length-1])}function fn(e,t,r,n,o){function i(l){if(l.syntax!==null&&l.syntax.type===n&&l.syntax.name===o){let c=as(l),s=ss(l);e.syntax.walk(t,function(u,p,h){if(u===c){let m=new w;do{if(m.appendData(p.data),p.data===s)break;p=p.next}while(p!==null);a.push({parent:h,nodes:m})}})}Array.isArray(l.match)&&l.match.forEach(i)}let a=[];return r.matched!==null&&i(r.matched),a}var{hasOwnProperty:At}=Object.prototype;function mn(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&e>=0}function ls(e){return Boolean(e)&&mn(e.offset)&&mn(e.line)&&mn(e.column)}function Hu(e,t){return function(n,o){if(!n||n.constructor!==Object)return o(n,"Type of node should be an Object");for(let i in n){let a=!0;if(At.call(n,i)!==!1){if(i==="type")n.type!==e&&o(n,"Wrong node type `"+n.type+"`, expected `"+e+"`");else if(i==="loc"){if(n.loc===null)continue;if(n.loc&&n.loc.constructor===Object)if(typeof n.loc.source!="string")i+=".source";else if(!ls(n.loc.start))i+=".start";else if(!ls(n.loc.end))i+=".end";else continue;a=!1}else if(t.hasOwnProperty(i)){a=!1;for(let l=0;!a&&l<t[i].length;l++){let c=t[i][l];switch(c){case String:a=typeof n[i]=="string";break;case Boolean:a=typeof n[i]=="boolean";break;case null:a=n[i]===null;break;default:typeof c=="string"?a=n[i]&&n[i].type===c:Array.isArray(c)&&(a=n[i]instanceof w)}}}else o(n,"Unknown field `"+i+"` for "+e+" node type");a||o(n,"Bad value for `"+e+"."+i+"`")}}for(let i in t)At.call(t,i)&&At.call(n,i)===!1&&o(n,"Field `"+e+"."+i+"` is missed")}}function Wu(e,t){let r=t.structure,n={type:String,loc:!0},o={type:'"'+e+'"'};for(let i in r){if(At.call(r,i)===!1)continue;let a=[],l=n[i]=Array.isArray(r[i])?r[i].slice():[r[i]];for(let c=0;c<l.length;c++){let s=l[c];if(s===String||s===Boolean)a.push(s.name);else if(s===null)a.push("null");else if(typeof s=="string")a.push("<"+s+">");else if(Array.isArray(s))a.push("List");else throw new Error("Wrong value `"+s+"` in `"+e+"."+i+"` structure definition")}o[i]=a.join(" | ")}return{docs:o,check:Hu(e,n)}}function cs(e){let t={};if(e.node){for(let r in e.node)if(At.call(e.node,r)){let n=e.node[r];if(n.structure)t[r]=Wu(r,n);else throw new Error("Missed `structure` field in `"+r+"` node type definition")}}return t}var Yu=pr(tr.join(" | "));function dn(e,t,r){let n={};for(let o in e)e[o].syntax&&(n[o]=r?e[o].syntax:Ge(e[o].syntax,{compact:t}));return n}function Vu(e,t,r){let n={};for(let[o,i]of Object.entries(e))n[o]={prelude:i.prelude&&(r?i.prelude.syntax:Ge(i.prelude.syntax,{compact:t})),descriptors:i.descriptors&&dn(i.descriptors,t,r)};return n}function Gu(e){for(let t=0;t<e.length;t++)if(e[t].value.toLowerCase()==="var(")return!0;return!1}function ge(e,t,r){return{matched:e,iterations:r,error:t,...hn}}function Je(e,t,r,n){let o=$a(r,e.syntax),i;return Gu(o)?ge(null,new Error("Matching for a tree with var() is not supported")):(n&&(i=un(o,e.cssWideKeywordsSyntax,e)),(!n||!i.match)&&(i=un(o,t.match,e),!i.match)?ge(null,new Pa(i.reason,t.syntax,r,i),i.iterations):ge(i.match,null,i.iterations))}var et=class{constructor(t,r,n){if(this.cssWideKeywordsSyntax=Yu,this.syntax=r,this.generic=!1,this.atrules=Object.create(null),this.properties=Object.create(null),this.types=Object.create(null),this.structure=n||cs(t),t){if(t.types)for(let o in t.types)this.addType_(o,t.types[o]);if(t.generic){this.generic=!0;for(let o in Qr)this.addType_(o,Qr[o])}if(t.atrules)for(let o in t.atrules)this.addAtrule_(o,t.atrules[o]);if(t.properties)for(let o in t.properties)this.addProperty_(o,t.properties[o])}}checkStructure(t){function r(i,a){o.push({node:i,message:a})}let n=this.structure,o=[];return this.syntax.walk(t,function(i){n.hasOwnProperty(i.type)?n[i.type].check(i,r):r(i,"Unknown node type `"+i.type+"`")}),o.length?o:!1}createDescriptor(t,r,n,o=null){let i={type:r,name:n},a={type:r,name:n,parent:o,serializable:typeof t=="string"||t&&typeof t.type=="string",syntax:null,match:null};return typeof t=="function"?a.match=pr(t,i):(typeof t=="string"?Object.defineProperty(a,"syntax",{get(){return Object.defineProperty(a,"syntax",{value:St(t)}),a.syntax}}):a.syntax=t,Object.defineProperty(a,"match",{get(){return Object.defineProperty(a,"match",{value:pr(a.syntax,i)}),a.match}})),a}addAtrule_(t,r){!r||(this.atrules[t]={type:"Atrule",name:t,prelude:r.prelude?this.createDescriptor(r.prelude,"AtrulePrelude",t):null,descriptors:r.descriptors?Object.keys(r.descriptors).reduce((n,o)=>(n[o]=this.createDescriptor(r.descriptors[o],"AtruleDescriptor",o,t),n),Object.create(null)):null})}addProperty_(t,r){!r||(this.properties[t]=this.createDescriptor(r,"Property",t))}addType_(t,r){!r||(this.types[t]=this.createDescriptor(r,"Type",t))}checkAtruleName(t){if(!this.getAtrule(t))return new Ke("Unknown at-rule","@"+t)}checkAtrulePrelude(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t);if(!o.prelude&&r)return new SyntaxError("At-rule `@"+t+"` should not contain a prelude");if(o.prelude&&!r&&!Je(this,o.prelude,"",!1).matched)return new SyntaxError("At-rule `@"+t+"` should contain a prelude")}checkAtruleDescriptorName(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t),i=Z(r);if(!o.descriptors)return new SyntaxError("At-rule `@"+t+"` has no known descriptors");if(!o.descriptors[i.name]&&!o.descriptors[i.basename])return new Ke("Unknown at-rule descriptor",r)}checkPropertyName(t){if(!this.getProperty(t))return new Ke("Unknown property",t)}matchAtrulePrelude(t,r){let n=this.checkAtrulePrelude(t,r);return n?ge(null,n):Je(this,this.getAtrule(t).prelude,r||"",!1)}matchAtruleDescriptor(t,r,n){let o=this.checkAtruleDescriptorName(t,r);if(o)return ge(null,o);let i=this.getAtrule(t),a=Z(r);return Je(this,i.descriptors[a.name]||i.descriptors[a.basename],n,!1)}matchDeclaration(t){return t.type!=="Declaration"?ge(null,new Error("Not a Declaration node")):this.matchProperty(t.property,t.value)}matchProperty(t,r){if(me(t).custom)return ge(null,new Error("Lexer matching doesn't applicable for custom properties"));let n=this.checkPropertyName(t);return n?ge(null,n):Je(this,this.getProperty(t),r,!0)}matchType(t,r){let n=this.getType(t);return n?Je(this,n,r,!1):ge(null,new Ke("Unknown type",t))}match(t,r){return typeof t!="string"&&(!t||!t.type)?ge(null,new Ke("Bad syntax")):((typeof t=="string"||!t.match)&&(t=this.createDescriptor(t,"Type","anonymous")),Je(this,t,r,!1))}findValueFragments(t,r,n,o){return fn(this,r,this.matchProperty(t,r),n,o)}findDeclarationValueFragments(t,r,n){return fn(this,t.value,this.matchDeclaration(t),r,n)}findAllFragments(t,r,n){let o=[];return this.syntax.walk(t,{visit:"Declaration",enter:i=>{o.push.apply(o,this.findDeclarationValueFragments(i,r,n))}}),o}getAtrule(t,r=!0){let n=Z(t);return(n.vendor&&r?this.atrules[n.name]||this.atrules[n.basename]:this.atrules[n.name])||null}getAtrulePrelude(t,r=!0){let n=this.getAtrule(t,r);return n&&n.prelude||null}getAtruleDescriptor(t,r){return this.atrules.hasOwnProperty(t)&&this.atrules.declarators&&this.atrules[t].declarators[r]||null}getProperty(t,r=!0){let n=me(t);return(n.vendor&&r?this.properties[n.name]||this.properties[n.basename]:this.properties[n.name])||null}getType(t){return hasOwnProperty.call(this.types,t)?this.types[t]:null}validate(){function t(o,i,a,l){if(a.has(i))return a.get(i);a.set(i,!1),l.syntax!==null&&on(l.syntax,function(c){if(c.type!=="Type"&&c.type!=="Property")return;let s=c.type==="Type"?o.types:o.properties,u=c.type==="Type"?r:n;(!hasOwnProperty.call(s,c.name)||t(o,c.name,u,s[c.name]))&&a.set(i,!0)},this)}let r=new Map,n=new Map;for(let o in this.types)t(this,o,r,this.types[o]);for(let o in this.properties)t(this,o,n,this.properties[o]);return r=[...r.keys()].filter(o=>r.get(o)),n=[...n.keys()].filter(o=>n.get(o)),r.length||n.length?{types:r,properties:n}:null}dump(t,r){return{generic:this.generic,types:dn(this.types,!r,t),properties:dn(this.properties,!r,t),atrules:Vu(this.atrules,!r,t)}}toString(){return JSON.stringify(this.dump())}};var{hasOwnProperty:tt}=Object.prototype,Ku={generic:!0,types:gn,atrules:{prelude:ps,descriptors:ps},properties:gn,parseContext:Qu,scope:fs,atrule:["parse"],pseudo:["parse"],node:["name","structure","parse","generate","walkContext"]};function hr(e){return e&&e.constructor===Object}function hs(e){return hr(e)?{...e}:e}function Qu(e,t){return Object.assign(e,t)}function fs(e,t){for(let r in t)tt.call(t,r)&&(hr(e[r])?fs(e[r],t[r]):e[r]=hs(t[r]));return e}function us(e,t){return typeof t=="string"&&/^\s*\|/.test(t)?typeof e=="string"?e+t:t.replace(/^\s*\|\s*/,""):t||null}function gn(e,t){if(typeof t=="string")return us(e,t);let r={...e};for(let n in t)tt.call(t,n)&&(r[n]=us(tt.call(e,n)?e[n]:void 0,t[n]));return r}function ps(e,t){let r=gn(e,t);return!hr(r)||Object.keys(r).length?r:null}function Et(e,t,r){for(let n in r)if(tt.call(r,n)!==!1){if(r[n]===!0)tt.call(t,n)&&(e[n]=hs(t[n]));else if(r[n]){if(typeof r[n]=="function"){let o=r[n];e[n]=o({},e[n]),e[n]=o(e[n]||{},t[n])}else if(hr(r[n])){let o={};for(let i in e[n])o[i]=Et({},e[n][i],r[n]);for(let i in t[n])o[i]=Et(o[i]||{},t[n][i],r[n]);e[n]=o}else if(Array.isArray(r[n])){let o={},i=r[n].reduce(function(a,l){return a[l]=!0,a},{});for(let[a,l]of Object.entries(e[n]||{}))o[a]={},l&&Et(o[a],l,i);for(let a in t[n])tt.call(t[n],a)&&(o[a]||(o[a]={}),t[n]&&t[n][a]&&Et(o[a],t[n][a],i));e[n]=o}}}return e}var fr=(e,t)=>Et(e,t,Ku);function ms(e){let t=$i(e),r=Ta(e),n=wa(e),{fromPlainObject:o,toPlainObject:i}=va(r),a={lexer:null,createLexer:l=>new et(l,a,a.lexer.structure),tokenize:Le,parse:t,generate:n,walk:r,find:r.find,findLast:r.findLast,findAll:r.findAll,fromPlainObject:o,toPlainObject:i,fork(l){let c=fr({},e);return ms(typeof l=="function"?l(c,Object.assign):fr(c,l))}};return a.lexer=new et({generic:!0,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},a),a}var bn=e=>ms(fr({},e));var ds={generic:!0,types:{"absolute-size":"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large","alpha-value":"<number>|<percentage>","angle-percentage":"<angle>|<percentage>","angular-color-hint":"<angle-percentage>","angular-color-stop":"<color>&&<color-stop-angle>?","angular-color-stop-list":"[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>","animateable-feature":"scroll-position|contents|<custom-ident>",attachment:"scroll|fixed|local","attr()":"attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attribute-selector":"'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )","auto-track-list":"[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?","baseline-position":"[first|last]? baseline","basic-shape":"<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>","bg-image":"none|<image>","bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","bg-position":"[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]","bg-size":"[<length-percentage>|auto]{1,2}|cover|contain","blur()":"blur( <length> )","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",box:"border-box|padding-box|content-box","brightness()":"brightness( <number-percentage> )","calc()":"calc( <calc-sum> )","calc-sum":"<calc-product> [['+'|'-'] <calc-product>]*","calc-product":"<calc-value> ['*' <calc-value>|'/' <number>]*","calc-value":"<number>|<dimension>|<percentage>|( <calc-sum> )","cf-final-image":"<image>|<color>","cf-mixing-image":"<percentage>?&&<image>","circle()":"circle( [<shape-radius>]? [at <position>]? )","clamp()":"clamp( <calc-sum>#{3} )","class-selector":"'.' <ident-token>","clip-source":"<url>",color:"<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<hex-color>|<named-color>|currentcolor|<deprecated-system-color>","color-stop":"<color-stop-length>|<color-stop-angle>","color-stop-angle":"<angle-percentage>{1,2}","color-stop-length":"<length-percentage>{1,2}","color-stop-list":"[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>",combinator:"'>'|'+'|'~'|['||']","common-lig-values":"[common-ligatures|no-common-ligatures]","compat-auto":"searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[<type-selector>? <subclass-selector>* [<pseudo-element-selector> <pseudo-class-selector>*]*]!","compound-selector-list":"<compound-selector>#","complex-selector":"<compound-selector> [<combinator>? <compound-selector>]*","complex-selector-list":"<complex-selector>#","conic-gradient()":"conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","contextual-alt-values":"[contextual|no-contextual]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"<image>","contrast()":"contrast( [<number-percentage>] )",counter:"<counter()>|<counters()>","counter()":"counter( <counter-name> , <counter-style>? )","counter-name":"<custom-ident>","counter-style":"<counter-style-name>|symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <counter-name> , <string> , <counter-style>? )","cross-fade()":"cross-fade( <cf-mixing-image> , <cf-final-image>? )","cubic-bezier-timing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"<display-outside>?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( <length>{2,3} <color>? )","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )","ellipse()":"ellipse( [<shape-radius>{2}]? [at <position>]? )","ending-shape":"circle|ellipse","env()":"env( <custom-ident> , <declaration-value>? )","explicit-track-list":"[<line-names>? <track-size>]+ <line-names>?","family-name":"<string>|<custom-ident>+","feature-tag-value":"<string> [<integer>|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":"<feature-type> '{' <feature-value-declaration-list> '}'","feature-value-block-list":"<feature-value-block>+","feature-value-declaration":"<custom-ident> : <integer>+ ;","feature-value-declaration-list":"<feature-value-declaration>","feature-value-name":"<custom-ident>","fill-rule":"nonzero|evenodd","filter-function":"<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>","filter-function-list":"[<filter-function>|<url>]+","final-bg-layer":"<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","fit-content()":"fit-content( [<length>|<percentage>] )","fixed-breadth":"<length-percentage>","fixed-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <fixed-size>]+ <line-names>? )","fixed-size":"<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>","font-variant-css21":"[normal|small-caps]","font-weight-absolute":"normal|bold|<number [1,1000]>","frequency-percentage":"<frequency>|<percentage>","general-enclosed":"[<function-token> <any-value> )]|( <ident> <any-value> )","generic-family":"serif|sans-serif|cursive|fantasy|monospace|-apple-system","generic-name":"serif|sans-serif|cursive|fantasy|monospace","geometry-box":"<shape-box>|fill-box|stroke-box|view-box",gradient:"<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>","grayscale()":"grayscale( <number-percentage> )","grid-line":"auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )","hsla()":"hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )",hue:"<number>|<angle>","hue-rotate()":"hue-rotate( <angle> )","hwb()":"hwb( [<hue>|none] [<percentage>|none] [<percentage>|none] [/ [<alpha-value>|none]]? )",image:"<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>","image()":"image( <image-tags>? [<image-src>? , <color>?]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[<image>|<string>] [<resolution>||type( <string> )]","image-src":"<url>|<string>","image-tags":"ltr|rtl","inflexible-breadth":"<length>|<percentage>|min-content|max-content|auto","inset()":"inset( <length-percentage>{1,4} [round <'border-radius'>]? )","invert()":"invert( <number-percentage> )","keyframes-name":"<custom-ident>|<string>","keyframe-block":"<keyframe-selector># { <declaration-list> }","keyframe-block-list":"<keyframe-block>+","keyframe-selector":"from|to|<percentage>","layer()":"layer( <layer-name> )","layer-name":"<ident> ['.' <ident>]*","leader()":"leader( <leader-type> )","leader-type":"dotted|solid|space|<string>","length-percentage":"<length>|<percentage>","line-names":"'[' <custom-ident>* ']'","line-name-list":"[<line-names>|<name-repeat>]+","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"<length>|thin|medium|thick","linear-color-hint":"<length-percentage>","linear-color-stop":"<color> <color-stop-length>?","linear-gradient()":"linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","mask-layer":"<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>","mask-position":"[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?","mask-reference":"none|<image>|<mask-source>","mask-source":"<url>","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( <number>#{6} )","matrix3d()":"matrix3d( <number>#{16} )","max()":"max( <calc-sum># )","media-and":"<media-in-parens> [and <media-in-parens>]+","media-condition":"<media-not>|<media-and>|<media-or>|<media-in-parens>","media-condition-without-or":"<media-not>|<media-and>|<media-in-parens>","media-feature":"( [<mf-plain>|<mf-boolean>|<mf-range>] )","media-in-parens":"( <media-condition> )|<media-feature>|<general-enclosed>","media-not":"not <media-in-parens>","media-or":"<media-in-parens> [or <media-in-parens>]+","media-query":"<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?","media-query-list":"<media-query>#","media-type":"<ident>","mf-boolean":"<mf-name>","mf-name":"<ident>","mf-plain":"<mf-name> : <mf-value>","mf-range":"<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>","mf-value":"<number>|<dimension>|<ident>|<ratio>","min()":"min( <calc-sum># )","minmax()":"minmax( [<length>|<percentage>|min-content|max-content|auto] , [<length>|<percentage>|<flex>|min-content|max-content|auto] )","name-repeat":"repeat( [<integer [1,\u221E]>|auto-fill] , <line-names>+ )","named-color":"transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>","namespace-prefix":"<ident>","ns-prefix":"[<ident-token>|'*']? '|'","number-percentage":"<number>|<percentage>","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]",nth:"<an-plus-b>|even|odd","opacity()":"opacity( [<number-percentage>] )","overflow-position":"unsafe|safe","outline-radius":"<length>|<percentage>","page-body":"<declaration>? [; <page-body>]?|<page-margin-box> <page-body>","page-margin-box":"<page-margin-box-type> '{' <declaration-list> '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector-list":"[<page-selector>#]?","page-selector":"<pseudo-page>+|<ident> <pseudo-page>*","page-size":"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger","path()":"path( [<fill-rule> ,]? <string> )","paint()":"paint( <ident> , <declaration-value>? )","perspective()":"perspective( <length> )","polygon()":"polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]","pseudo-class-selector":"':' <ident-token>|':' <function-token> <any-value> ')'","pseudo-element-selector":"':' <pseudo-class-selector>","pseudo-page":": [left|right|first|blank]",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-gradient()":"radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","relative-selector":"<combinator>? <complex-selector>","relative-selector-list":"<relative-selector>#","relative-size":"larger|smaller","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-conic-gradient()":"repeating-conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","repeating-linear-gradient()":"repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","repeating-radial-gradient()":"repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","rgb()":"rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )","rgba()":"rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )","rotate()":"rotate( [<angle>|<zero>] )","rotate3d()":"rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )","rotateX()":"rotateX( [<angle>|<zero>] )","rotateY()":"rotateY( [<angle>|<zero>] )","rotateZ()":"rotateZ( [<angle>|<zero>] )","saturate()":"saturate( <number-percentage> )","scale()":"scale( <number> , <number>? )","scale3d()":"scale3d( <number> , <number> , <number> )","scaleX()":"scaleX( <number> )","scaleY()":"scaleY( <number> )","scaleZ()":"scaleZ( <number> )","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","shape-radius":"<length-percentage>|closest-side|farthest-side","skew()":"skew( [<angle>|<zero>] , [<angle>|<zero>]? )","skewX()":"skewX( [<angle>|<zero>] )","skewY()":"skewY( [<angle>|<zero>] )","sepia()":"sepia( <number-percentage> )",shadow:"inset?&&<length>{2,4}&&<color>?","shadow-t":"[<length>{2,3}&&<color>?]",shape:"rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )","shape-box":"<box>|margin-box","side-or-corner":"[left|right]||[top|bottom]","single-animation":"<time>||<easing-function>||<time>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]","single-animation-direction":"normal|reverse|alternate|alternate-reverse","single-animation-fill-mode":"none|forwards|backwards|both","single-animation-iteration-count":"infinite|<number>","single-animation-play-state":"running|paused","single-animation-timeline":"auto|none|<timeline-name>","single-transition":"[none|<single-transition-property>]||<time>||<easing-function>||<time>","single-transition-property":"all|<custom-ident>",size:"closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}","step-position":"jump-start|jump-end|jump-none|jump-both|start|end","step-timing-function":"step-start|step-end|steps( <integer> [, <step-position>]? )","subclass-selector":"<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>","supports-condition":"not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*","supports-in-parens":"( <supports-condition> )|<supports-feature>|<general-enclosed>","supports-feature":"<supports-decl>|<supports-selector-fn>","supports-decl":"( <declaration> )","supports-selector-fn":"selector( <complex-selector> )",symbol:"<string>|<image>|<custom-ident>",target:"<target-counter()>|<target-counters()>|<target-text()>","target-counter()":"target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )","target-counters()":"target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )","target-text()":"target-text( [<string>|<url>] , [content|before|after|first-letter]? )","time-percentage":"<time>|<percentage>","timeline-name":"<custom-ident>|<string>","easing-function":"linear|<cubic-bezier-timing-function>|<step-timing-function>","track-breadth":"<length-percentage>|<flex>|min-content|max-content|auto","track-list":"[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?","track-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <track-size>]+ <line-names>? )","track-size":"<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( [<length>|<percentage>] )","transform-function":"<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>","transform-list":"<transform-function>+","translate()":"translate( <length-percentage> , <length-percentage>? )","translate3d()":"translate3d( <length-percentage> , <length-percentage> , <length> )","translateX()":"translateX( <length-percentage> )","translateY()":"translateY( <length-percentage> )","translateZ()":"translateZ( <length> )","type-or-unit":"string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%","type-selector":"<wq-name>|<ns-prefix>? '*'","var()":"var( <custom-property-name> , <declaration-value>? )","viewport-length":"auto|<length-percentage>","visual-box":"content-box|padding-box|border-box","wq-name":"<ns-prefix>? <ident-token>","-legacy-gradient":"<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>","-legacy-linear-gradient":"-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-repeating-linear-gradient":"-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-linear-gradient-arguments":"[<angle>|<side-or-corner>]? , <color-stop-list>","-legacy-radial-gradient":"-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-repeating-radial-gradient":"-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-radial-gradient-arguments":"[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>","-legacy-radial-gradient-size":"closest-side|closest-corner|farthest-side|farthest-corner|contain|cover","-legacy-radial-gradient-shape":"circle|ellipse","-non-standard-font":"-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body","-non-standard-color":"-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text","-non-standard-image-rendering":"optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast","-non-standard-overflow":"-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable","-non-standard-width":"fill-available|min-intrinsic|intrinsic|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content|-webkit-min-content|-webkit-max-content","-webkit-gradient()":"-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )","-webkit-gradient-color-stop":"from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )","-webkit-gradient-point":"[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]","-webkit-gradient-radius":"<length>|<percentage>","-webkit-gradient-type":"linear|radial","-webkit-mask-box-repeat":"repeat|stretch|round","-webkit-mask-clip-style":"border|border-box|padding|padding-box|content|content-box|text","-ms-filter-function-list":"<-ms-filter-function>+","-ms-filter-function":"<-ms-filter-function-progid>|<-ms-filter-function-legacy>","-ms-filter-function-progid":"'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]","-ms-filter-function-legacy":"<ident-token>|<function-token> <any-value>? )","-ms-filter":"<string>",age:"child|young|old","attr-name":"<wq-name>","attr-fallback":"<any-value>","bg-clip":"<box>|border|text","border-radius":"<length-percentage>{1,2}",bottom:"<length>|auto","generic-voice":"[<age>? <gender> <integer>?]",gender:"male|female|neutral","lab()":"lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","lch()":"lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )",left:"<length>|auto","mask-image":"<mask-reference>#",paint:"none|<color>|<url> [none|<color>]?|context-fill|context-stroke",ratio:"<number [0,\u221E]> [/ <number [0,\u221E]>]?","reversed-counter-name":"reversed( <counter-name> )",right:"<length>|auto","svg-length":"<percentage>|<length>|<number>","svg-writing-mode":"lr-tb|rl-tb|tb-rl|lr|rl|tb",top:"<length>|auto","track-group":"'(' [<string>* <track-minmax> <string>*]+ ')' ['[' <positive-integer> ']']?|<track-minmax>","track-list-v0":"[<string>* <track-group> <string>*]+|none","track-minmax":"minmax( <track-breadth> , <track-breadth> )|auto|<track-breadth>|fit-content",x:"<number>",y:"<number>",declaration:"<ident-token> : <declaration-value>? ['!' important]?","declaration-list":"[<declaration>? ';']* <declaration>?",url:"url( <string> <url-modifier>* )|<url-token>","url-modifier":"<ident>|<function-token> <any-value> )","number-zero-one":"<number [0,1]>","number-one-or-greater":"<number [1,\u221E]>","positive-integer":"<integer [0,\u221E]>","-non-standard-display":"-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box"},properties:{"--*":"<declaration-value>","-ms-accelerator":"false|true","-ms-block-progression":"tb|rl|bt|lr","-ms-content-zoom-chaining":"none|chained","-ms-content-zooming":"none|zoom","-ms-content-zoom-limit":"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>","-ms-content-zoom-limit-max":"<percentage>","-ms-content-zoom-limit-min":"<percentage>","-ms-content-zoom-snap":"<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>","-ms-content-zoom-snap-points":"snapInterval( <percentage> , <percentage> )|snapList( <percentage># )","-ms-content-zoom-snap-type":"none|proximity|mandatory","-ms-filter":"<string>","-ms-flow-from":"[none|<custom-ident>]#","-ms-flow-into":"[none|<custom-ident>]#","-ms-grid-columns":"none|<track-list>|<auto-track-list>","-ms-grid-rows":"none|<track-list>|<auto-track-list>","-ms-high-contrast-adjust":"auto|none","-ms-hyphenate-limit-chars":"auto|<integer>{1,3}","-ms-hyphenate-limit-lines":"no-limit|<integer>","-ms-hyphenate-limit-zone":"<percentage>|<length>","-ms-ime-align":"auto|after","-ms-overflow-style":"auto|none|scrollbar|-ms-autohiding-scrollbar","-ms-scrollbar-3dlight-color":"<color>","-ms-scrollbar-arrow-color":"<color>","-ms-scrollbar-base-color":"<color>","-ms-scrollbar-darkshadow-color":"<color>","-ms-scrollbar-face-color":"<color>","-ms-scrollbar-highlight-color":"<color>","-ms-scrollbar-shadow-color":"<color>","-ms-scrollbar-track-color":"<color>","-ms-scroll-chaining":"chained|none","-ms-scroll-limit":"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>","-ms-scroll-limit-x-max":"auto|<length>","-ms-scroll-limit-x-min":"<length>","-ms-scroll-limit-y-max":"auto|<length>","-ms-scroll-limit-y-min":"<length>","-ms-scroll-rails":"none|railed","-ms-scroll-snap-points-x":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-points-y":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-type":"none|proximity|mandatory","-ms-scroll-snap-x":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>","-ms-scroll-snap-y":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>","-ms-scroll-translation":"none|vertical-to-horizontal","-ms-text-autospace":"none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space","-ms-touch-select":"grippers|none","-ms-user-select":"none|element|text","-ms-wrap-flow":"auto|both|start|end|maximum|clear","-ms-wrap-margin":"<length>","-ms-wrap-through":"wrap|none","-moz-appearance":"none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized","-moz-binding":"<url>|none","-moz-border-bottom-colors":"<color>+|none","-moz-border-left-colors":"<color>+|none","-moz-border-right-colors":"<color>+|none","-moz-border-top-colors":"<color>+|none","-moz-context-properties":"none|[fill|fill-opacity|stroke|stroke-opacity]#","-moz-float-edge":"border-box|content-box|margin-box|padding-box","-moz-force-broken-image-icon":"0|1","-moz-image-region":"<shape>|auto","-moz-orient":"inline|block|horizontal|vertical","-moz-outline-radius":"<outline-radius>{1,4} [/ <outline-radius>{1,4}]?","-moz-outline-radius-bottomleft":"<outline-radius>","-moz-outline-radius-bottomright":"<outline-radius>","-moz-outline-radius-topleft":"<outline-radius>","-moz-outline-radius-topright":"<outline-radius>","-moz-stack-sizing":"ignore|stretch-to-fit","-moz-text-blink":"none|blink","-moz-user-focus":"ignore|normal|select-after|select-before|select-menu|select-same|select-all|none","-moz-user-input":"auto|none|enabled|disabled","-moz-user-modify":"read-only|read-write|write-only","-moz-window-dragging":"drag|no-drag","-moz-window-shadow":"default|menu|tooltip|sheet|none","-webkit-appearance":"none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button","-webkit-border-before":"<'border-width'>||<'border-style'>||<color>","-webkit-border-before-color":"<color>","-webkit-border-before-style":"<'border-style'>","-webkit-border-before-width":"<'border-width'>","-webkit-box-reflect":"[above|below|right|left]? <length>? <image>?","-webkit-line-clamp":"none|<integer>","-webkit-mask":"[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#","-webkit-mask-attachment":"<attachment>#","-webkit-mask-clip":"[<box>|border|padding|content|text]#","-webkit-mask-composite":"<composite-style>#","-webkit-mask-image":"<mask-reference>#","-webkit-mask-origin":"[<box>|border|padding|content]#","-webkit-mask-position":"<position>#","-webkit-mask-position-x":"[<length-percentage>|left|center|right]#","-webkit-mask-position-y":"[<length-percentage>|top|center|bottom]#","-webkit-mask-repeat":"<repeat-style>#","-webkit-mask-repeat-x":"repeat|no-repeat|space|round","-webkit-mask-repeat-y":"repeat|no-repeat|space|round","-webkit-mask-size":"<bg-size>#","-webkit-overflow-scrolling":"auto|touch","-webkit-tap-highlight-color":"<color>","-webkit-text-fill-color":"<color>","-webkit-text-stroke":"<length>||<color>","-webkit-text-stroke-color":"<color>","-webkit-text-stroke-width":"<length>","-webkit-touch-callout":"default|none","-webkit-user-modify":"read-only|read-write|read-write-plaintext-only","accent-color":"auto|<color>","align-content":"normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>","align-items":"normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]","align-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>","align-tracks":"[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#",all:"initial|inherit|unset|revert|revert-layer",animation:"<single-animation>#","animation-delay":"<time>#","animation-direction":"<single-animation-direction>#","animation-duration":"<time>#","animation-fill-mode":"<single-animation-fill-mode>#","animation-iteration-count":"<single-animation-iteration-count>#","animation-name":"[none|<keyframes-name>]#","animation-play-state":"<single-animation-play-state>#","animation-timing-function":"<easing-function>#","animation-timeline":"<single-animation-timeline>#",appearance:"none|auto|textfield|menulist-button|<compat-auto>","aspect-ratio":"auto|<ratio>",azimuth:"<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards","backdrop-filter":"none|<filter-function-list>","backface-visibility":"visible|hidden",background:"[<bg-layer> ,]* <final-bg-layer>","background-attachment":"<attachment>#","background-blend-mode":"<blend-mode>#","background-clip":"<bg-clip>#","background-color":"<color>","background-image":"<bg-image>#","background-origin":"<box>#","background-position":"<bg-position>#","background-position-x":"[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#","background-position-y":"[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#","background-repeat":"<repeat-style>#","background-size":"<bg-size>#","block-overflow":"clip|ellipsis|<string>","block-size":"<'width'>",border:"<line-width>||<line-style>||<color>","border-block":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-color":"<'border-top-color'>{1,2}","border-block-style":"<'border-top-style'>","border-block-width":"<'border-top-width'>","border-block-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-end-color":"<'border-top-color'>","border-block-end-style":"<'border-top-style'>","border-block-end-width":"<'border-top-width'>","border-block-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-start-color":"<'border-top-color'>","border-block-start-style":"<'border-top-style'>","border-block-start-width":"<'border-top-width'>","border-bottom":"<line-width>||<line-style>||<color>","border-bottom-color":"<'border-top-color'>","border-bottom-left-radius":"<length-percentage>{1,2}","border-bottom-right-radius":"<length-percentage>{1,2}","border-bottom-style":"<line-style>","border-bottom-width":"<line-width>","border-collapse":"collapse|separate","border-color":"<color>{1,4}","border-end-end-radius":"<length-percentage>{1,2}","border-end-start-radius":"<length-percentage>{1,2}","border-image":"<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>","border-image-outset":"[<length>|<number>]{1,4}","border-image-repeat":"[stretch|repeat|round|space]{1,2}","border-image-slice":"<number-percentage>{1,4}&&fill?","border-image-source":"none|<image>","border-image-width":"[<length-percentage>|<number>|auto]{1,4}","border-inline":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-color":"<'border-top-color'>{1,2}","border-inline-style":"<'border-top-style'>","border-inline-width":"<'border-top-width'>","border-inline-end-color":"<'border-top-color'>","border-inline-end-style":"<'border-top-style'>","border-inline-end-width":"<'border-top-width'>","border-inline-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-start-color":"<'border-top-color'>","border-inline-start-style":"<'border-top-style'>","border-inline-start-width":"<'border-top-width'>","border-left":"<line-width>||<line-style>||<color>","border-left-color":"<color>","border-left-style":"<line-style>","border-left-width":"<line-width>","border-radius":"<length-percentage>{1,4} [/ <length-percentage>{1,4}]?","border-right":"<line-width>||<line-style>||<color>","border-right-color":"<color>","border-right-style":"<line-style>","border-right-width":"<line-width>","border-spacing":"<length> <length>?","border-start-end-radius":"<length-percentage>{1,2}","border-start-start-radius":"<length-percentage>{1,2}","border-style":"<line-style>{1,4}","border-top":"<line-width>||<line-style>||<color>","border-top-color":"<color>","border-top-left-radius":"<length-percentage>{1,2}","border-top-right-radius":"<length-percentage>{1,2}","border-top-style":"<line-style>","border-top-width":"<line-width>","border-width":"<line-width>{1,4}",bottom:"<length>|<percentage>|auto","box-align":"start|center|end|baseline|stretch","box-decoration-break":"slice|clone","box-direction":"normal|reverse|inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single|multiple","box-ordinal-group":"<integer>","box-orient":"horizontal|vertical|inline-axis|block-axis|inherit","box-pack":"start|center|end|justify","box-shadow":"none|<shadow>#","box-sizing":"content-box|border-box","break-after":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-before":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-inside":"auto|avoid|avoid-page|avoid-column|avoid-region","caption-side":"top|bottom|block-start|block-end|inline-start|inline-end","caret-color":"auto|<color>",clear:"none|left|right|both|inline-start|inline-end",clip:"<shape>|auto","clip-path":"<clip-source>|[<basic-shape>||<geometry-box>]|none",color:"<color>","print-color-adjust":"economy|exact","color-scheme":"normal|[light|dark|<custom-ident>]+&&only?","column-count":"<integer>|auto","column-fill":"auto|balance|balance-all","column-gap":"normal|<length-percentage>","column-rule":"<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>","column-rule-color":"<color>","column-rule-style":"<'border-style'>","column-rule-width":"<'border-width'>","column-span":"none|all","column-width":"<length>|auto",columns:"<'column-width'>||<'column-count'>",contain:"none|strict|content|[size||layout||style||paint]",content:"normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>]+]?","content-visibility":"visible|auto|hidden","counter-increment":"[<counter-name> <integer>?]+|none","counter-reset":"[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none","counter-set":"[<counter-name> <integer>?]+|none",cursor:"[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",direction:"ltr|rtl",display:"[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>","empty-cells":"show|hide",filter:"none|<filter-function-list>|<-ms-filter-function-list>",flex:"none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]","flex-basis":"content|<'width'>","flex-direction":"row|row-reverse|column|column-reverse","flex-flow":"<'flex-direction'>||<'flex-wrap'>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap|wrap|wrap-reverse",float:"left|right|none|inline-start|inline-end",font:"[[<'font-style'>||<font-variant-css21>||<'font-weight'>||<'font-stretch'>]? <'font-size'> [/ <'line-height'>]? <'font-family'>]|caption|icon|menu|message-box|small-caption|status-bar","font-family":"[<family-name>|<generic-family>]#","font-feature-settings":"normal|<feature-tag-value>#","font-kerning":"auto|normal|none","font-language-override":"normal|<string>","font-optical-sizing":"auto|none","font-variation-settings":"normal|[<string> <number>]#","font-size":"<absolute-size>|<relative-size>|<length-percentage>","font-size-adjust":"none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]","font-smooth":"auto|never|always|<absolute-size>|<length>","font-stretch":"<font-stretch-absolute>","font-style":"normal|italic|oblique <angle>?","font-synthesis":"none|[weight||style||small-caps]","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-alternates":"normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]","font-variant-caps":"normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps","font-variant-east-asian":"normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-ligatures":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]","font-variant-numeric":"normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]","font-variant-position":"normal|sub|super","font-weight":"<font-weight-absolute>|bolder|lighter","forced-color-adjust":"auto|none",gap:"<'row-gap'> <'column-gap'>?",grid:"<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>","grid-area":"<grid-line> [/ <grid-line>]{0,3}","grid-auto-columns":"<track-size>+","grid-auto-flow":"[row|column]||dense","grid-auto-rows":"<track-size>+","grid-column":"<grid-line> [/ <grid-line>]?","grid-column-end":"<grid-line>","grid-column-gap":"<length-percentage>","grid-column-start":"<grid-line>","grid-gap":"<'grid-row-gap'> <'grid-column-gap'>?","grid-row":"<grid-line> [/ <grid-line>]?","grid-row-end":"<grid-line>","grid-row-gap":"<length-percentage>","grid-row-start":"<grid-line>","grid-template":"none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?","grid-template-areas":"none|<string>+","grid-template-columns":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","grid-template-rows":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","hanging-punctuation":"none|[first||[force-end|allow-end]||last]",height:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","hyphenate-character":"auto|<string>",hyphens:"none|manual|auto","image-orientation":"from-image|<angle>|[<angle>? flip]","image-rendering":"auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>","image-resolution":"[from-image||<resolution>]&&snap?","ime-mode":"auto|normal|active|inactive|disabled","initial-letter":"normal|[<number> <integer>?]","initial-letter-align":"[auto|alphabetic|hanging|ideographic]","inline-size":"<'width'>","input-security":"auto|none",inset:"<'top'>{1,4}","inset-block":"<'top'>{1,2}","inset-block-end":"<'top'>","inset-block-start":"<'top'>","inset-inline":"<'top'>{1,2}","inset-inline-end":"<'top'>","inset-inline-start":"<'top'>",isolation:"auto|isolate","justify-content":"normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]","justify-items":"normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]","justify-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]","justify-tracks":"[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",left:"<length>|<percentage>|auto","letter-spacing":"normal|<length-percentage>","line-break":"auto|loose|normal|strict|anywhere","line-clamp":"none|<integer>","line-height":"normal|<number>|<length>|<percentage>","line-height-step":"<length>","list-style":"<'list-style-type'>||<'list-style-position'>||<'list-style-image'>","list-style-image":"<image>|none","list-style-position":"inside|outside","list-style-type":"<counter-style>|<string>|none",margin:"[<length>|<percentage>|auto]{1,4}","margin-block":"<'margin-left'>{1,2}","margin-block-end":"<'margin-left'>","margin-block-start":"<'margin-left'>","margin-bottom":"<length>|<percentage>|auto","margin-inline":"<'margin-left'>{1,2}","margin-inline-end":"<'margin-left'>","margin-inline-start":"<'margin-left'>","margin-left":"<length>|<percentage>|auto","margin-right":"<length>|<percentage>|auto","margin-top":"<length>|<percentage>|auto","margin-trim":"none|in-flow|all",mask:"<mask-layer>#","mask-border":"<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>","mask-border-mode":"luminance|alpha","mask-border-outset":"[<length>|<number>]{1,4}","mask-border-repeat":"[stretch|repeat|round|space]{1,2}","mask-border-slice":"<number-percentage>{1,4} fill?","mask-border-source":"none|<image>","mask-border-width":"[<length-percentage>|<number>|auto]{1,4}","mask-clip":"[<geometry-box>|no-clip]#","mask-composite":"<compositing-operator>#","mask-image":"<mask-reference>#","mask-mode":"<masking-mode>#","mask-origin":"<geometry-box>#","mask-position":"<position>#","mask-repeat":"<repeat-style>#","mask-size":"<bg-size>#","mask-type":"luminance|alpha","masonry-auto-flow":"[pack|next]||[definite-first|ordered]","math-style":"normal|compact","max-block-size":"<'max-width'>","max-height":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","max-inline-size":"<'max-width'>","max-lines":"none|<integer>","max-width":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","min-block-size":"<'min-width'>","min-height":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","min-inline-size":"<'min-width'>","min-width":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","mix-blend-mode":"<blend-mode>|plus-lighter","object-fit":"fill|contain|cover|none|scale-down","object-position":"<position>",offset:"[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?","offset-anchor":"auto|<position>","offset-distance":"<length-percentage>","offset-path":"none|ray( [<angle>&&<size>&&contain?] )|<path()>|<url>|[<basic-shape>||<geometry-box>]","offset-position":"auto|<position>","offset-rotate":"[auto|reverse]||<angle>",opacity:"<alpha-value>",order:"<integer>",orphans:"<integer>",outline:"[<'outline-color'>||<'outline-style'>||<'outline-width'>]","outline-color":"<color>|invert","outline-offset":"<length>","outline-style":"auto|<'border-style'>","outline-width":"<line-width>",overflow:"[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>","overflow-anchor":"auto|none","overflow-block":"visible|hidden|clip|scroll|auto","overflow-clip-box":"padding-box|content-box","overflow-clip-margin":"<visual-box>||<length [0,\u221E]>","overflow-inline":"visible|hidden|clip|scroll|auto","overflow-wrap":"normal|break-word|anywhere","overflow-x":"visible|hidden|clip|scroll|auto","overflow-y":"visible|hidden|clip|scroll|auto","overscroll-behavior":"[contain|none|auto]{1,2}","overscroll-behavior-block":"contain|none|auto","overscroll-behavior-inline":"contain|none|auto","overscroll-behavior-x":"contain|none|auto","overscroll-behavior-y":"contain|none|auto",padding:"[<length>|<percentage>]{1,4}","padding-block":"<'padding-left'>{1,2}","padding-block-end":"<'padding-left'>","padding-block-start":"<'padding-left'>","padding-bottom":"<length>|<percentage>","padding-inline":"<'padding-left'>{1,2}","padding-inline-end":"<'padding-left'>","padding-inline-start":"<'padding-left'>","padding-left":"<length>|<percentage>","padding-right":"<length>|<percentage>","padding-top":"<length>|<percentage>","page-break-after":"auto|always|avoid|left|right|recto|verso","page-break-before":"auto|always|avoid|left|right|recto|verso","page-break-inside":"auto|avoid","paint-order":"normal|[fill||stroke||markers]",perspective:"none|<length>","perspective-origin":"<position>","place-content":"<'align-content'> <'justify-content'>?","place-items":"<'align-items'> <'justify-items'>?","place-self":"<'align-self'> <'justify-self'>?","pointer-events":"auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",position:"static|relative|absolute|sticky|fixed|-webkit-sticky",quotes:"none|auto|[<string> <string>]+",resize:"none|both|horizontal|vertical|block|inline",right:"<length>|<percentage>|auto",rotate:"none|<angle>|[x|y|z|<number>{3}]&&<angle>","row-gap":"normal|<length-percentage>","ruby-align":"start|center|space-between|space-around","ruby-merge":"separate|collapse|auto","ruby-position":"[alternate||[over|under]]|inter-character",scale:"none|<number>{1,3}","scrollbar-color":"auto|<color>{2}","scrollbar-gutter":"auto|stable&&both-edges?","scrollbar-width":"auto|thin|none","scroll-behavior":"auto|smooth","scroll-margin":"<length>{1,4}","scroll-margin-block":"<length>{1,2}","scroll-margin-block-start":"<length>","scroll-margin-block-end":"<length>","scroll-margin-bottom":"<length>","scroll-margin-inline":"<length>{1,2}","scroll-margin-inline-start":"<length>","scroll-margin-inline-end":"<length>","scroll-margin-left":"<length>","scroll-margin-right":"<length>","scroll-margin-top":"<length>","scroll-padding":"[auto|<length-percentage>]{1,4}","scroll-padding-block":"[auto|<length-percentage>]{1,2}","scroll-padding-block-start":"auto|<length-percentage>","scroll-padding-block-end":"auto|<length-percentage>","scroll-padding-bottom":"auto|<length-percentage>","scroll-padding-inline":"[auto|<length-percentage>]{1,2}","scroll-padding-inline-start":"auto|<length-percentage>","scroll-padding-inline-end":"auto|<length-percentage>","scroll-padding-left":"auto|<length-percentage>","scroll-padding-right":"auto|<length-percentage>","scroll-padding-top":"auto|<length-percentage>","scroll-snap-align":"[none|start|end|center]{1,2}","scroll-snap-coordinate":"none|<position>#","scroll-snap-destination":"<position>","scroll-snap-points-x":"none|repeat( <length-percentage> )","scroll-snap-points-y":"none|repeat( <length-percentage> )","scroll-snap-stop":"normal|always","scroll-snap-type":"none|[x|y|block|inline|both] [mandatory|proximity]?","scroll-snap-type-x":"none|mandatory|proximity","scroll-snap-type-y":"none|mandatory|proximity","shape-image-threshold":"<alpha-value>","shape-margin":"<length-percentage>","shape-outside":"none|[<shape-box>||<basic-shape>]|<image>","tab-size":"<integer>|<length>","table-layout":"auto|fixed","text-align":"start|end|left|right|center|justify|match-parent","text-align-last":"auto|start|end|left|right|center|justify","text-combine-upright":"none|all|[digits <integer>?]","text-decoration":"<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>","text-decoration-color":"<color>","text-decoration-line":"none|[underline||overline||line-through||blink]|spelling-error|grammar-error","text-decoration-skip":"none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]","text-decoration-skip-ink":"auto|all|none","text-decoration-style":"solid|double|dotted|dashed|wavy","text-decoration-thickness":"auto|from-font|<length>|<percentage>","text-emphasis":"<'text-emphasis-style'>||<'text-emphasis-color'>","text-emphasis-color":"<color>","text-emphasis-position":"[over|under]&&[right|left]","text-emphasis-style":"none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>","text-indent":"<length-percentage>&&hanging?&&each-line?","text-justify":"auto|inter-character|inter-word|none","text-orientation":"mixed|upright|sideways","text-overflow":"[clip|ellipsis|<string>]{1,2}","text-rendering":"auto|optimizeSpeed|optimizeLegibility|geometricPrecision","text-shadow":"none|<shadow-t>#","text-size-adjust":"none|auto|<percentage>","text-transform":"none|capitalize|uppercase|lowercase|full-width|full-size-kana","text-underline-offset":"auto|<length>|<percentage>","text-underline-position":"auto|from-font|[under||[left|right]]",top:"<length>|<percentage>|auto","touch-action":"auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",transform:"none|<transform-list>","transform-box":"content-box|border-box|fill-box|stroke-box|view-box","transform-origin":"[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?","transform-style":"flat|preserve-3d",transition:"<single-transition>#","transition-delay":"<time>#","transition-duration":"<time>#","transition-property":"none|<single-transition-property>#","transition-timing-function":"<easing-function>#",translate:"none|<length-percentage> [<length-percentage> <length>?]?","unicode-bidi":"normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext","user-select":"auto|text|none|contain|all","vertical-align":"baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>",visibility:"visible|hidden|collapse","white-space":"normal|pre|nowrap|pre-wrap|pre-line|break-spaces",widows:"<integer>",width:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|fill|stretch|intrinsic|-moz-max-content|-webkit-max-content|-moz-fit-content|-webkit-fit-content","will-change":"auto|<animateable-feature>#","word-break":"normal|break-all|keep-all|break-word","word-spacing":"normal|<length>","word-wrap":"normal|break-word","writing-mode":"horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>","z-index":"auto|<integer>",zoom:"normal|reset|<number>|<percentage>","-moz-background-clip":"padding|border","-moz-border-radius-bottomleft":"<'border-bottom-left-radius'>","-moz-border-radius-bottomright":"<'border-bottom-right-radius'>","-moz-border-radius-topleft":"<'border-top-left-radius'>","-moz-border-radius-topright":"<'border-bottom-right-radius'>","-moz-control-character-visibility":"visible|hidden","-moz-osx-font-smoothing":"auto|grayscale","-moz-user-select":"none|text|all|-moz-none","-ms-flex-align":"start|end|center|baseline|stretch","-ms-flex-item-align":"auto|start|end|center|baseline|stretch","-ms-flex-line-pack":"start|end|center|justify|distribute|stretch","-ms-flex-negative":"<'flex-shrink'>","-ms-flex-pack":"start|end|center|justify|distribute","-ms-flex-order":"<integer>","-ms-flex-positive":"<'flex-grow'>","-ms-flex-preferred-size":"<'flex-basis'>","-ms-interpolation-mode":"nearest-neighbor|bicubic","-ms-grid-column-align":"start|end|center|stretch","-ms-grid-row-align":"start|end|center|stretch","-ms-hyphenate-limit-last":"none|always|column|page|spread","-webkit-background-clip":"[<box>|border|padding|content|text]#","-webkit-column-break-after":"always|auto|avoid","-webkit-column-break-before":"always|auto|avoid","-webkit-column-break-inside":"always|auto|avoid","-webkit-font-smoothing":"auto|none|antialiased|subpixel-antialiased","-webkit-mask-box-image":"[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?","-webkit-print-color-adjust":"economy|exact","-webkit-text-security":"none|circle|disc|square","-webkit-user-drag":"none|element|auto","-webkit-user-select":"auto|none|text|all","alignment-baseline":"auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical","baseline-shift":"baseline|sub|super|<svg-length>",behavior:"<url>+","clip-rule":"nonzero|evenodd",cue:"<'cue-before'> <'cue-after'>?","cue-after":"<url> <decibel>?|none","cue-before":"<url> <decibel>?|none","dominant-baseline":"auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge",fill:"<paint>","fill-opacity":"<number-zero-one>","fill-rule":"nonzero|evenodd","glyph-orientation-horizontal":"<angle>","glyph-orientation-vertical":"<angle>",kerning:"auto|<svg-length>",marker:"none|<url>","marker-end":"none|<url>","marker-mid":"none|<url>","marker-start":"none|<url>",pause:"<'pause-before'> <'pause-after'>?","pause-after":"<time>|none|x-weak|weak|medium|strong|x-strong","pause-before":"<time>|none|x-weak|weak|medium|strong|x-strong",rest:"<'rest-before'> <'rest-after'>?","rest-after":"<time>|none|x-weak|weak|medium|strong|x-strong","rest-before":"<time>|none|x-weak|weak|medium|strong|x-strong","shape-rendering":"auto|optimizeSpeed|crispEdges|geometricPrecision",src:"[<url> [format( <string># )]?|local( <family-name> )]#",speak:"auto|none|normal","speak-as":"normal|spell-out||digits||[literal-punctuation|no-punctuation]",stroke:"<paint>","stroke-dasharray":"none|[<svg-length>+]#","stroke-dashoffset":"<svg-length>","stroke-linecap":"butt|round|square","stroke-linejoin":"miter|round|bevel","stroke-miterlimit":"<number-one-or-greater>","stroke-opacity":"<number-zero-one>","stroke-width":"<svg-length>","text-anchor":"start|middle|end","unicode-range":"<urange>#","voice-balance":"<number>|left|center|right|leftwards|rightwards","voice-duration":"auto|<time>","voice-family":"[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve","voice-pitch":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-range":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-rate":"[normal|x-slow|slow|medium|fast|x-fast]||<percentage>","voice-stress":"normal|strong|moderate|none|reduced","voice-volume":"silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]"},atrules:{charset:{prelude:"<string>",descriptors:null},"counter-style":{prelude:"<counter-style-name>",descriptors:{"additive-symbols":"[<integer>&&<symbol>]#",fallback:"<counter-style-name>",negative:"<symbol> <symbol>?",pad:"<integer>&&<symbol>",prefix:"<symbol>",range:"[[<integer>|infinite]{2}]#|auto","speak-as":"auto|bullets|numbers|words|spell-out|<counter-style-name>",suffix:"<symbol>",symbols:"<symbol>+",system:"cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"}},document:{prelude:"[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",descriptors:null},"font-face":{prelude:null,descriptors:{"ascent-override":"normal|<percentage>","descent-override":"normal|<percentage>","font-display":"[auto|block|swap|fallback|optional]","font-family":"<family-name>","font-feature-settings":"normal|<feature-tag-value>#","font-variation-settings":"normal|[<string> <number>]#","font-stretch":"<font-stretch-absolute>{1,2}","font-style":"normal|italic|oblique <angle>{0,2}","font-weight":"<font-weight-absolute>{1,2}","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","line-gap-override":"normal|<percentage>","size-adjust":"<percentage>",src:"[<url> [format( <string># )]?|local( <family-name> )]#","unicode-range":"<urange>#"}},"font-feature-values":{prelude:"<family-name>#",descriptors:null},import:{prelude:"[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?",descriptors:null},keyframes:{prelude:"<keyframes-name>",descriptors:null},layer:{prelude:"[<layer-name>#|<layer-name>?]",descriptors:null},media:{prelude:"<media-query-list>",descriptors:null},namespace:{prelude:"<namespace-prefix>? [<string>|<url>]",descriptors:null},page:{prelude:"<page-selector-list>",descriptors:{bleed:"auto|<length>",marks:"none|[crop||cross]",size:"<length>{1,2}|auto|[<page-size>||[portrait|landscape]]"}},property:{prelude:"<custom-property-name>",descriptors:{syntax:"<string>",inherits:"true|false","initial-value":"<string>"}},"scroll-timeline":{prelude:"<timeline-name>",descriptors:null},supports:{prelude:"<supports-condition>",descriptors:null},viewport:{prelude:null,descriptors:{height:"<viewport-length>{1,2}","max-height":"<viewport-length>","max-width":"<viewport-length>","max-zoom":"auto|<number>|<percentage>","min-height":"<viewport-length>","min-width":"<viewport-length>","min-zoom":"auto|<number>|<percentage>",orientation:"auto|portrait|landscape","user-zoom":"zoom|fixed","viewport-fit":"auto|contain|cover",width:"<viewport-length>{1,2}",zoom:"auto|<number>|<percentage>"}}}};var It={};y(It,{AnPlusB:()=>kn,Atrule:()=>vn,AtrulePrelude:()=>Cn,AttributeSelector:()=>Tn,Block:()=>Pn,Brackets:()=>On,CDC:()=>Nn,CDO:()=>Rn,ClassSelector:()=>Fn,Combinator:()=>_n,Comment:()=>jn,Declaration:()=>Hn,DeclarationList:()=>Yn,Dimension:()=>Gn,Function:()=>Qn,Hash:()=>Xn,IdSelector:()=>to,Identifier:()=>Jn,MediaFeature:()=>no,MediaQuery:()=>io,MediaQueryList:()=>so,Nth:()=>co,Number:()=>po,Operator:()=>fo,Parentheses:()=>go,Percentage:()=>yo,PseudoClassSelector:()=>ko,PseudoElementSelector:()=>vo,Ratio:()=>Co,Raw:()=>Eo,Rule:()=>Lo,Selector:()=>Io,SelectorList:()=>Do,String:()=>zo,StyleSheet:()=>Bo,TypeSelector:()=>jo,UnicodeRange:()=>Wo,Url:()=>Qo,Value:()=>Xo,WhiteSpace:()=>Jo});var kn={};y(kn,{generate:()=>Ju,name:()=>Xu,parse:()=>xn,structure:()=>Zu});var be=43,ie=45,mr=110,Fe=!0,$u=!1;function dr(e,t){let r=this.tokenStart+e,n=this.charCodeAt(r);for((n===be||n===ie)&&(t&&this.error("Number sign is not allowed"),r++);r<this.tokenEnd;r++)j(this.charCodeAt(r))||this.error("Integer is expected",r)}function rt(e){return dr.call(this,0,e)}function Ie(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let r="";switch(t){case mr:r="N is expected";break;case ie:r="HyphenMinus is expected";break}this.error(r,this.tokenStart+e)}}function yn(){let e=0,t=0,r=this.tokenType;for(;r===13||r===25;)r=this.lookupType(++e);if(r!==10)if(this.isDelim(be,e)||this.isDelim(ie,e)){t=this.isDelim(be,e)?be:ie;do r=this.lookupType(++e);while(r===13||r===25);r!==10&&(this.skip(e),rt.call(this,Fe))}else return null;return e>0&&this.skip(e),t===0&&(r=this.charCodeAt(this.tokenStart),r!==be&&r!==ie&&this.error("Number sign is expected")),rt.call(this,t!==0),t===ie?"-"+this.consume(10):this.consume(10)}var Xu="AnPlusB",Zu={a:[String,null],b:[String,null]};function xn(){let e=this.tokenStart,t=null,r=null;if(this.tokenType===10)rt.call(this,$u),r=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,ie))switch(t="-1",Ie.call(this,1,mr),this.tokenEnd-this.tokenStart){case 2:this.next(),r=yn.call(this);break;case 3:Ie.call(this,2,ie),this.next(),this.skipSC(),rt.call(this,Fe),r="-"+this.consume(10);break;default:Ie.call(this,2,ie),dr.call(this,3,Fe),this.next(),r=this.substrToCursor(e+2)}else if(this.tokenType===1||this.isDelim(be)&&this.lookupType(1)===1){let n=0;switch(t="1",this.isDelim(be)&&(n=1,this.next()),Ie.call(this,0,mr),this.tokenEnd-this.tokenStart){case 1:this.next(),r=yn.call(this);break;case 2:Ie.call(this,1,ie),this.next(),this.skipSC(),rt.call(this,Fe),r="-"+this.consume(10);break;default:Ie.call(this,1,ie),dr.call(this,2,Fe),this.next(),r=this.substrToCursor(e+n+1)}}else if(this.tokenType===12){let n=this.charCodeAt(this.tokenStart),o=n===be||n===ie,i=this.tokenStart+o;for(;i<this.tokenEnd&&j(this.charCodeAt(i));i++);i===this.tokenStart+o&&this.error("Integer is expected",this.tokenStart+o),Ie.call(this,i-this.tokenStart,mr),t=this.substring(e,i),i+1===this.tokenEnd?(this.next(),r=yn.call(this)):(Ie.call(this,i-this.tokenStart+1,ie),i+2===this.tokenEnd?(this.next(),this.skipSC(),rt.call(this,Fe),r="-"+this.consume(10)):(dr.call(this,i-this.tokenStart+2,Fe),this.next(),r=this.substrToCursor(i+1)))}else this.error();return t!==null&&t.charCodeAt(0)===be&&(t=t.substr(1)),r!==null&&r.charCodeAt(0)===be&&(r=r.substr(1)),{type:"AnPlusB",loc:this.getLocation(e,this.tokenStart),a:t,b:r}}function Ju(e){if(e.a){let t=e.a==="+1"&&"n"||e.a==="1"&&"n"||e.a==="-1"&&"-n"||e.a+"n";if(e.b){let r=e.b[0]==="-"||e.b[0]==="+"?e.b:"+"+e.b;this.tokenize(t+r)}else this.tokenize(t)}else this.tokenize(e.b)}var vn={};y(vn,{generate:()=>op,name:()=>tp,parse:()=>wn,structure:()=>np,walkContext:()=>rp});function gs(e){return this.Raw(e,this.consumeUntilLeftCurlyBracketOrSemicolon,!0)}function ep(){for(let e=1,t;t=this.lookupType(e);e++){if(t===24)return!0;if(t===23||t===3)return!1}return!1}var tp="Atrule",rp="atrule",np={name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]};function wn(){let e=this.tokenStart,t,r,n=null,o=null;switch(this.eat(3),t=this.substrToCursor(e+1),r=t.toLowerCase(),this.skipSC(),this.eof===!1&&this.tokenType!==23&&this.tokenType!==17&&(this.parseAtrulePrelude?n=this.parseWithFallback(this.AtrulePrelude.bind(this,t),gs):n=gs.call(this,this.tokenIndex),this.skipSC()),this.tokenType){case 17:this.next();break;case 23:hasOwnProperty.call(this.atrule,r)&&typeof this.atrule[r].block=="function"?o=this.atrule[r].block.call(this):o=this.Block(ep.call(this));break}return{type:"Atrule",loc:this.getLocation(e,this.tokenStart),name:t,prelude:n,block:o}}function op(e){this.token(3,"@"+e.name),e.prelude!==null&&this.node(e.prelude),e.block?this.node(e.block):this.token(17,";")}var Cn={};y(Cn,{generate:()=>lp,name:()=>ip,parse:()=>Sn,structure:()=>sp,walkContext:()=>ap});var ip="AtrulePrelude",ap="atrulePrelude",sp={children:[[]]};function Sn(e){let t=null;return e!==null&&(e=e.toLowerCase()),this.skipSC(),hasOwnProperty.call(this.atrule,e)&&typeof this.atrule[e].prelude=="function"?t=this.atrule[e].prelude.call(this):t=this.readSequence(this.scope.AtrulePrelude),this.skipSC(),this.eof!==!0&&this.tokenType!==23&&this.tokenType!==17&&this.error("Semicolon or block is expected"),{type:"AtrulePrelude",loc:this.getLocationFromList(t),children:t}}function lp(e){this.children(e)}var Tn={};y(Tn,{generate:()=>gp,name:()=>mp,parse:()=>En,structure:()=>dp});var cp=36,bs=42,gr=61,up=94,An=124,pp=126;function hp(){this.eof&&this.error("Unexpected end of input");let e=this.tokenStart,t=!1;return this.isDelim(bs)?(t=!0,this.next()):this.isDelim(An)||this.eat(1),this.isDelim(An)?this.charCodeAt(this.tokenStart+1)!==gr?(this.next(),this.eat(1)):t&&this.error("Identifier is expected",this.tokenEnd):t&&this.error("Vertical line is expected"),{type:"Identifier",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function fp(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==gr&&t!==pp&&t!==up&&t!==cp&&t!==bs&&t!==An&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.next(),t!==gr&&(this.isDelim(gr)||this.error("Equal sign is expected"),this.next()),this.substrToCursor(e)}var mp="AttributeSelector",dp={name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]};function En(){let e=this.tokenStart,t,r=null,n=null,o=null;return this.eat(19),this.skipSC(),t=hp.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(r=fp.call(this),this.skipSC(),n=this.tokenType===5?this.String():this.Identifier(),this.skipSC()),this.tokenType===1&&(o=this.consume(1),this.skipSC())),this.eat(20),{type:"AttributeSelector",loc:this.getLocation(e,this.tokenStart),name:t,matcher:r,value:n,flags:o}}function gp(e){this.token(9,"["),this.node(e.name),e.matcher!==null&&(this.tokenize(e.matcher),this.node(e.value)),e.flags!==null&&this.token(1,e.flags),this.token(9,"]")}var Pn={};y(Pn,{generate:()=>vp,name:()=>xp,parse:()=>Ln,structure:()=>wp,walkContext:()=>kp});function xs(e){return this.Raw(e,null,!0)}function bp(){return this.parseWithFallback(this.Rule,xs)}function ys(e){return this.Raw(e,this.consumeUntilSemicolonIncluded,!0)}function yp(){if(this.tokenType===17)return ys.call(this,this.tokenIndex);let e=this.parseWithFallback(this.Declaration,ys);return this.tokenType===17&&this.next(),e}var xp="Block",kp="block",wp={children:[["Atrule","Rule","Declaration"]]};function Ln(e){let t=e?yp:bp,r=this.tokenStart,n=this.createList();this.eat(23);e:for(;!this.eof;)switch(this.tokenType){case 24:break e;case 13:case 25:this.next();break;case 3:n.push(this.parseWithFallback(this.Atrule,xs));break;default:n.push(t.call(this))}return this.eof||this.eat(24),{type:"Block",loc:this.getLocation(r,this.tokenStart),children:n}}function vp(e){this.token(23,"{"),this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")}),this.token(24,"}")}var On={};y(On,{generate:()=>Ap,name:()=>Sp,parse:()=>In,structure:()=>Cp});var Sp="Brackets",Cp={children:[[]]};function In(e,t){let r=this.tokenStart,n=null;return this.eat(19),n=e.call(this,t),this.eof||this.eat(20),{type:"Brackets",loc:this.getLocation(r,this.tokenStart),children:n}}function Ap(e){this.token(9,"["),this.children(e),this.token(9,"]")}var Nn={};y(Nn,{generate:()=>Lp,name:()=>Ep,parse:()=>Dn,structure:()=>Tp});var Ep="CDC",Tp=[];function Dn(){let e=this.tokenStart;return this.eat(15),{type:"CDC",loc:this.getLocation(e,this.tokenStart)}}function Lp(){this.token(15,"-->")}var Rn={};y(Rn,{generate:()=>Op,name:()=>Pp,parse:()=>Mn,structure:()=>Ip});var Pp="CDO",Ip=[];function Mn(){let e=this.tokenStart;return this.eat(14),{type:"CDO",loc:this.getLocation(e,this.tokenStart)}}function Op(){this.token(14,"<!--")}var Fn={};y(Fn,{generate:()=>Rp,name:()=>Np,parse:()=>zn,structure:()=>Mp});var Dp=46,Np="ClassSelector",Mp={name:String};function zn(){return this.eatDelim(Dp),{type:"ClassSelector",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function Rp(e){this.token(9,"."),this.token(1,e.name)}var _n={};y(_n,{generate:()=>jp,name:()=>_p,parse:()=>Bn,structure:()=>Up});var zp=43,ks=47,Fp=62,Bp=126,_p="Combinator",Up={name:String};function Bn(){let e=this.tokenStart,t;switch(this.tokenType){case 13:t=" ";break;case 9:switch(this.charCodeAt(this.tokenStart)){case Fp:case zp:case Bp:this.next();break;case ks:this.next(),this.eatIdent("deep"),this.eatDelim(ks);break;default:this.error("Combinator is expected")}t=this.substrToCursor(e);break}return{type:"Combinator",loc:this.getLocation(e,this.tokenStart),name:t}}function jp(e){this.tokenize(e.name)}var jn={};y(jn,{generate:()=>Vp,name:()=>Wp,parse:()=>Un,structure:()=>Yp});var qp=42,Hp=47,Wp="Comment",Yp={value:String};function Un(){let e=this.tokenStart,t=this.tokenEnd;return this.eat(25),t-e+2>=2&&this.charCodeAt(t-2)===qp&&this.charCodeAt(t-1)===Hp&&(t-=2),{type:"Comment",loc:this.getLocation(e,this.tokenStart),value:this.substring(e+2,t)}}function Vp(e){this.token(25,"/*"+e.value+"*/")}var Hn={};y(Hn,{generate:()=>oh,name:()=>th,parse:()=>qn,structure:()=>nh,walkContext:()=>rh});var vs=33,Gp=35,Kp=36,Qp=38,$p=42,Xp=43,ws=47;function Zp(e){return this.Raw(e,this.consumeUntilExclamationMarkOrSemicolon,!0)}function Jp(e){return this.Raw(e,this.consumeUntilExclamationMarkOrSemicolon,!1)}function eh(){let e=this.tokenIndex,t=this.Value();return t.type!=="Raw"&&this.eof===!1&&this.tokenType!==17&&this.isDelim(vs)===!1&&this.isBalanceEdge(e)===!1&&this.error(),t}var th="Declaration",rh="declaration",nh={important:[Boolean,String],property:String,value:["Value","Raw"]};function qn(){let e=this.tokenStart,t=this.tokenIndex,r=ih.call(this),n=er(r),o=n?this.parseCustomProperty:this.parseValue,i=n?Jp:Zp,a=!1,l;this.skipSC(),this.eat(16);let c=this.tokenIndex;if(n||this.skipSC(),o?l=this.parseWithFallback(eh,i):l=i.call(this,this.tokenIndex),n&&l.type==="Value"&&l.children.isEmpty){for(let s=c-this.tokenIndex;s<=0;s++)if(this.lookupType(s)===13){l.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}return this.isDelim(vs)&&(a=ah.call(this),this.skipSC()),this.eof===!1&&this.tokenType!==17&&this.isBalanceEdge(t)===!1&&this.error(),{type:"Declaration",loc:this.getLocation(e,this.tokenStart),important:a,property:r,value:l}}function oh(e){this.token(1,e.property),this.token(16,":"),this.node(e.value),e.important&&(this.token(9,"!"),this.token(1,e.important===!0?"important":e.important))}function ih(){let e=this.tokenStart;if(this.tokenType===9)switch(this.charCodeAt(this.tokenStart)){case $p:case Kp:case Xp:case Gp:case Qp:this.next();break;case ws:this.next(),this.isDelim(ws)&&this.next();break}return this.tokenType===4?this.eat(4):this.eat(1),this.substrToCursor(e)}function ah(){this.eat(9),this.skipSC();let e=this.consume(1);return e==="important"?!0:e}var Yn={};y(Yn,{generate:()=>uh,name:()=>lh,parse:()=>Wn,structure:()=>ch});function sh(e){return this.Raw(e,this.consumeUntilSemicolonIncluded,!0)}var lh="DeclarationList",ch={children:[["Declaration"]]};function Wn(){let e=this.createList();e:for(;!this.eof;)switch(this.tokenType){case 13:case 25:case 17:this.next();break;default:e.push(this.parseWithFallback(this.Declaration,sh))}return{type:"DeclarationList",loc:this.getLocationFromList(e),children:e}}function uh(e){this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")})}var Gn={};y(Gn,{generate:()=>fh,name:()=>ph,parse:()=>Vn,structure:()=>hh});var ph="Dimension",hh={value:String,unit:String};function Vn(){let e=this.tokenStart,t=this.consumeNumber(12);return{type:"Dimension",loc:this.getLocation(e,this.tokenStart),value:t,unit:this.substring(e+t.length,this.tokenStart)}}function fh(e){this.token(12,e.value+e.unit)}var Qn={};y(Qn,{generate:()=>bh,name:()=>mh,parse:()=>Kn,structure:()=>gh,walkContext:()=>dh});var mh="Function",dh="function",gh={name:String,children:[[]]};function Kn(e,t){let r=this.tokenStart,n=this.consumeFunctionName(),o=n.toLowerCase(),i;return i=t.hasOwnProperty(o)?t[o].call(this,t):e.call(this,t),this.eof||this.eat(22),{type:"Function",loc:this.getLocation(r,this.tokenStart),name:n,children:i}}function bh(e){this.token(2,e.name+"("),this.children(e),this.token(22,")")}var Xn={};y(Xn,{generate:()=>wh,name:()=>xh,parse:()=>$n,structure:()=>kh,xxx:()=>yh});var yh="XXX",xh="Hash",kh={value:String};function $n(){let e=this.tokenStart;return this.eat(4),{type:"Hash",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e+1)}}function wh(e){this.token(4,"#"+e.value)}var Jn={};y(Jn,{generate:()=>Ch,name:()=>vh,parse:()=>Zn,structure:()=>Sh});var vh="Identifier",Sh={name:String};function Zn(){return{type:"Identifier",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function Ch(e){this.token(1,e.name)}var to={};y(to,{generate:()=>Th,name:()=>Ah,parse:()=>eo,structure:()=>Eh});var Ah="IdSelector",Eh={name:String};function eo(){let e=this.tokenStart;return this.eat(4),{type:"IdSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function Th(e){this.token(9,"#"+e.name)}var no={};y(no,{generate:()=>Ih,name:()=>Lh,parse:()=>ro,structure:()=>Ph});var Lh="MediaFeature",Ph={name:String,value:["Identifier","Number","Dimension","Ratio",null]};function ro(){let e=this.tokenStart,t,r=null;if(this.eat(21),this.skipSC(),t=this.consume(1),this.skipSC(),this.tokenType!==22){switch(this.eat(16),this.skipSC(),this.tokenType){case 10:this.lookupNonWSType(1)===9?r=this.Ratio():r=this.Number();break;case 12:r=this.Dimension();break;case 1:r=this.Identifier();break;default:this.error("Number, dimension, ratio or identifier is expected")}this.skipSC()}return this.eat(22),{type:"MediaFeature",loc:this.getLocation(e,this.tokenStart),name:t,value:r}}function Ih(e){this.token(21,"("),this.token(1,e.name),e.value!==null&&(this.token(16,":"),this.node(e.value)),this.token(22,")")}var io={};y(io,{generate:()=>Nh,name:()=>Oh,parse:()=>oo,structure:()=>Dh});var Oh="MediaQuery",Dh={children:[["Identifier","MediaFeature","WhiteSpace"]]};function oo(){let e=this.createList(),t=null;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 1:t=this.Identifier();break;case 21:t=this.MediaFeature();break;default:break e}e.push(t)}return t===null&&this.error("Identifier or parenthesis is expected"),{type:"MediaQuery",loc:this.getLocationFromList(e),children:e}}function Nh(e){this.children(e)}var so={};y(so,{generate:()=>zh,name:()=>Mh,parse:()=>ao,structure:()=>Rh});var Mh="MediaQueryList",Rh={children:[["MediaQuery"]]};function ao(){let e=this.createList();for(this.skipSC();!this.eof&&(e.push(this.MediaQuery()),this.tokenType===18);)this.next();return{type:"MediaQueryList",loc:this.getLocationFromList(e),children:e}}function zh(e){this.children(e,()=>this.token(18,","))}var co={};y(co,{generate:()=>_h,name:()=>Fh,parse:()=>lo,structure:()=>Bh});var Fh="Nth",Bh={nth:["AnPlusB","Identifier"],selector:["SelectorList",null]};function lo(){this.skipSC();let e=this.tokenStart,t=e,r=null,n;return this.lookupValue(0,"odd")||this.lookupValue(0,"even")?n=this.Identifier():n=this.AnPlusB(),t=this.tokenStart,this.skipSC(),this.lookupValue(0,"of")&&(this.next(),r=this.SelectorList(),t=this.tokenStart),{type:"Nth",loc:this.getLocation(e,t),nth:n,selector:r}}function _h(e){this.node(e.nth),e.selector!==null&&(this.token(1,"of"),this.node(e.selector))}var po={};y(po,{generate:()=>qh,name:()=>Uh,parse:()=>uo,structure:()=>jh});var Uh="Number",jh={value:String};function uo(){return{type:"Number",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consume(10)}}function qh(e){this.token(10,e.value)}var fo={};y(fo,{generate:()=>Yh,name:()=>Hh,parse:()=>ho,structure:()=>Wh});var Hh="Operator",Wh={value:String};function ho(){let e=this.tokenStart;return this.next(),{type:"Operator",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function Yh(e){this.tokenize(e.value)}var go={};y(go,{generate:()=>Kh,name:()=>Vh,parse:()=>mo,structure:()=>Gh});var Vh="Parentheses",Gh={children:[[]]};function mo(e,t){let r=this.tokenStart,n=null;return this.eat(21),n=e.call(this,t),this.eof||this.eat(22),{type:"Parentheses",loc:this.getLocation(r,this.tokenStart),children:n}}function Kh(e){this.token(21,"("),this.children(e),this.token(22,")")}var yo={};y(yo,{generate:()=>Xh,name:()=>Qh,parse:()=>bo,structure:()=>$h});var Qh="Percentage",$h={value:String};function bo(){return{type:"Percentage",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function Xh(e){this.token(11,e.value+"%")}var ko={};y(ko,{generate:()=>tf,name:()=>Zh,parse:()=>xo,structure:()=>ef,walkContext:()=>Jh});var Zh="PseudoClassSelector",Jh="function",ef={name:String,children:[["Raw"],null]};function xo(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):r=this.consume(1),{type:"PseudoClassSelector",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function tf(e){this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var vo={};y(vo,{generate:()=>af,name:()=>rf,parse:()=>wo,structure:()=>of,walkContext:()=>nf});var rf="PseudoElementSelector",nf="function",of={name:String,children:[["Raw"],null]};function wo(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):r=this.consume(1),{type:"PseudoElementSelector",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function af(e){this.token(16,":"),this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var Co={};y(Co,{generate:()=>pf,name:()=>cf,parse:()=>So,structure:()=>uf});var sf=47,lf=46;function Ss(){this.skipSC();let e=this.consume(10);for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);!j(r)&&r!==lf&&this.error("Unsigned number is expected",this.tokenStart-e.length+t)}return Number(e)===0&&this.error("Zero number is not allowed",this.tokenStart-e.length),e}var cf="Ratio",uf={left:String,right:String};function So(){let e=this.tokenStart,t=Ss.call(this),r;return this.skipSC(),this.eatDelim(sf),r=Ss.call(this),{type:"Ratio",loc:this.getLocation(e,this.tokenStart),left:t,right:r}}function pf(e){this.token(10,e.left),this.token(9,"/"),this.token(10,e.right)}var Eo={};y(Eo,{generate:()=>df,name:()=>ff,parse:()=>Ao,structure:()=>mf});function hf(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}var ff="Raw",mf={value:String};function Ao(e,t,r){let n=this.getTokenStart(e),o;return this.skipUntilBalanced(e,t||this.consumeUntilBalanceEnd),r&&this.tokenStart>n?o=hf.call(this):o=this.tokenStart,{type:"Raw",loc:this.getLocation(n,o),value:this.substring(n,o)}}function df(e){this.tokenize(e.value)}var Lo={};y(Lo,{generate:()=>kf,name:()=>bf,parse:()=>To,structure:()=>xf,walkContext:()=>yf});function Cs(e){return this.Raw(e,this.consumeUntilLeftCurlyBracket,!0)}function gf(){let e=this.SelectorList();return e.type!=="Raw"&&this.eof===!1&&this.tokenType!==23&&this.error(),e}var bf="Rule",yf="rule",xf={prelude:["SelectorList","Raw"],block:["Block"]};function To(){let e=this.tokenIndex,t=this.tokenStart,r,n;return this.parseRulePrelude?r=this.parseWithFallback(gf,Cs):r=Cs.call(this,e),n=this.Block(!0),{type:"Rule",loc:this.getLocation(t,this.tokenStart),prelude:r,block:n}}function kf(e){this.node(e.prelude),this.node(e.block)}var Io={};y(Io,{generate:()=>Sf,name:()=>wf,parse:()=>Po,structure:()=>vf});var wf="Selector",vf={children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator","WhiteSpace"]]};function Po(){let e=this.readSequence(this.scope.Selector);return this.getFirstListNode(e)===null&&this.error("Selector is expected"),{type:"Selector",loc:this.getLocationFromList(e),children:e}}function Sf(e){this.children(e)}var Do={};y(Do,{generate:()=>Tf,name:()=>Cf,parse:()=>Oo,structure:()=>Ef,walkContext:()=>Af});var Cf="SelectorList",Af="selector",Ef={children:[["Selector","Raw"]]};function Oo(){let e=this.createList();for(;!this.eof;){if(e.push(this.Selector()),this.tokenType===18){this.next();continue}break}return{type:"SelectorList",loc:this.getLocationFromList(e),children:e}}function Tf(e){this.children(e,()=>this.token(18,","))}var zo={};y(zo,{generate:()=>If,name:()=>Lf,parse:()=>Ro,structure:()=>Pf});var nt={};y(nt,{decode:()=>Tt,encode:()=>Mo});var No=92,As=34,Es=39;function Tt(e){let t=e.length,r=e.charCodeAt(0),n=r===As||r===Es?1:0,o=n===1&&t>1&&e.charCodeAt(t-1)===r?t-2:t-1,i="";for(let a=n;a<=o;a++){let l=e.charCodeAt(a);if(l===No){if(a===o){a!==t-1&&(i=e.substr(a+1));break}if(l=e.charCodeAt(++a),re(No,l)){let c=a-1,s=fe(e,c);a=s-1,i+=ft(e.substring(c+1,s))}else l===13&&e.charCodeAt(a+1)===10&&a++}else i+=e[a]}return i}function Mo(e,t){let r=t?"'":'"',n=t?Es:As,o="",i=!1;for(let a=0;a<e.length;a++){let l=e.charCodeAt(a);if(l===0){o+="\uFFFD";continue}if(l<=31||l===127){o+="\\"+l.toString(16),i=!0;continue}l===n||l===No?(o+="\\"+e.charAt(a),i=!1):(i&&(oe(l)||he(l))&&(o+=" "),o+=e.charAt(a),i=!1)}return r+o+r}var Lf="String",Pf={value:String};function Ro(){return{type:"String",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:Tt(this.consume(5))}}function If(e){this.token(5,Mo(e.value))}var Bo={};y(Bo,{generate:()=>Rf,name:()=>Df,parse:()=>Fo,structure:()=>Mf,walkContext:()=>Nf});var Of=33;function Ts(e){return this.Raw(e,null,!1)}var Df="StyleSheet",Nf="stylesheet",Mf={children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]};function Fo(){let e=this.tokenStart,t=this.createList(),r;e:for(;!this.eof;){switch(this.tokenType){case 13:this.next();continue;case 25:if(this.charCodeAt(this.tokenStart+2)!==Of){this.next();continue}r=this.Comment();break;case 14:r=this.CDO();break;case 15:r=this.CDC();break;case 3:r=this.parseWithFallback(this.Atrule,Ts);break;default:r=this.parseWithFallback(this.Rule,Ts)}t.push(r)}return{type:"StyleSheet",loc:this.getLocation(e,this.tokenStart),children:t}}function Rf(e){this.children(e)}var jo={};y(jo,{generate:()=>_f,name:()=>Ff,parse:()=>Uo,structure:()=>Bf});var zf=42,Ls=124;function _o(){this.tokenType!==1&&this.isDelim(zf)===!1&&this.error("Identifier or asterisk is expected"),this.next()}var Ff="TypeSelector",Bf={name:String};function Uo(){let e=this.tokenStart;return this.isDelim(Ls)?(this.next(),_o.call(this)):(_o.call(this),this.isDelim(Ls)&&(this.next(),_o.call(this))),{type:"TypeSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function _f(e){this.tokenize(e.name)}var Wo={};y(Wo,{generate:()=>Wf,name:()=>qf,parse:()=>Ho,structure:()=>Hf});var Ps=43,Is=45,qo=63;function Lt(e,t){let r=0;for(let n=this.tokenStart+e;n<this.tokenEnd;n++){let o=this.charCodeAt(n);if(o===Is&&t&&r!==0)return Lt.call(this,e+r+1,!1),-1;oe(o)||this.error(t&&r!==0?"Hyphen minus"+(r<6?" or hex digit":"")+" is expected":r<6?"Hex digit is expected":"Unexpected input",n),++r>6&&this.error("Too many hex digits",n)}return this.next(),r}function br(e){let t=0;for(;this.isDelim(qo);)++t>e&&this.error("Too many question marks"),this.next()}function Uf(e){this.charCodeAt(this.tokenStart)!==e&&this.error((e===Ps?"Plus sign":"Hyphen minus")+" is expected")}function jf(){let e=0;switch(this.tokenType){case 10:if(e=Lt.call(this,1,!0),this.isDelim(qo)){br.call(this,6-e);break}if(this.tokenType===12||this.tokenType===10){Uf.call(this,Is),Lt.call(this,1,!1);break}break;case 12:e=Lt.call(this,1,!0),e>0&&br.call(this,6-e);break;default:if(this.eatDelim(Ps),this.tokenType===1){e=Lt.call(this,0,!0),e>0&&br.call(this,6-e);break}if(this.isDelim(qo)){this.next(),br.call(this,5);break}this.error("Hex digit or question mark is expected")}}var qf="UnicodeRange",Hf={value:String};function Ho(){let e=this.tokenStart;return this.eatIdent("u"),jf.call(this),{type:"UnicodeRange",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function Wf(e){this.tokenize(e.value)}var Qo={};y(Qo,{generate:()=>Xf,name:()=>Qf,parse:()=>Ko,structure:()=>$f});var Pt={};y(Pt,{decode:()=>Vo,encode:()=>Go});var Yf=32,Yo=92,Vf=34,Gf=39,Kf=40,Os=41;function Vo(e){let t=e.length,r=4,n=e.charCodeAt(t-1)===Os?t-2:t-1,o="";for(;r<n&&he(e.charCodeAt(r));)r++;for(;r<n&&he(e.charCodeAt(n));)n--;for(let i=r;i<=n;i++){let a=e.charCodeAt(i);if(a===Yo){if(i===n){i!==t-1&&(o=e.substr(i+1));break}if(a=e.charCodeAt(++i),re(Yo,a)){let l=i-1,c=fe(e,l);i=c-1,o+=ft(e.substring(l+1,c))}else a===13&&e.charCodeAt(i+1)===10&&i++}else o+=e[i]}return o}function Go(e){let t="",r=!1;for(let n=0;n<e.length;n++){let o=e.charCodeAt(n);if(o===0){t+="\uFFFD";continue}if(o<=31||o===127){t+="\\"+o.toString(16),r=!0;continue}o===Yf||o===Yo||o===Vf||o===Gf||o===Kf||o===Os?(t+="\\"+e.charAt(n),r=!1):(r&&oe(o)&&(t+=" "),t+=e.charAt(n),r=!1)}return"url("+t+")"}var Qf="Url",$f={value:String};function Ko(){let e=this.tokenStart,t;switch(this.tokenType){case 7:t=Vo(this.consume(7));break;case 2:this.cmpStr(this.tokenStart,this.tokenEnd,"url(")||this.error("Function name must be `url`"),this.eat(2),this.skipSC(),t=Tt(this.consume(5)),this.skipSC(),this.eof||this.eat(22);break;default:this.error("Url or Function is expected")}return{type:"Url",loc:this.getLocation(e,this.tokenStart),value:t}}function Xf(e){this.token(7,Go(e.value))}var Xo={};y(Xo,{generate:()=>em,name:()=>Zf,parse:()=>$o,structure:()=>Jf});var Zf="Value",Jf={children:[[]]};function $o(){let e=this.tokenStart,t=this.readSequence(this.scope.Value);return{type:"Value",loc:this.getLocation(e,this.tokenStart),children:t}}function em(e){this.children(e)}var Jo={};y(Jo,{generate:()=>om,name:()=>rm,parse:()=>Zo,structure:()=>nm});var tm=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),rm="WhiteSpace",nm={value:String};function Zo(){return this.eat(13),tm}function om(e){this.token(13,e.value)}var Ds={generic:!0,...ds,node:It};var ei={};y(ei,{AtrulePrelude:()=>Ms,Selector:()=>zs,Value:()=>Us});var im=35,am=42,Ns=43,sm=45,lm=47,cm=117;function Ot(e){switch(this.tokenType){case 4:return this.Hash();case 18:return this.Operator();case 21:return this.Parentheses(this.readSequence,e.recognizer);case 19:return this.Brackets(this.readSequence,e.recognizer);case 5:return this.String();case 12:return this.Dimension();case 11:return this.Percentage();case 10:return this.Number();case 2:return this.cmpStr(this.tokenStart,this.tokenEnd,"url(")?this.Url():this.Function(this.readSequence,e.recognizer);case 7:return this.Url();case 1:return this.cmpChar(this.tokenStart,cm)&&this.cmpChar(this.tokenStart+1,Ns)?this.UnicodeRange():this.Identifier();case 9:{let t=this.charCodeAt(this.tokenStart);if(t===lm||t===am||t===Ns||t===sm)return this.Operator();t===im&&this.error("Hex or identifier is expected",this.tokenStart+1);break}}}var Ms={getNode:Ot};var um=35,pm=42,hm=43,fm=47,Rs=46,mm=62,dm=124,gm=126;function bm(e,t){t.last!==null&&t.last.type!=="Combinator"&&e!==null&&e.type!=="Combinator"&&t.push({type:"Combinator",loc:null,name:" "})}function ym(){switch(this.tokenType){case 19:return this.AttributeSelector();case 4:return this.IdSelector();case 16:return this.lookupType(1)===16?this.PseudoElementSelector():this.PseudoClassSelector();case 1:return this.TypeSelector();case 10:case 11:return this.Percentage();case 12:this.charCodeAt(this.tokenStart)===Rs&&this.error("Identifier is expected",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case hm:case mm:case gm:case fm:return this.Combinator();case Rs:return this.ClassSelector();case pm:case dm:return this.TypeSelector();case um:return this.IdSelector()}break}}}var zs={onWhiteSpace:bm,getNode:ym};function Fs(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function Bs(){let e=this.createList();if(this.skipSC(),e.push(this.Identifier()),this.skipSC(),this.tokenType===18){e.push(this.Operator());let t=this.tokenIndex,r=this.parseCustomProperty?this.Value(null):this.Raw(this.tokenIndex,this.consumeUntilExclamationMarkOrSemicolon,!1);if(r.type==="Value"&&r.children.isEmpty){for(let n=t-this.tokenIndex;n<=0;n++)if(this.lookupType(n)===13){r.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}e.push(r)}return e}function _s(e){return e!==null&&e.type==="Operator"&&(e.value[e.value.length-1]==="-"||e.value[e.value.length-1]==="+")}var Us={getNode:Ot,onWhiteSpace(e,t){_s(e)&&(e.value=" "+e.value),_s(t.last)&&(t.last.value+=" ")},expression:Fs,var:Bs};var js={parse:{prelude:null,block(){return this.Block(!0)}}};var qs={parse:{prelude(){let e=this.createList();switch(this.skipSC(),this.tokenType){case 5:e.push(this.String());break;case 7:case 2:e.push(this.Url());break;default:this.error("String or url() is expected")}return(this.lookupNonWSType(0)===1||this.lookupNonWSType(0)===21)&&e.push(this.MediaQueryList()),e},block:null}};var Hs={parse:{prelude(){return this.createSingleNodeList(this.MediaQueryList())},block(){return this.Block(!1)}}};var Ws={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}};function xm(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function km(){return this.skipSC(),this.tokenType===1&&this.lookupNonWSType(1)===16?this.createSingleNodeList(this.Declaration()):Ys.call(this)}function Ys(){let e=this.createList(),t;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 2:t=this.Function(xm,this.scope.AtrulePrelude);break;case 1:t=this.Identifier();break;case 21:t=this.Parentheses(km,this.scope.AtrulePrelude);break;default:break e}e.push(t)}return e}var Vs={parse:{prelude(){let e=Ys.call(this);return this.getFirstListNode(e)===null&&this.error("Condition is expected"),e},block(){return this.Block(!1)}}};var Gs={"font-face":js,import:qs,media:Hs,page:Ws,supports:Vs};var Be={parse(){return this.createSingleNodeList(this.SelectorList())}},wm={parse(){return this.createSingleNodeList(this.Selector())}},Ks={parse(){return this.createSingleNodeList(this.Identifier())}},yr={parse(){return this.createSingleNodeList(this.Nth())}},Qs={dir:Ks,has:Be,lang:Ks,matches:Be,is:Be,"-moz-any":Be,"-webkit-any":Be,where:Be,not:Be,"nth-child":yr,"nth-last-child":yr,"nth-last-of-type":yr,"nth-of-type":yr,slotted:wm};var ti={};y(ti,{AnPlusB:()=>xn,Atrule:()=>wn,AtrulePrelude:()=>Sn,AttributeSelector:()=>En,Block:()=>Ln,Brackets:()=>In,CDC:()=>Dn,CDO:()=>Mn,ClassSelector:()=>zn,Combinator:()=>Bn,Comment:()=>Un,Declaration:()=>qn,DeclarationList:()=>Wn,Dimension:()=>Vn,Function:()=>Kn,Hash:()=>$n,IdSelector:()=>eo,Identifier:()=>Zn,MediaFeature:()=>ro,MediaQuery:()=>oo,MediaQueryList:()=>ao,Nth:()=>lo,Number:()=>uo,Operator:()=>ho,Parentheses:()=>mo,Percentage:()=>bo,PseudoClassSelector:()=>xo,PseudoElementSelector:()=>wo,Ratio:()=>So,Raw:()=>Ao,Rule:()=>To,Selector:()=>Po,SelectorList:()=>Oo,String:()=>Ro,StyleSheet:()=>Fo,TypeSelector:()=>Uo,UnicodeRange:()=>Ho,Url:()=>Ko,Value:()=>$o,WhiteSpace:()=>Zo});var $s={parseContext:{default:"StyleSheet",stylesheet:"StyleSheet",atrule:"Atrule",atrulePrelude(e){return this.AtrulePrelude(e.atrule?String(e.atrule):null)},mediaQueryList:"MediaQueryList",mediaQuery:"MediaQuery",rule:"Rule",selectorList:"SelectorList",selector:"Selector",block(){return this.Block(!0)},declarationList:"DeclarationList",declaration:"Declaration",value:"Value"},scope:ei,atrule:Gs,pseudo:Qs,node:ti};var Xs={node:It};var Zs=bn({...Ds,...$s,...Xs});function Dt(e){let t={};for(let r in e){let n=e[r];n&&(Array.isArray(n)||n instanceof w?n=n.map(Dt):n.constructor===Object&&(n=Dt(n))),t[r]=n}return t}var{tokenize:Nx,parse:Js,generate:ne,lexer:xr,createLexer:Mx,walk:F,find:Rx,findLast:zx,findAll:Fx,toPlainObject:Bx,fromPlainObject:_x,fork:el}=Zs;var{hasOwnProperty:Sm}=Object.prototype;function ri(e,t){let r=Object.create(null);if(!Array.isArray(e))return null;for(let n of e)t&&(n=n.toLowerCase()),r[n]=!0;return r}function tl(e){if(!e)return null;let t=ri(e.tags,!0),r=ri(e.ids),n=ri(e.classes);return t===null&&r===null&&n===null?null:{tags:t,ids:r,classes:n}}function rl(e){let t=!1;if(e.scopes&&Array.isArray(e.scopes)){t=Object.create(null);for(let r=0;r<e.scopes.length;r++){let n=e.scopes[r];if(!n||!Array.isArray(n))throw new Error("Wrong usage format");for(let o of n){if(Sm.call(t,o))throw new Error(`Class can't be used for several scopes: ${o}`);t[o]=r+1}}}return{whitelist:tl(e),blacklist:tl(e.blacklist),scopes:t}}function Ce(e){return!e||!e.children||e.children.isEmpty}function ni(e,t){return e!==null&&e.children===t}function oi(e,t,r){if(e.block&&(this.stylesheet!==null&&(this.stylesheet.firstAtrulesAllowed=!1),Ce(e.block))){r.remove(t);return}switch(e.name){case"charset":if(Ce(e.prelude)){r.remove(t);return}if(t.prev){r.remove(t);return}break;case"import":if(this.stylesheet===null||!this.stylesheet.firstAtrulesAllowed){r.remove(t);return}r.prevUntil(t.prev,function(n){if(!(n.type==="Atrule"&&(n.name==="import"||n.name==="charset")))return this.root.firstAtrulesAllowed=!1,r.remove(t),!0},this);break;default:{let n=Z(e.name).basename;(n==="keyframes"||n==="media"||n==="supports")&&(Ce(e.prelude)||Ce(e.block))&&r.remove(t)}}}function ii(e,t,r){r.remove(t)}function ai(e,t,r){if(e.value.children&&e.value.children.isEmpty){r.remove(t);return}me(e.property).custom&&/\S/.test(e.value.value)&&(e.value.value=e.value.value.trim())}function si(e,t,r){(ni(this.stylesheet,r)||ni(this.block,r))&&r.remove(t)}var{hasOwnProperty:ot}=Object.prototype,Cm=new Set(["keyframes"]);function nl(e,t){return e.children.forEach((r,n,o)=>{let i=!1;F(r,function(a){if(this.selector===null||this.selector===e)switch(a.type){case"SelectorList":(this.function===null||this.function.name.toLowerCase()!=="not")&&nl(a,t)&&(i=!0);break;case"ClassSelector":t.whitelist!==null&&t.whitelist.classes!==null&&!ot.call(t.whitelist.classes,a.name)&&(i=!0),t.blacklist!==null&&t.blacklist.classes!==null&&ot.call(t.blacklist.classes,a.name)&&(i=!0);break;case"IdSelector":t.whitelist!==null&&t.whitelist.ids!==null&&!ot.call(t.whitelist.ids,a.name)&&(i=!0),t.blacklist!==null&&t.blacklist.ids!==null&&ot.call(t.blacklist.ids,a.name)&&(i=!0);break;case"TypeSelector":a.name.charAt(a.name.length-1)!=="*"&&(t.whitelist!==null&&t.whitelist.tags!==null&&!ot.call(t.whitelist.tags,a.name.toLowerCase())&&(i=!0),t.blacklist!==null&&t.blacklist.tags!==null&&ot.call(t.blacklist.tags,a.name.toLowerCase())&&(i=!0));break}}),i&&o.remove(n)}),e.children.isEmpty}function li(e,t,r,n){if(Ce(e.prelude)||Ce(e.block)){r.remove(t);return}if(this.atrule&&Cm.has(Z(this.atrule.name).basename))return;let{usage:o}=n;if(o&&(o.whitelist!==null||o.blacklist!==null)&&(nl(e.prelude,o),Ce(e.prelude))){r.remove(t);return}}function ci(e,t,r){if(t.data.name!=="*")return;let o=t.next&&t.next.data.type;(o==="IdSelector"||o==="ClassSelector"||o==="AttributeSelector"||o==="PseudoClassSelector"||o==="PseudoElementSelector")&&r.remove(t)}function ui(e,t,r){r.remove(t)}var ol={Atrule:oi,Comment:ii,Declaration:ai,Raw:si,Rule:li,TypeSelector:ci,WhiteSpace:ui};function il(e,t){F(e,{leave(r,n,o){ol.hasOwnProperty(r.type)&&ol[r.type].call(this,r,n,o,t)}})}function al(e){e.block.children.forEach(t=>{t.prelude.children.forEach(r=>{r.children.forEach((n,o)=>{n.type==="Percentage"&&n.value==="100"?o.data={type:"TypeSelector",loc:n.loc,name:"to"}:n.type==="TypeSelector"&&n.name==="from"&&(o.data={type:"Percentage",loc:n.loc,value:"0"})})})})}function sl(e){Z(e.name).basename==="keyframes"&&al(e)}var Am=/^(-?\d|--)|[\u0000-\u002c\u002e\u002f\u003A-\u0040\u005B-\u005E\u0060\u007B-\u009f]/;function Em(e){return e===""||e==="-"?!1:!Am.test(e)}function ll(e){let t=e.value;!t||t.type!=="String"||Em(t.value)&&(e.value={type:"Identifier",loc:t.loc,name:t.value})}function pi(e){let t=e.children;t.forEachRight(function(r,n){if(r.type==="Identifier"){if(r.name==="bold")n.data={type:"Number",loc:r.loc,value:"700"};else if(r.name==="normal"){let o=n.prev;o&&o.data.type==="Operator"&&o.data.value==="/"&&this.remove(o),this.remove(n)}}}),t.isEmpty&&t.insert(t.createItem({type:"Identifier",name:"normal"}))}function hi(e){let t=e.children.head.data;if(t.type==="Identifier")switch(t.name){case"normal":e.children.head.data={type:"Number",loc:t.loc,value:"400"};break;case"bold":e.children.head.data={type:"Number",loc:t.loc,value:"700"};break}}function fi(e){function t(){n.length||n.unshift({type:"Number",loc:null,value:"0"},{type:"Number",loc:null,value:"0"}),r.push.apply(r,n),n=[]}let r=[],n=[];e.children.forEach(o=>{if(o.type==="Operator"&&o.value===","){t(),r.push(o);return}o.type==="Identifier"&&(o.name==="transparent"||o.name==="none"||o.name==="repeat"||o.name==="scroll")||n.push(o)}),t(),e.children=new w().fromArray(r)}function Nt(e){e.children.forEach((t,r,n)=>{t.type==="Identifier"&&t.name.toLowerCase()==="none"&&(n.head===n.tail?r.data={type:"Number",loc:t.loc,value:"0"}:n.remove(r))})}var cl={font:pi,"font-weight":hi,background:fi,border:Nt,outline:Nt};function mi(e){if(!this.declaration)return;let t=me(this.declaration.property);cl.hasOwnProperty(t.basename)&&cl[t.basename](e)}var Tm=/^(?:\+|(-))?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/,Lm=/^([\+\-])?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/,Pm=new Set(["Dimension","Hash","Identifier","Number","Raw","UnicodeRange"]);function _e(e,t){let r=t&&t.prev!==null&&Pm.has(t.prev.data.type)?Lm:Tm;return e=String(e).replace(r,"$1$2$3"),(e===""||e==="-")&&(e="0"),e}function ul(e){e.value=_e(e.value)}var Im=new Set(["calc","min","max","clamp"]),Om=new Set(["px","mm","cm","in","pt","pc","em","ex","ch","rem","vh","vw","vmin","vmax","vm"]);function di(e,t){let r=_e(e.value);if(e.value=r,r==="0"&&this.declaration!==null&&this.atrulePrelude===null){let n=e.unit.toLowerCase();if(!Om.has(n)||this.declaration.property==="-ms-flex"||this.declaration.property==="flex"||this.function&&Im.has(this.function.name))return;t.data={type:"Number",loc:e.loc,value:r}}}var Dm=new Set(["width","min-width","max-width","height","min-height","max-height","flex","-ms-flex"]);function gi(e,t){e.value=_e(e.value),e.value==="0"&&this.declaration&&!Dm.has(this.declaration.property)&&(t.data={type:"Number",loc:e.loc,value:e.value},xr.matchDeclaration(this.declaration).isType(t.data,"length")||(t.data=e))}function pl(e){e.value=e.value.replace(/\\/g,"/")}var hl={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgrey:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",grey:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"639",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},fl={8e5:"maroon",800080:"purple",808e3:"olive",808080:"gray","00ffff":"cyan",f0ffff:"azure",f5f5dc:"beige",ffe4c4:"bisque","000000":"black","0000ff":"blue",a52a2a:"brown",ff7f50:"coral",ffd700:"gold","008000":"green","4b0082":"indigo",fffff0:"ivory",f0e68c:"khaki","00ff00":"lime",faf0e6:"linen","000080":"navy",ffa500:"orange",da70d6:"orchid",cd853f:"peru",ffc0cb:"pink",dda0dd:"plum",f00:"red",ff0000:"red",fa8072:"salmon",a0522d:"sienna",c0c0c0:"silver",fffafa:"snow",d2b48c:"tan","008080":"teal",ff6347:"tomato",ee82ee:"violet",f5deb3:"wheat",ffffff:"white",ffff00:"yellow"};function bi(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function ml(e,t,r,n){let o,i,a;if(t===0)o=i=a=r;else{let l=r<.5?r*(1+t):r+t-r*t,c=2*r-l;o=bi(c,l,e+1/3),i=bi(c,l,e),a=bi(c,l,e-1/3)}return[Math.round(o*255),Math.round(i*255),Math.round(a*255),n]}function yi(e){return e=e.toString(16),e.length===1?"0"+e:e}function xi(e,t,r){let n=e.head,o=[],i=!1;for(;n!==null;){let{type:a,value:l}=n.data;switch(a){case"Number":case"Percentage":if(i)return;i=!0,o.push({type:a,value:Number(l)});break;case"Operator":if(l===","){if(!i)return;i=!1}else if(i||l!=="+")return;break;default:return}n=n.next}if(o.length===t){if(o.length===4){if(o[3].type!=="Number")return;o[3].type="Alpha"}if(r){if(o[0].type!==o[1].type||o[0].type!==o[2].type)return}else{if(o[0].type!=="Number"||o[1].type!=="Percentage"||o[2].type!=="Percentage")return;o[0].type="Angle"}return o.map(function(a){let l=Math.max(0,a.value);switch(a.type){case"Number":l=Math.min(l,255);break;case"Percentage":if(l=Math.min(l,100)/100,!r)return l;l=255*l;break;case"Angle":return(l%360+360)%360/360;case"Alpha":return Math.min(l,1)}return Math.round(l)})}}function dl(e,t){let r=e.name,n;if(r==="rgba"||r==="hsla"){if(n=xi(e.children,4,r==="rgba"),!n)return;if(r==="hsla"&&(n=ml(...n),e.name="rgba"),n[3]===0){let o=this.function&&this.function.name;if(n[0]===0&&n[1]===0&&n[2]===0||!/^(?:to|from|color-stop)$|gradient$/i.test(o)){t.data={type:"Identifier",loc:e.loc,name:"transparent"};return}}if(n[3]!==1){e.children.forEach((o,i,a)=>{if(o.type==="Operator"){o.value!==","&&a.remove(i);return}i.data={type:"Number",loc:o.loc,value:_e(n.shift())}});return}r="rgb"}if(r==="hsl"){if(n=n||xi(e.children,3,!1),!n)return;n=ml(...n),r="rgb"}if(r==="rgb"){if(n=n||xi(e.children,3,!0),!n)return;t.data={type:"Hash",loc:e.loc,value:yi(n[0])+yi(n[1])+yi(n[2])},ki(t.data,t)}}function gl(e,t){if(this.declaration===null)return;let r=e.name.toLowerCase();if(hl.hasOwnProperty(r)&&xr.matchDeclaration(this.declaration).isType(e,"color")){let n=hl[r];n.length+1<=r.length?t.data={type:"Hash",loc:e.loc,value:n}:(r==="grey"&&(r="gray"),e.name=r)}}function ki(e,t){let r=e.value.toLowerCase();r.length===6&&r[0]===r[1]&&r[2]===r[3]&&r[4]===r[5]&&(r=r[0]+r[2]+r[4]),fl[r]?t.data={type:"Identifier",loc:e.loc,name:fl[r]}:e.value=r}var bl={Atrule:sl,AttributeSelector:ll,Value:mi,Dimension:di,Percentage:gi,Number:ul,Url:pl,Hash:ki,Identifier:gl,Function:dl};function yl(e){F(e,{leave(t,r,n){bl.hasOwnProperty(t.type)&&bl[t.type].call(this,t,r,n)}})}var wi=class{constructor(){this.map=new Map}resolve(t){let r=this.map.get(t);return r===void 0&&(r=this.map.size+1,this.map.set(t,r)),r}};function vi(){let e=new wi;return function(r){let n=ne(r);return r.id=e.resolve(n),r.length=n.length,r.fingerprint=null,r}}function Nm(e){return e.type==="Raw"?Js(e.value,{context:"selectorList"}):e}function Mm(e,t){for(let r=0;r<3;r++)if(e[r]!==t[r])return e[r]>t[r]?e:t;return e}function xl(e){return Nm(e).children.reduce((t,r)=>Mm(kl(r),t),[0,0,0])}function kl(e){let t=0,r=0,n=0;return e.children.forEach(o=>{switch(o.type){case"IdSelector":t++;break;case"ClassSelector":case"AttributeSelector":r++;break;case"PseudoClassSelector":switch(o.name.toLowerCase()){case"not":case"has":case"is":case"matches":case"-webkit-any":case"-moz-any":{let[i,a,l]=xl(o.children.first);t+=i,r+=a,n+=l;break}case"nth-child":case"nth-last-child":{let i=o.children.first;if(i.type==="Nth"&&i.selector){let[a,l,c]=xl(i.selector);t+=a,r+=l+1,n+=c}else r++;break}case"where":break;case"before":case"after":case"first-line":case"first-letter":n++;break;default:r++}break;case"TypeSelector":o.name.endsWith("*")||n++;break;case"PseudoElementSelector":n++;break}}),[t,r,n]}var kr=kl;var Rm=new Set(["first-letter","first-line","after","before"]),zm=new Set(["link","visited","hover","active","first-letter","first-line","after","before"]);function Mt(e,t){let r=new Set;e.prelude.children.forEach(function(n){let o="*",i=0;n.children.forEach(function(a){switch(a.type){case"ClassSelector":if(t&&t.scopes){let l=t.scopes[a.name]||0;if(i!==0&&l!==i)throw new Error("Selector can't has classes from different scopes: "+ne(n));i=l}break;case"PseudoClassSelector":{let l=a.name.toLowerCase();zm.has(l)||r.add(`:${l}`);break}case"PseudoElementSelector":{let l=a.name.toLowerCase();Rm.has(l)||r.add(`::${l}`);break}case"TypeSelector":o=a.name.toLowerCase();break;case"AttributeSelector":a.flags&&r.add(`[${a.flags.toLowerCase()}]`);break;case"Combinator":o="*";break}}),n.compareMarker=kr(n).toString(),n.id=null,n.id=ne(n),i&&(n.compareMarker+=":"+i),o!=="*"&&(n.compareMarker+=","+o)}),e.pseudoSignature=r.size>0?[...r].sort().join(","):!1}function Si(e,t){let r=vi();return F(e,{visit:"Rule",enter(n){n.block.children.forEach(r),Mt(n,t.usage)}}),F(e,{visit:"Atrule",enter(n){n.prelude&&(n.prelude.id=null,n.prelude.id=ne(n.prelude)),Z(n.name).basename==="keyframes"&&(n.block.avoidRulesMerge=!0,n.block.children.forEach(function(o){o.prelude.children.forEach(function(i){i.compareMarker=i.id})}))}}),{declaration:r}}var{hasOwnProperty:wl}=Object.prototype;function vl(e,t,r,n){let o=t.data,i=Z(o.name).basename,a=o.name.toLowerCase()+"/"+(o.prelude?o.prelude.id:null);wl.call(e,i)||(e[i]=Object.create(null)),n&&delete e[i][a],wl.call(e[i],a)||(e[i][a]=new w),e[i][a].append(r.remove(t))}function Fm(e,t){let r=Object.create(null),n=null;e.children.forEach(function(o,i,a){if(o.type==="Atrule"){let l=Z(o.name).basename;switch(l){case"keyframes":vl(r,i,a,!0);return;case"media":if(t.forceMediaMerge){vl(r,i,a,!1);return}break}n===null&&l!=="charset"&&l!=="import"&&(n=i)}else n===null&&(n=i)});for(let o in r)for(let i in r[o])e.children.insertList(r[o][i],o==="media"?null:n)}function Sl(e){return e.type==="Atrule"&&e.name==="media"}function Bm(e,t,r){if(!Sl(e))return;let n=t.prev&&t.prev.data;!n||!Sl(n)||e.prelude&&n.prelude&&e.prelude.id===n.prelude.id&&(n.block.children.appendList(e.block.children),r.remove(t))}function Ci(e,t){Fm(e,t),F(e,{visit:"Atrule",reverse:!0,enter:Bm})}var{hasOwnProperty:_m}=Object.prototype;function Rt(e,t){let r=e.head,n=t.head;for(;r!==null&&n!==null&&r.data.id===n.data.id;)r=r.next,n=n.next;return r===null&&n===null}function zt(e,t){let r=e.head,n=t.head;for(;r!==null&&n!==null&&r.data.id===n.data.id;)r=r.next,n=n.next;return r===null&&n===null}function Ai(e,t){let r={eq:[],ne1:[],ne2:[],ne2overrided:[]},n=Object.create(null),o=Object.create(null);for(let i=t.head;i;i=i.next)o[i.data.id]=!0;for(let i=e.head;i;i=i.next){let a=i.data;a.fingerprint&&(n[a.fingerprint]=a.important),o[a.id]?(o[a.id]=!1,r.eq.push(a)):r.ne1.push(a)}for(let i=t.head;i;i=i.next){let a=i.data;o[a.id]&&((!_m.call(n,a.fingerprint)||!n[a.fingerprint]&&a.important)&&r.ne2.push(a),r.ne2overrided.push(a))}return r}function Oe(e,t){return t.forEach(r=>{let n=r.id,o=e.head;for(;o;){let i=o.data.id;if(i===n)return;if(i>n)break;o=o.next}e.insert(e.createItem(r),o)}),e}function wr(e,t){let r=e.head;for(;r!==null;){let n=t.head;for(;n!==null;){if(r.data.compareMarker===n.data.compareMarker)return!0;n=n.next}r=r.next}return!1}function De(e){switch(e.type){case"Rule":return wr(e.prelude.children,this);case"Atrule":if(e.block)return e.block.children.some(De,this);break;case"Declaration":return!1}return!0}function Um(e,t,r){let n=e.prelude.children,o=e.block.children;r.prevUntil(t.prev,function(i){if(i.type!=="Rule")return De.call(n,i);let a=i.prelude.children,l=i.block.children;if(e.pseudoSignature===i.pseudoSignature){if(Rt(a,n))return l.appendList(o),r.remove(t),!0;if(zt(o,l))return Oe(a,n),r.remove(t),!0}return wr(n,a)})}function Ei(e){F(e,{visit:"Rule",enter:Um})}function jm(e,t,r){let n=e.prelude.children;for(;n.head!==n.tail;){let o=new w;o.insert(n.remove(n.head)),r.insert(r.createItem({type:"Rule",loc:e.loc,prelude:{type:"SelectorList",loc:e.prelude.loc,children:o},block:{type:"Block",loc:e.block.loc,children:e.block.children.copy()},pseudoSignature:e.pseudoSignature}),t)}}function Ti(e){F(e,{visit:"Rule",reverse:!0,enter:jm})}var El=1,qm=2,it=0,Ft=1,Li=2,vr=3,Cl=["top","right","bottom","left"],Hm={"margin-top":"top","margin-right":"right","margin-bottom":"bottom","margin-left":"left","padding-top":"top","padding-right":"right","padding-bottom":"bottom","padding-left":"left","border-top-color":"top","border-right-color":"right","border-bottom-color":"bottom","border-left-color":"left","border-top-width":"top","border-right-width":"right","border-bottom-width":"bottom","border-left-width":"left","border-top-style":"top","border-right-style":"right","border-bottom-style":"bottom","border-left-style":"left"},Al={margin:"margin","margin-top":"margin","margin-right":"margin","margin-bottom":"margin","margin-left":"margin",padding:"padding","padding-top":"padding","padding-right":"padding","padding-bottom":"padding","padding-left":"padding","border-color":"border-color","border-top-color":"border-color","border-right-color":"border-color","border-bottom-color":"border-color","border-left-color":"border-color","border-width":"border-width","border-top-width":"border-width","border-right-width":"border-width","border-bottom-width":"border-width","border-left-width":"border-width","border-style":"border-style","border-top-style":"border-style","border-right-style":"border-style","border-bottom-style":"border-style","border-left-style":"border-style"},Pi=class{constructor(t){this.name=t,this.loc=null,this.iehack=void 0,this.sides={top:null,right:null,bottom:null,left:null}}getValueSequence(t,r){let n=[],o="";return t.value.type!=="Value"||t.value.children.some(function(a){let l=!1;switch(a.type){case"Identifier":switch(a.name){case"\\0":case"\\9":o=a.name;return;case"inherit":case"initial":case"unset":case"revert":l=a.name;break}break;case"Dimension":switch(a.unit){case"rem":case"vw":case"vh":case"vmin":case"vmax":case"vm":l=a.unit;break}break;case"Hash":case"Number":case"Percentage":break;case"Function":if(a.name==="var")return!0;l=a.name;break;default:return!0}n.push({node:a,special:l,important:t.important})})||n.length>r||typeof this.iehack=="string"&&this.iehack!==o?!1:(this.iehack=o,n)}canOverride(t,r){let n=this.sides[t];return!n||r.important&&!n.important}add(t,r){function n(){let o=this.sides,i=Hm[t];if(i){if(!(i in o))return!1;let a=this.getValueSequence(r,1);if(!a||!a.length)return!1;for(let l in o)if(o[l]!==null&&o[l].special!==a[0].special)return!1;return this.canOverride(i,a[0])&&(o[i]=a[0]),!0}else if(t===this.name){let a=this.getValueSequence(r,4);if(!a||!a.length)return!1;switch(a.length){case 1:a[Ft]=a[it],a[Li]=a[it],a[vr]=a[it];break;case 2:a[Li]=a[it],a[vr]=a[Ft];break;case 3:a[vr]=a[Ft];break}for(let l=0;l<4;l++)for(let c in o)if(o[c]!==null&&o[c].special!==a[l].special)return!1;for(let l=0;l<4;l++)this.canOverride(Cl[l],a[l])&&(o[Cl[l]]=a[l]);return!0}}return n.call(this)?(this.loc||(this.loc=r.loc),!0):!1}isOkToMinimize(){let t=this.sides.top,r=this.sides.right,n=this.sides.bottom,o=this.sides.left;if(t&&r&&n&&o){let i=t.important+r.important+n.important+o.important;return i===0||i===4}return!1}getValue(){let t=new w,r=this.sides,n=[r.top,r.right,r.bottom,r.left],o=[ne(r.top.node),ne(r.right.node),ne(r.bottom.node),ne(r.left.node)];o[vr]===o[Ft]&&(n.pop(),o[Li]===o[it]&&(n.pop(),o[Ft]===o[it]&&n.pop()));for(let i=0;i<n.length;i++)t.appendData(n[i].node);return this.iehack&&t.appendData({type:"Identifier",loc:null,name:this.iehack}),{type:"Value",loc:null,children:t}}getDeclaration(){return{type:"Declaration",loc:this.loc,important:this.sides.top.important,property:this.name,value:this.getValue()}}};function Wm(e,t,r,n){let o=e.block.children,i=e.prelude.children.first.id;return e.block.children.forEachRight(function(a,l){let c=a.property;if(!Al.hasOwnProperty(c))return;let s=Al[c],u,p;if((!n||i===n)&&s in t&&(p=qm,u=t[s]),(!u||!u.add(c,a))&&(p=El,u=new Pi(s),!u.add(c,a))){n=null;return}t[s]=u,r.push({operation:p,block:o,item:l,shorthand:u}),n=i}),n}function Ym(e,t){e.forEach(function(r){let n=r.shorthand;!n.isOkToMinimize()||(r.operation===El?r.item.data=t(n.getDeclaration()):r.block.remove(r.item))})}function Ii(e,t){let r={},n=[];F(e,{visit:"Rule",reverse:!0,enter(o){let i=this.block||this.stylesheet,a=(o.pseudoSignature||"")+"|"+o.prelude.children.first.id,l,c;r.hasOwnProperty(i.id)?l=r[i.id]:(l={lastShortSelector:null},r[i.id]=l),l.hasOwnProperty(a)?c=l[a]:(c={},l[a]=c),l.lastShortSelector=Wm.call(this,o,c,n,l.lastShortSelector)}}),Ym(n,t.declaration)}var Vm=1,Gm=new Set(["src"]),Tl={display:/table|ruby|flex|-(flex)?box$|grid|contents|run-in/i,"text-align":/^(start|end|match-parent|justify-all)$/i},Ll={cursor:["auto","crosshair","default","move","text","wait","help","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","pointer","progress","not-allowed","no-drop","vertical-text","all-scroll","col-resize","row-resize"],overflow:["hidden","visible","scroll","auto"],position:["static","relative","absolute","fixed"]},Pl={"border-width":["border"],"border-style":["border"],"border-color":["border"],"border-top":["border"],"border-right":["border"],"border-bottom":["border"],"border-left":["border"],"border-top-width":["border-top","border-width","border"],"border-right-width":["border-right","border-width","border"],"border-bottom-width":["border-bottom","border-width","border"],"border-left-width":["border-left","border-width","border"],"border-top-style":["border-top","border-style","border"],"border-right-style":["border-right","border-style","border"],"border-bottom-style":["border-bottom","border-style","border"],"border-left-style":["border-left","border-style","border"],"border-top-color":["border-top","border-color","border"],"border-right-color":["border-right","border-color","border"],"border-bottom-color":["border-bottom","border-color","border"],"border-left-color":["border-left","border-color","border"],"margin-top":["margin"],"margin-right":["margin"],"margin-bottom":["margin"],"margin-left":["margin"],"padding-top":["padding"],"padding-right":["padding"],"padding-bottom":["padding"],"padding-left":["padding"],"font-style":["font"],"font-variant":["font"],"font-weight":["font"],"font-size":["font"],"font-family":["font"],"list-style-type":["list-style"],"list-style-position":["list-style"],"list-style-image":["list-style"]};function Il(e,t,r){let n=me(e).basename;if(n==="background")return e+":"+ne(t.value);let o=t.id,i=r[o];if(!i){switch(t.value.type){case"Value":let a={},l="",c="",s=!1;t.value.children.forEach(function u(p){switch(p.type){case"Value":case"Brackets":case"Parentheses":p.children.forEach(u);break;case"Raw":s=!0;break;case"Identifier":{let{name:h}=p;l||(l=Z(h).vendor),/\\[09]/.test(h)&&(c=RegExp.lastMatch),Ll.hasOwnProperty(n)?Ll[n].indexOf(h)===-1&&(a[h]=!0):Tl.hasOwnProperty(n)&&Tl[n].test(h)&&(a[h]=!0);break}case"Function":{let{name:h}=p;l||(l=Z(h).vendor),h==="rect"&&(p.children.some(b=>b.type==="Operator"&&b.value===",")||(h="rect-backward")),a[h+"()"]=!0,p.children.forEach(u);break}case"Dimension":{let{unit:h}=p;switch(/\\[09]/.test(h)&&(c=RegExp.lastMatch),h){case"rem":case"vw":case"vh":case"vmin":case"vmax":case"vm":a[h]=!0;break}break}}}),i=s?"!"+Vm++:"!"+Object.keys(a).sort()+"|"+c+l;break;case"Raw":i="!"+t.value.value;break;default:i=ne(t.value)}r[o]=i}return e+i}function Km(e,t,r){let n=me(t.property);if(Pl.hasOwnProperty(n.basename)){let o=Pl[n.basename];for(let i of o){let a=Il(n.prefix+i,t,r),l=e.hasOwnProperty(a)?e[a]:null;if(l&&(!t.important||l.item.data.important))return l}}}function Qm(e,t,r,n,o){let i=e.block.children;i.forEachRight(function(a,l){let{property:c}=a,s=Il(c,a,o),u=n[s];u&&!Gm.has(c)?a.important&&!u.item.data.important?(n[s]={block:i,item:l},u.block.remove(u.item)):i.remove(l):Km(n,a,o)?i.remove(l):(a.fingerprint=s,n[s]={block:i,item:l})}),i.isEmpty&&r.remove(t)}function Oi(e){let t={},r=Object.create(null);F(e,{visit:"Rule",reverse:!0,enter(n,o,i){let a=this.block||this.stylesheet,l=(n.pseudoSignature||"")+"|"+n.prelude.children.first.id,c,s;t.hasOwnProperty(a.id)?c=t[a.id]:(c={},t[a.id]=c),c.hasOwnProperty(l)?s=c[l]:(s={},c[l]=s),Qm.call(this,n,o,i,s,r)}})}function $m(e,t,r){let n=e.prelude.children,o=e.block.children,i=n.first.compareMarker,a={};r.nextUntil(t.next,function(l,c){if(l.type!=="Rule")return De.call(n,l);if(e.pseudoSignature!==l.pseudoSignature)return!0;let s=l.prelude.children.head,u=l.block.children,p=s.data.compareMarker;if(p in a)return!0;if(n.head===n.tail&&n.first.id===s.data.id){o.appendList(u),r.remove(c);return}if(zt(o,u)){let h=s.data.id;n.some((m,b)=>{let T=m.id;if(h<T)return n.insert(s,b),!0;if(!b.next)return n.insert(s),!0}),r.remove(c);return}if(p===i)return!0;a[p]=!0})}function Di(e){F(e,{visit:"Rule",enter:$m})}function Ni(e){return e.reduce((t,r)=>t+r.id.length+1,0)-1}function Mi(e){let t=0;for(let r of e)t+=r.length;return t+e.length-1}function Xm(e,t,r){let n=this.block!==null?this.block.avoidRulesMerge:!1,o=e.prelude.children,i=e.block,a=Object.create(null),l=!0,c=!0;r.prevUntil(t.prev,function(s,u){let p=s.block,h=s.type;if(h!=="Rule"){let T=De.call(o,s);return!T&&h==="Atrule"&&p&&F(p,{visit:"Rule",enter(N){N.prelude.children.forEach(C=>{a[C.compareMarker]=!0})}}),T}if(e.pseudoSignature!==s.pseudoSignature)return!0;let m=s.prelude.children;if(c=!m.some(T=>T.compareMarker in a),!c&&!l)return!0;if(l&&Rt(m,o))return p.children.appendList(i.children),r.remove(t),!0;let b=Ai(i.children,p.children);if(b.eq.length){if(!b.ne1.length&&!b.ne2.length)return c&&(Oe(o,m),r.remove(u)),!0;if(!n)if(b.ne1.length&&!b.ne2.length){let T=Ni(o),N=Mi(b.eq);l&&T<N&&(Oe(m,o),i.children.fromArray(b.ne1))}else if(!b.ne1.length&&b.ne2.length){let T=Ni(m),N=Mi(b.eq);c&&T<N&&(Oe(o,m),p.children.fromArray(b.ne2))}else{let T={type:"SelectorList",loc:null,children:Oe(m.copy(),o)},N=Ni(T.children)+2;if(Mi(b.eq)>=N){let D=r.createItem({type:"Rule",loc:null,prelude:T,block:{type:"Block",loc:null,children:new w().fromArray(b.eq)},pseudoSignature:e.pseudoSignature});return i.children.fromArray(b.ne1),p.children.fromArray(b.ne2overrided),l?r.insert(D,u):r.insert(D,t),!0}}}l&&(l=!m.some(T=>o.some(N=>N.compareMarker===T.compareMarker))),m.forEach(T=>{a[T.compareMarker]=!0})})}function Ri(e){F(e,{visit:"Rule",reverse:!0,enter:Xm})}function Ol(e,t){let r=Si(e,t);t.logger("prepare",e),Ci(e,t),t.logger("mergeAtrule",e),Ei(e),t.logger("initialMergeRuleset",e),Ti(e),t.logger("disjoinRuleset",e),Ii(e,r),t.logger("restructShorthand",e),Oi(e),t.logger("restructBlock",e),Di(e),t.logger("mergeRuleset",e),Ri(e),t.logger("restructRuleset",e)}function Zm(e,t){let r=new w,n=!1,o;return e.nextUntil(e.head,(i,a,l)=>{if(i.type==="Comment"){if(!t||i.value.charAt(0)!=="!"){l.remove(a);return}if(n||o)return!0;l.remove(a),o=i;return}i.type!=="WhiteSpace"&&(n=!0),r.insert(l.remove(a))}),{comment:o,stylesheet:{type:"StyleSheet",loc:null,children:r}}}function Jm(e,t,r,n){n.logger(`Compress block #${r}`,null,!0);let o=1;return e.type==="StyleSheet"&&(e.firstAtrulesAllowed=t,e.id=o++),F(e,{visit:"Atrule",enter(i){i.block!==null&&(i.block.id=o++)}}),n.logger("init",e),il(e,n),n.logger("clean",e),yl(e,n),n.logger("replace",e),n.restructuring&&Ol(e,n),e}function ed(e){let t="comments"in e?e.comments:"exclamation";return typeof t=="boolean"?t=t?"exclamation":!1:t!=="exclamation"&&t!=="first-exclamation"&&(t=!1),t}function td(e){return"restructure"in e?e.restructure:"restructuring"in e?e.restructuring:!0}function rd(e){return new w().appendData({type:"Rule",loc:null,prelude:{type:"SelectorList",loc:null,children:new w().appendData({type:"Selector",loc:null,children:new w().appendData({type:"TypeSelector",loc:null,name:"x"})})},block:e})}function zi(e,t){e=e||{type:"StyleSheet",loc:null,children:new w},t=t||{};let r={logger:typeof t.logger=="function"?t.logger:function(){},restructuring:td(t),forceMediaMerge:Boolean(t.forceMediaMerge),usage:t.usage?rl(t.usage):!1},n=new w,o=ed(t),i=!0,a,l,c=1,s;t.clone&&(e=Dt(e)),e.type==="StyleSheet"?(a=e.children,e.children=n):a=rd(e);do{if(l=Zm(a,Boolean(o)),Jm(l.stylesheet,i,c++,r),s=l.stylesheet.children,l.comment&&(n.isEmpty||n.insert(w.createItem({type:"Raw",value:` -`})),n.insert(w.createItem(l.comment)),s.isEmpty||n.insert(w.createItem({type:"Raw",value:` -`}))),i&&!s.isEmpty){let u=s.last;(u.type!=="Atrule"||u.name!=="import"&&u.name!=="charset")&&(i=!1)}o!=="exclamation"&&(o=!1),n.appendList(s)}while(!a.isEmpty);return{ast:e}}function Dl(e){let t=nt.encode(e,!0),r=nt.encode(e);return t.length<r.length?t:r}var{lexer:nd,tokenize:od,parse:id,generate:ad,walk:sd,find:ld,findLast:cd,findAll:ud,fromPlainObject:pd,toPlainObject:hd}=el({node:{String:{generate(e){this.token(Ee.String,Dl(e.value))}},Url:{generate(e){let t=Pt.encode(e.value),r=Dl(e.value);this.token(Ee.Url,t.length<=r.length+5?t:"url("+r+")")}}}});var Nl={};y(Nl,{addSelectors:()=>Oe,compareDeclarations:()=>Ai,hasSimilarSelectors:()=>wr,isEqualDeclarations:()=>zt,isEqualSelectors:()=>Rt,processSelector:()=>Mt,unsafeToSkipNode:()=>De});var{parse:fd,generate:Bi,compress:md}=Fi;function at(e,t,r,n){return t.debug&&console.error(`## ${e} done in %d ms -`,Date.now()-r),n}function dd(e){let t;return function(n,o){let i=n;if(o&&(i=`[${((Date.now()-t)/1e3).toFixed(3)}s] ${i}`),e>1&&o){let a=Bi(o);e===2&&a.length>256&&(a=a.substr(0,256)+"..."),i+=` - ${a} -`}console.error(i),t=Date.now()}}function gd(e){return e={...e},typeof e.logger!="function"&&e.debug&&(e.logger=dd(e.debug)),e}function Ml(e,t,r){Array.isArray(r)||(r=[r]),r.forEach(n=>n(e,t))}function Rl(e,t,r){r=r||{};let n=r.filename||"<unknown>",o,i=at("parsing",r,Date.now(),fd(t,{context:e,filename:n,positions:Boolean(r.sourceMap)}));r.beforeCompress&&at("beforeCompress",r,Date.now(),Ml(i,r,r.beforeCompress));let a=at("compress",r,Date.now(),md(i,gd(r)));return r.afterCompress&&at("afterCompress",r,Date.now(),Ml(a,r,r.afterCompress)),r.sourceMap?o=at("generate(sourceMap: true)",r,Date.now(),(()=>{let l=Bi(a.ast,{sourceMap:!0});return l.map._file=n,l.map.setSourceContent(n,t),l})()):o=at("generate",r,Date.now(),{css:Bi(a.ast),map:null}),o}function X0(e,t){return Rl("stylesheet",e,t)}function Z0(e,t){return Rl("declarationList",e,t)}export{X0 as minify,Z0 as minifyBlock,Fi as syntax,Nl as utils,Hl as version}; diff --git a/node_modules/csso/dist/csso.js b/node_modules/csso/dist/csso.js deleted file mode 100644 index 13acd273..00000000 --- a/node_modules/csso/dist/csso.js +++ /dev/null @@ -1,16 +0,0 @@ -var csso=(()=>{var Bl=Object.create;var Bt=Object.defineProperty;var _l=Object.getOwnPropertyDescriptor;var Ul=Object.getOwnPropertyNames;var jl=Object.getPrototypeOf,ql=Object.prototype.hasOwnProperty;var Ue=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),b=(e,t)=>{for(var r in t)Bt(e,r,{get:t[r],enumerable:!0})},Ui=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ul(t))!ql.call(e,o)&&o!==r&&Bt(e,o,{get:()=>t[o],enumerable:!(n=_l(t,o))||n.enumerable});return e};var Hl=(e,t,r)=>(r=e!=null?Bl(jl(e)):{},Ui(t||!e||!e.__esModule?Bt(r,"default",{value:e,enumerable:!0}):r,e)),Wl=e=>Ui(Bt({},"__esModule",{value:!0}),e);var ta=Ue(Nr=>{var ea="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");Nr.encode=function(e){if(0<=e&&e<ea.length)return ea[e];throw new TypeError("Must be between 0 and 63: "+e)};Nr.decode=function(e){var t=65,r=90,n=97,o=122,i=48,a=57,l=43,c=47,s=26,u=52;return t<=e&&e<=r?e-t:n<=e&&e<=o?e-n+s:i<=e&&e<=a?e-i+u:e==l?62:e==c?63:-1}});var aa=Ue(Rr=>{var ra=ta(),Mr=5,na=1<<Mr,oa=na-1,ia=na;function rc(e){return e<0?(-e<<1)+1:(e<<1)+0}function nc(e){var t=(e&1)===1,r=e>>1;return t?-r:r}Rr.encode=function(t){var r="",n,o=rc(t);do n=o&oa,o>>>=Mr,o>0&&(n|=ia),r+=ra.encode(n);while(o>0);return r};Rr.decode=function(t,r,n){var o=t.length,i=0,a=0,l,c;do{if(r>=o)throw new Error("Expected more digits in base 64 VLQ value.");if(c=ra.decode(t.charCodeAt(r++)),c===-1)throw new Error("Invalid base64 digit: "+t.charAt(r-1));l=!!(c&ia),c&=oa,i=i+(c<<a),a+=Mr}while(l);n.value=nc(i),n.rest=r}});var Kt=Ue(X=>{function oc(e,t,r){if(t in e)return e[t];if(arguments.length===3)return r;throw new Error('"'+t+'" is a required argument.')}X.getArg=oc;var sa=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,ic=/^data:.+\,.+$/;function dt(e){var t=e.match(sa);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}X.urlParse=dt;function Ve(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}X.urlGenerate=Ve;var ac=32;function sc(e){var t=[];return function(r){for(var n=0;n<t.length;n++)if(t[n].input===r){var o=t[0];return t[0]=t[n],t[n]=o,t[0].result}var i=e(r);return t.unshift({input:r,result:i}),t.length>ac&&t.pop(),i}}var zr=sc(function(t){var r=t,n=dt(t);if(n){if(!n.path)return t;r=n.path}for(var o=X.isAbsolute(r),i=[],a=0,l=0;;)if(a=l,l=r.indexOf("/",a),l===-1){i.push(r.slice(a));break}else for(i.push(r.slice(a,l));l<r.length&&r[l]==="/";)l++;for(var c,s=0,l=i.length-1;l>=0;l--)c=i[l],c==="."?i.splice(l,1):c===".."?s++:s>0&&(c===""?(i.splice(l+1,s),s=0):(i.splice(l,2),s--));return r=i.join("/"),r===""&&(r=o?"/":"."),n?(n.path=r,Ve(n)):r});X.normalize=zr;function la(e,t){e===""&&(e="."),t===""&&(t=".");var r=dt(t),n=dt(e);if(n&&(e=n.path||"/"),r&&!r.scheme)return n&&(r.scheme=n.scheme),Ve(r);if(r||t.match(ic))return t;if(n&&!n.host&&!n.path)return n.host=t,Ve(n);var o=t.charAt(0)==="/"?t:zr(e.replace(/\/+$/,"")+"/"+t);return n?(n.path=o,Ve(n)):o}X.join=la;X.isAbsolute=function(e){return e.charAt(0)==="/"||sa.test(e)};function lc(e,t){e===""&&(e="."),e=e.replace(/\/$/,"");for(var r=0;t.indexOf(e+"/")!==0;){var n=e.lastIndexOf("/");if(n<0||(e=e.slice(0,n),e.match(/^([^\/]+:\/)?\/*$/)))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)}X.relative=lc;var ca=function(){var e=Object.create(null);return!("__proto__"in e)}();function ua(e){return e}function cc(e){return pa(e)?"$"+e:e}X.toSetString=ca?ua:cc;function uc(e){return pa(e)?e.slice(1):e}X.fromSetString=ca?ua:uc;function pa(e){if(!e)return!1;var t=e.length;if(t<9||e.charCodeAt(t-1)!==95||e.charCodeAt(t-2)!==95||e.charCodeAt(t-3)!==111||e.charCodeAt(t-4)!==116||e.charCodeAt(t-5)!==111||e.charCodeAt(t-6)!==114||e.charCodeAt(t-7)!==112||e.charCodeAt(t-8)!==95||e.charCodeAt(t-9)!==95)return!1;for(var r=t-10;r>=0;r--)if(e.charCodeAt(r)!==36)return!1;return!0}function pc(e,t,r){var n=we(e.source,t.source);return n!==0||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:we(e.name,t.name)}X.compareByOriginalPositions=pc;function hc(e,t,r){var n;return n=e.originalLine-t.originalLine,n!==0||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:we(e.name,t.name)}X.compareByOriginalPositionsNoSource=hc;function fc(e,t,r){var n=e.generatedLine-t.generatedLine;return n!==0||(n=e.generatedColumn-t.generatedColumn,n!==0||r)||(n=we(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:we(e.name,t.name)}X.compareByGeneratedPositionsDeflated=fc;function mc(e,t,r){var n=e.generatedColumn-t.generatedColumn;return n!==0||r||(n=we(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:we(e.name,t.name)}X.compareByGeneratedPositionsDeflatedNoLine=mc;function we(e,t){return e===t?0:e===null?1:t===null?-1:e>t?1:-1}function dc(e,t){var r=e.generatedLine-t.generatedLine;return r!==0||(r=e.generatedColumn-t.generatedColumn,r!==0)||(r=we(e.source,t.source),r!==0)||(r=e.originalLine-t.originalLine,r!==0)||(r=e.originalColumn-t.originalColumn,r!==0)?r:we(e.name,t.name)}X.compareByGeneratedPositionsInflated=dc;function gc(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}X.parseSourceMapInput=gc;function bc(e,t,r){if(t=t||"",e&&(e[e.length-1]!=="/"&&t[0]!=="/"&&(e+="/"),t=e+t),r){var n=dt(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var o=n.path.lastIndexOf("/");o>=0&&(n.path=n.path.substring(0,o+1))}t=la(Ve(n),t)}return zr(t)}X.computeSourceURL=bc});var fa=Ue(ha=>{var Fr=Kt(),Br=Object.prototype.hasOwnProperty,ze=typeof Map<"u";function ve(){this._array=[],this._set=ze?new Map:Object.create(null)}ve.fromArray=function(t,r){for(var n=new ve,o=0,i=t.length;o<i;o++)n.add(t[o],r);return n};ve.prototype.size=function(){return ze?this._set.size:Object.getOwnPropertyNames(this._set).length};ve.prototype.add=function(t,r){var n=ze?t:Fr.toSetString(t),o=ze?this.has(t):Br.call(this._set,n),i=this._array.length;(!o||r)&&this._array.push(t),o||(ze?this._set.set(t,i):this._set[n]=i)};ve.prototype.has=function(t){if(ze)return this._set.has(t);var r=Fr.toSetString(t);return Br.call(this._set,r)};ve.prototype.indexOf=function(t){if(ze){var r=this._set.get(t);if(r>=0)return r}else{var n=Fr.toSetString(t);if(Br.call(this._set,n))return this._set[n]}throw new Error('"'+t+'" is not in the set.')};ve.prototype.at=function(t){if(t>=0&&t<this._array.length)return this._array[t];throw new Error("No element indexed by "+t)};ve.prototype.toArray=function(){return this._array.slice()};ha.ArraySet=ve});var ga=Ue(da=>{var ma=Kt();function yc(e,t){var r=e.generatedLine,n=t.generatedLine,o=e.generatedColumn,i=t.generatedColumn;return n>r||n==r&&i>=o||ma.compareByGeneratedPositionsInflated(e,t)<=0}function Qt(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Qt.prototype.unsortedForEach=function(t,r){this._array.forEach(t,r)};Qt.prototype.add=function(t){yc(this._last,t)?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))};Qt.prototype.toArray=function(){return this._sorted||(this._array.sort(ma.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};da.MappingList=Qt});var ya=Ue(ba=>{var gt=aa(),Y=Kt(),$t=fa().ArraySet,xc=ga().MappingList;function se(e){e||(e={}),this._file=Y.getArg(e,"file",null),this._sourceRoot=Y.getArg(e,"sourceRoot",null),this._skipValidation=Y.getArg(e,"skipValidation",!1),this._sources=new $t,this._names=new $t,this._mappings=new xc,this._sourcesContents=null}se.prototype._version=3;se.fromSourceMap=function(t){var r=t.sourceRoot,n=new se({file:t.file,sourceRoot:r});return t.eachMapping(function(o){var i={generated:{line:o.generatedLine,column:o.generatedColumn}};o.source!=null&&(i.source=o.source,r!=null&&(i.source=Y.relative(r,i.source)),i.original={line:o.originalLine,column:o.originalColumn},o.name!=null&&(i.name=o.name)),n.addMapping(i)}),t.sources.forEach(function(o){var i=o;r!==null&&(i=Y.relative(r,o)),n._sources.has(i)||n._sources.add(i);var a=t.sourceContentFor(o);a!=null&&n.setSourceContent(o,a)}),n};se.prototype.addMapping=function(t){var r=Y.getArg(t,"generated"),n=Y.getArg(t,"original",null),o=Y.getArg(t,"source",null),i=Y.getArg(t,"name",null);this._skipValidation||this._validateMapping(r,n,o,i),o!=null&&(o=String(o),this._sources.has(o)||this._sources.add(o)),i!=null&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:o,name:i})};se.prototype.setSourceContent=function(t,r){var n=t;this._sourceRoot!=null&&(n=Y.relative(this._sourceRoot,n)),r!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[Y.toSetString(n)]=r):this._sourcesContents&&(delete this._sourcesContents[Y.toSetString(n)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};se.prototype.applySourceMap=function(t,r,n){var o=r;if(r==null){if(t.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);o=t.file}var i=this._sourceRoot;i!=null&&(o=Y.relative(i,o));var a=new $t,l=new $t;this._mappings.unsortedForEach(function(c){if(c.source===o&&c.originalLine!=null){var s=t.originalPositionFor({line:c.originalLine,column:c.originalColumn});s.source!=null&&(c.source=s.source,n!=null&&(c.source=Y.join(n,c.source)),i!=null&&(c.source=Y.relative(i,c.source)),c.originalLine=s.line,c.originalColumn=s.column,s.name!=null&&(c.name=s.name))}var u=c.source;u!=null&&!a.has(u)&&a.add(u);var p=c.name;p!=null&&!l.has(p)&&l.add(p)},this),this._sources=a,this._names=l,t.sources.forEach(function(c){var s=t.sourceContentFor(c);s!=null&&(n!=null&&(c=Y.join(n,c)),i!=null&&(c=Y.relative(i,c)),this.setSourceContent(c,s))},this)};se.prototype._validateMapping=function(t,r,n,o){if(r&&typeof r.line!="number"&&typeof r.column!="number")throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if(!(t&&"line"in t&&"column"in t&&t.line>0&&t.column>=0&&!r&&!n&&!o)){if(t&&"line"in t&&"column"in t&&r&&"line"in r&&"column"in r&&t.line>0&&t.column>=0&&r.line>0&&r.column>=0&&n)return;throw new Error("Invalid mapping: "+JSON.stringify({generated:t,source:n,original:r,name:o}))}};se.prototype._serializeMappings=function(){for(var t=0,r=1,n=0,o=0,i=0,a=0,l="",c,s,u,p,h=this._mappings.toArray(),m=0,y=h.length;m<y;m++){if(s=h[m],c="",s.generatedLine!==r)for(t=0;s.generatedLine!==r;)c+=";",r++;else if(m>0){if(!Y.compareByGeneratedPositionsInflated(s,h[m-1]))continue;c+=","}c+=gt.encode(s.generatedColumn-t),t=s.generatedColumn,s.source!=null&&(p=this._sources.indexOf(s.source),c+=gt.encode(p-a),a=p,c+=gt.encode(s.originalLine-1-o),o=s.originalLine-1,c+=gt.encode(s.originalColumn-n),n=s.originalColumn,s.name!=null&&(u=this._names.indexOf(s.name),c+=gt.encode(u-i),i=u)),l+=c}return l};se.prototype._generateSourcesContent=function(t,r){return t.map(function(n){if(!this._sourcesContents)return null;r!=null&&(n=Y.relative(r,n));var o=Y.toSetString(n);return Object.prototype.hasOwnProperty.call(this._sourcesContents,o)?this._sourcesContents[o]:null},this)};se.prototype.toJSON=function(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(t.file=this._file),this._sourceRoot!=null&&(t.sourceRoot=this._sourceRoot),this._sourcesContents&&(t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot)),t};se.prototype.toString=function(){return JSON.stringify(this.toJSON())};ba.SourceMapGenerator=se});var kd={};b(kd,{minify:()=>yd,minifyBlock:()=>xd,syntax:()=>Cr,utils:()=>Bi,version:()=>ji});var ji="5.0.4";var Cr={};b(Cr,{compress:()=>Fi,find:()=>cd,findAll:()=>pd,findLast:()=>ud,fromPlainObject:()=>hd,generate:()=>sd,lexer:()=>od,parse:()=>ad,specificity:()=>wr,toPlainObject:()=>fd,tokenize:()=>id,walk:()=>ld});var Ee={};b(Ee,{AtKeyword:()=>M,BadString:()=>Ne,BadUrl:()=>K,CDC:()=>W,CDO:()=>pe,Colon:()=>R,Comma:()=>Q,Comment:()=>I,Delim:()=>g,Dimension:()=>k,EOF:()=>st,Function:()=>x,Hash:()=>A,Ident:()=>f,LeftCurlyBracket:()=>_,LeftParenthesis:()=>P,LeftSquareBracket:()=>H,Number:()=>d,Percentage:()=>L,RightCurlyBracket:()=>G,RightParenthesis:()=>S,RightSquareBracket:()=>$,Semicolon:()=>q,String:()=>V,Url:()=>U,WhiteSpace:()=>v});var st=0,f=1,x=2,M=3,A=4,V=5,Ne=6,U=7,K=8,g=9,d=10,L=11,k=12,v=13,pe=14,W=15,R=16,q=17,Q=18,H=19,$=20,P=21,S=22,_=23,G=24,I=25;function j(e){return e>=48&&e<=57}function oe(e){return j(e)||e>=65&&e<=70||e>=97&&e<=102}function Ut(e){return e>=65&&e<=90}function Yl(e){return e>=97&&e<=122}function Vl(e){return Ut(e)||Yl(e)}function Gl(e){return e>=128}function _t(e){return Vl(e)||Gl(e)||e===95}function lt(e){return _t(e)||j(e)||e===45}function Kl(e){return e>=0&&e<=8||e===11||e>=14&&e<=31||e===127}function ct(e){return e===10||e===13||e===12}function he(e){return ct(e)||e===32||e===9}function re(e,t){return!(e!==92||ct(t)||t===0)}function je(e,t,r){return e===45?_t(t)||t===45||re(t,r):_t(e)?!0:e===92?re(e,t):!1}function jt(e,t,r){return e===43||e===45?j(t)?2:t===46&&j(r)?3:0:e===46?j(t)?2:0:j(e)?1:0}function qt(e){return e===65279||e===65534?1:0}var Ar=new Array(128),Ql=128,ut=130,Er=131,Ht=132,Tr=133;for(let e=0;e<Ar.length;e++)Ar[e]=he(e)&&ut||j(e)&&Er||_t(e)&&Ht||Kl(e)&&Tr||e||Ql;function Wt(e){return e<128?Ar[e]:Ht}function qe(e,t){return t<e.length?e.charCodeAt(t):0}function Yt(e,t,r){return r===13&&qe(e,t+1)===10?2:1}function xe(e,t,r){let n=e.charCodeAt(t);return Ut(n)&&(n=n|32),n===r}function ke(e,t,r,n){if(r-t!==n.length||t<0||r>e.length)return!1;for(let o=t;o<r;o++){let i=n.charCodeAt(o-t),a=e.charCodeAt(o);if(Ut(a)&&(a=a|32),a!==i)return!1}return!0}function qi(e,t){for(;t>=0&&he(e.charCodeAt(t));t--);return t+1}function pt(e,t){for(;t<e.length&&he(e.charCodeAt(t));t++);return t}function Lr(e,t){for(;t<e.length&&j(e.charCodeAt(t));t++);return t}function fe(e,t){if(t+=2,oe(qe(e,t-1))){for(let n=Math.min(e.length,t+5);t<n&&oe(qe(e,t));t++);let r=qe(e,t);he(r)&&(t+=Yt(e,t,r))}return t}function ht(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(!lt(r)){if(re(r,qe(e,t+1))){t=fe(e,t)-1;continue}break}}return t}function Me(e,t){let r=e.charCodeAt(t);if((r===43||r===45)&&(r=e.charCodeAt(t+=1)),j(r)&&(t=Lr(e,t+1),r=e.charCodeAt(t)),r===46&&j(e.charCodeAt(t+1))&&(t+=2,t=Lr(e,t)),xe(e,t,101)){let n=0;r=e.charCodeAt(t+1),(r===45||r===43)&&(n=1,r=e.charCodeAt(t+2)),j(r)&&(t=Lr(e,t+1+n+1))}return t}function Vt(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(r===41){t++;break}re(r,qe(e,t+1))&&(t=fe(e,t))}return t}function ft(e){if(e.length===1&&!oe(e.charCodeAt(0)))return e[0];let t=parseInt(e,16);return(t===0||t>=55296&&t<=57343||t>1114111)&&(t=65533),String.fromCodePoint(t)}var He=["EOF-token","ident-token","function-token","at-keyword-token","hash-token","string-token","bad-string-token","url-token","bad-url-token","delim-token","number-token","percentage-token","dimension-token","whitespace-token","CDO-token","CDC-token","colon-token","semicolon-token","comma-token","[-token","]-token","(-token",")-token","{-token","}-token"];function We(e=null,t){return e===null||e.length<t?new Uint32Array(Math.max(t+1024,16384)):e}var Hi=10,$l=12,Wi=13;function Yi(e){let t=e.source,r=t.length,n=t.length>0?qt(t.charCodeAt(0)):0,o=We(e.lines,r),i=We(e.columns,r),a=e.startLine,l=e.startColumn;for(let c=n;c<r;c++){let s=t.charCodeAt(c);o[c]=a,i[c]=l++,(s===Hi||s===Wi||s===$l)&&(s===Wi&&c+1<r&&t.charCodeAt(c+1)===Hi&&(c++,o[c]=a,i[c]=l),a++,l=1)}o[r]=a,i[r]=l,e.lines=o,e.columns=i,e.computed=!0}var Gt=class{constructor(){this.lines=null,this.columns=null,this.computed=!1}setSource(t,r=0,n=1,o=1){this.source=t,this.startOffset=r,this.startLine=n,this.startColumn=o,this.computed=!1}getLocation(t,r){return this.computed||Yi(this),{source:r,offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]}}getLocationRange(t,r,n){return this.computed||Yi(this),{source:n,start:{offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]},end:{offset:this.startOffset+r,line:this.lines[r],column:this.columns[r]}}}};var ae=16777215,Te=24,Xl=new Map([[2,22],[21,22],[19,20],[23,24]]),mt=class{constructor(t,r){this.setSource(t,r)}reset(){this.eof=!1,this.tokenIndex=-1,this.tokenType=0,this.tokenStart=this.firstCharOffset,this.tokenEnd=this.firstCharOffset}setSource(t="",r=()=>{}){t=String(t||"");let n=t.length,o=We(this.offsetAndType,t.length+1),i=We(this.balance,t.length+1),a=0,l=0,c=0,s=-1;for(this.offsetAndType=null,this.balance=null,r(t,(u,p,h)=>{switch(u){default:i[a]=n;break;case l:{let m=c&ae;for(c=i[m],l=c>>Te,i[a]=m,i[m++]=a;m<a;m++)i[m]===n&&(i[m]=a);break}case 21:case 2:case 19:case 23:i[a]=c,l=Xl.get(u),c=l<<Te|a;break}o[a++]=u<<Te|h,s===-1&&(s=p)}),o[a]=0<<Te|n,i[a]=n,i[n]=n;c!==0;){let u=c&ae;c=i[u],i[u]=n}this.source=t,this.firstCharOffset=s===-1?0:s,this.tokenCount=a,this.offsetAndType=o,this.balance=i,this.reset(),this.next()}lookupType(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t]>>Te:0}lookupOffset(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t-1]&ae:this.source.length}lookupValue(t,r){return t+=this.tokenIndex,t<this.tokenCount?ke(this.source,this.offsetAndType[t-1]&ae,this.offsetAndType[t]&ae,r):!1}getTokenStart(t){return t===this.tokenIndex?this.tokenStart:t>0?t<this.tokenCount?this.offsetAndType[t-1]&ae:this.offsetAndType[this.tokenCount]&ae:this.firstCharOffset}substrToCursor(t){return this.source.substring(t,this.tokenStart)}isBalanceEdge(t){return this.balance[this.tokenIndex]<t}isDelim(t,r){return r?this.lookupType(r)===9&&this.source.charCodeAt(this.lookupOffset(r))===t:this.tokenType===9&&this.source.charCodeAt(this.tokenStart)===t}skip(t){let r=this.tokenIndex+t;r<this.tokenCount?(this.tokenIndex=r,this.tokenStart=this.offsetAndType[r-1]&ae,r=this.offsetAndType[r],this.tokenType=r>>Te,this.tokenEnd=r&ae):(this.tokenIndex=this.tokenCount,this.next())}next(){let t=this.tokenIndex+1;t<this.tokenCount?(this.tokenIndex=t,this.tokenStart=this.tokenEnd,t=this.offsetAndType[t],this.tokenType=t>>Te,this.tokenEnd=t&ae):(this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=0,this.tokenStart=this.tokenEnd=this.source.length)}skipSC(){for(;this.tokenType===13||this.tokenType===25;)this.next()}skipUntilBalanced(t,r){let n=t,o,i;e:for(;n<this.tokenCount;n++){if(o=this.balance[n],o<t)break e;switch(i=n>0?this.offsetAndType[n-1]&ae:this.firstCharOffset,r(this.source.charCodeAt(i))){case 1:break e;case 2:n++;break e;default:this.balance[o]===n&&(n=o)}}this.skip(n-this.tokenIndex)}forEachToken(t){for(let r=0,n=this.firstCharOffset;r<this.tokenCount;r++){let o=n,i=this.offsetAndType[r],a=i&ae,l=i>>Te;n=a,t(l,o,a,r)}}dump(){let t=new Array(this.tokenCount);return this.forEachToken((r,n,o,i)=>{t[i]={idx:i,type:He[r],chunk:this.source.substring(n,o),balance:this.balance[i]}}),t}};function Le(e,t){function r(p){return p<l?e.charCodeAt(p):0}function n(){if(s=Me(e,s),je(r(s),r(s+1),r(s+2))){u=12,s=ht(e,s);return}if(r(s)===37){u=11,s++;return}u=10}function o(){let p=s;if(s=ht(e,s),ke(e,p,s,"url")&&r(s)===40){if(s=pt(e,s+1),r(s)===34||r(s)===39){u=2,s=p+4;return}a();return}if(r(s)===40){u=2,s++;return}u=1}function i(p){for(p||(p=r(s++)),u=5;s<e.length;s++){let h=e.charCodeAt(s);switch(Wt(h)){case p:s++;return;case ut:if(ct(h)){s+=Yt(e,s,h),u=6;return}break;case 92:if(s===e.length-1)break;let m=r(s+1);ct(m)?s+=Yt(e,s+1,m):re(h,m)&&(s=fe(e,s)-1);break}}}function a(){for(u=7,s=pt(e,s);s<e.length;s++){let p=e.charCodeAt(s);switch(Wt(p)){case 41:s++;return;case ut:if(s=pt(e,s),r(s)===41||s>=e.length){s<e.length&&s++;return}s=Vt(e,s),u=8;return;case 34:case 39:case 40:case Tr:s=Vt(e,s),u=8;return;case 92:if(re(p,r(s+1))){s=fe(e,s)-1;break}s=Vt(e,s),u=8;return}}}e=String(e||"");let l=e.length,c=qt(r(0)),s=c,u;for(;s<l;){let p=e.charCodeAt(s);switch(Wt(p)){case ut:u=13,s=pt(e,s+1);break;case 34:i();break;case 35:lt(r(s+1))||re(r(s+1),r(s+2))?(u=4,s=ht(e,s+1)):(u=9,s++);break;case 39:i();break;case 40:u=21,s++;break;case 41:u=22,s++;break;case 43:jt(p,r(s+1),r(s+2))?n():(u=9,s++);break;case 44:u=18,s++;break;case 45:jt(p,r(s+1),r(s+2))?n():r(s+1)===45&&r(s+2)===62?(u=15,s=s+3):je(p,r(s+1),r(s+2))?o():(u=9,s++);break;case 46:jt(p,r(s+1),r(s+2))?n():(u=9,s++);break;case 47:r(s+1)===42?(u=25,s=e.indexOf("*/",s+2),s=s===-1?e.length:s+2):(u=9,s++);break;case 58:u=16,s++;break;case 59:u=17,s++;break;case 60:r(s+1)===33&&r(s+2)===45&&r(s+3)===45?(u=14,s=s+4):(u=9,s++);break;case 64:je(r(s+1),r(s+2),r(s+3))?(u=3,s=ht(e,s+1)):(u=9,s++);break;case 91:u=19,s++;break;case 92:re(p,r(s+1))?o():(u=9,s++);break;case 93:u=20,s++;break;case 123:u=23,s++;break;case 125:u=24,s++;break;case Er:n();break;case Ht:o();break;default:u=9,s++}t(u,c,c=s)}}var Ye=null,w=class{static createItem(t){return{prev:null,next:null,data:t}}constructor(){this.head=null,this.tail=null,this.cursor=null}createItem(t){return w.createItem(t)}allocateCursor(t,r){let n;return Ye!==null?(n=Ye,Ye=Ye.cursor,n.prev=t,n.next=r,n.cursor=this.cursor):n={prev:t,next:r,cursor:this.cursor},this.cursor=n,n}releaseCursor(){let{cursor:t}=this;this.cursor=t.cursor,t.prev=null,t.next=null,t.cursor=Ye,Ye=t}updateCursors(t,r,n,o){let{cursor:i}=this;for(;i!==null;)i.prev===t&&(i.prev=r),i.next===n&&(i.next=o),i=i.cursor}*[Symbol.iterator](){for(let t=this.head;t!==null;t=t.next)yield t.data}get size(){let t=0;for(let r=this.head;r!==null;r=r.next)t++;return t}get isEmpty(){return this.head===null}get first(){return this.head&&this.head.data}get last(){return this.tail&&this.tail.data}fromArray(t){let r=null;this.head=null;for(let n of t){let o=w.createItem(n);r!==null?r.next=o:this.head=o,o.prev=r,r=o}return this.tail=r,this}toArray(){return[...this]}toJSON(){return[...this]}forEach(t,r=this){let n=this.allocateCursor(null,this.head);for(;n.next!==null;){let o=n.next;n.next=o.next,t.call(r,o.data,o,this)}this.releaseCursor()}forEachRight(t,r=this){let n=this.allocateCursor(this.tail,null);for(;n.prev!==null;){let o=n.prev;n.prev=o.prev,t.call(r,o.data,o,this)}this.releaseCursor()}reduce(t,r,n=this){let o=this.allocateCursor(null,this.head),i=r,a;for(;o.next!==null;)a=o.next,o.next=a.next,i=t.call(n,i,a.data,a,this);return this.releaseCursor(),i}reduceRight(t,r,n=this){let o=this.allocateCursor(this.tail,null),i=r,a;for(;o.prev!==null;)a=o.prev,o.prev=a.prev,i=t.call(n,i,a.data,a,this);return this.releaseCursor(),i}some(t,r=this){for(let n=this.head;n!==null;n=n.next)if(t.call(r,n.data,n,this))return!0;return!1}map(t,r=this){let n=new w;for(let o=this.head;o!==null;o=o.next)n.appendData(t.call(r,o.data,o,this));return n}filter(t,r=this){let n=new w;for(let o=this.head;o!==null;o=o.next)t.call(r,o.data,o,this)&&n.appendData(o.data);return n}nextUntil(t,r,n=this){if(t===null)return;let o=this.allocateCursor(null,t);for(;o.next!==null;){let i=o.next;if(o.next=i.next,r.call(n,i.data,i,this))break}this.releaseCursor()}prevUntil(t,r,n=this){if(t===null)return;let o=this.allocateCursor(t,null);for(;o.prev!==null;){let i=o.prev;if(o.prev=i.prev,r.call(n,i.data,i,this))break}this.releaseCursor()}clear(){this.head=null,this.tail=null}copy(){let t=new w;for(let r of this)t.appendData(r);return t}prepend(t){return this.updateCursors(null,t,this.head,t),this.head!==null?(this.head.prev=t,t.next=this.head):this.tail=t,this.head=t,this}prependData(t){return this.prepend(w.createItem(t))}append(t){return this.insert(t)}appendData(t){return this.insert(w.createItem(t))}insert(t,r=null){if(r!==null)if(this.updateCursors(r.prev,t,r,t),r.prev===null){if(this.head!==r)throw new Error("before doesn't belong to list");this.head=t,r.prev=t,t.next=r,this.updateCursors(null,t)}else r.prev.next=t,t.prev=r.prev,r.prev=t,t.next=r;else this.updateCursors(this.tail,t,null,t),this.tail!==null?(this.tail.next=t,t.prev=this.tail):this.head=t,this.tail=t;return this}insertData(t,r){return this.insert(w.createItem(t),r)}remove(t){if(this.updateCursors(t,t.prev,t,t.next),t.prev!==null)t.prev.next=t.next;else{if(this.head!==t)throw new Error("item doesn't belong to list");this.head=t.next}if(t.next!==null)t.next.prev=t.prev;else{if(this.tail!==t)throw new Error("item doesn't belong to list");this.tail=t.prev}return t.prev=null,t.next=null,t}push(t){this.insert(w.createItem(t))}pop(){return this.tail!==null?this.remove(this.tail):null}unshift(t){this.prepend(w.createItem(t))}shift(){return this.head!==null?this.remove(this.head):null}prependList(t){return this.insertList(t,this.head)}appendList(t){return this.insertList(t)}insertList(t,r){return t.head===null?this:(r!=null?(this.updateCursors(r.prev,t.tail,r,t.head),r.prev!==null?(r.prev.next=t.head,t.head.prev=r.prev):this.head=t.head,r.prev=t.tail,t.tail.next=r):(this.updateCursors(this.tail,t.tail,null,t.head),this.tail!==null?(this.tail.next=t.head,t.head.prev=this.tail):this.head=t.head,this.tail=t.tail),t.head=null,t.tail=null,this)}replace(t,r){"head"in r?this.insertList(r,t):this.insert(r,t),this.remove(t)}};function Re(e,t){let r=Object.create(SyntaxError.prototype),n=new Error;return Object.assign(r,{name:e,message:t,get stack(){return(n.stack||"").replace(/^(.+\n){1,3}/,`${e}: ${t} -`)}})}var Pr=100,Vi=60,Gi=" ";function Ki({source:e,line:t,column:r},n){function o(u,p){return i.slice(u,p).map((h,m)=>String(u+m+1).padStart(c)+" |"+h).join(` -`)}let i=e.split(/\r\n?|\n|\f/),a=Math.max(1,t-n)-1,l=Math.min(t+n,i.length+1),c=Math.max(4,String(l).length)+1,s=0;r+=(Gi.length-1)*(i[t-1].substr(0,r-1).match(/\t/g)||[]).length,r>Pr&&(s=r-Vi+3,r=Vi-2);for(let u=a;u<=l;u++)u>=0&&u<i.length&&(i[u]=i[u].replace(/\t/g,Gi),i[u]=(s>0&&i[u].length>s?"\u2026":"")+i[u].substr(s,Pr-2)+(i[u].length>s+Pr-1?"\u2026":""));return[o(a,t),new Array(r+c+2).join("-")+"^",o(t,l)].filter(Boolean).join(` -`)}function Ir(e,t,r,n,o){return Object.assign(Re("SyntaxError",e),{source:t,offset:r,line:n,column:o,sourceFragment(a){return Ki({source:t,line:n,column:o},isNaN(a)?0:a)},get formattedMessage(){return`Parse error: ${e} -`+Ki({source:t,line:n,column:o},2)}})}function Qi(e){let t=this.createList(),r=!1,n={recognizer:e};for(;!this.eof;){switch(this.tokenType){case 25:this.next();continue;case 13:r=!0,this.next();continue}let o=e.getNode.call(this,n);if(o===void 0)break;r&&(e.onWhiteSpace&&e.onWhiteSpace.call(this,o,t,n),r=!1),t.push(o)}return r&&e.onWhiteSpace&&e.onWhiteSpace.call(this,null,t,n),t}var $i=()=>{},Zl=33,Jl=35,Or=59,Xi=123,Zi=0;function ec(e){return function(){return this[e]()}}function Dr(e){let t=Object.create(null);for(let r in e){let n=e[r],o=n.parse||n;o&&(t[r]=o)}return t}function tc(e){let t={context:Object.create(null),scope:Object.assign(Object.create(null),e.scope),atrule:Dr(e.atrule),pseudo:Dr(e.pseudo),node:Dr(e.node)};for(let r in e.parseContext)switch(typeof e.parseContext[r]){case"function":t.context[r]=e.parseContext[r];break;case"string":t.context[r]=ec(e.parseContext[r]);break}return{config:t,...t,...t.node}}function Ji(e){let t="",r="<unknown>",n=!1,o=$i,i=!1,a=new Gt,l=Object.assign(new mt,tc(e||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:Qi,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket(s){return s===Xi?1:0},consumeUntilLeftCurlyBracketOrSemicolon(s){return s===Xi||s===Or?1:0},consumeUntilExclamationMarkOrSemicolon(s){return s===Zl||s===Or?1:0},consumeUntilSemicolonIncluded(s){return s===Or?2:0},createList(){return new w},createSingleNodeList(s){return new w().appendData(s)},getFirstListNode(s){return s&&s.first},getLastListNode(s){return s&&s.last},parseWithFallback(s,u){let p=this.tokenIndex;try{return s.call(this)}catch(h){if(i)throw h;let m=u.call(this,p);return i=!0,o(h,m),i=!1,m}},lookupNonWSType(s){let u;do if(u=this.lookupType(s++),u!==13)return u;while(u!==Zi);return Zi},charCodeAt(s){return s>=0&&s<t.length?t.charCodeAt(s):0},substring(s,u){return t.substring(s,u)},substrToCursor(s){return this.source.substring(s,this.tokenStart)},cmpChar(s,u){return xe(t,s,u)},cmpStr(s,u,p){return ke(t,s,u,p)},consume(s){let u=this.tokenStart;return this.eat(s),this.substrToCursor(u)},consumeFunctionName(){let s=t.substring(this.tokenStart,this.tokenEnd-1);return this.eat(2),s},consumeNumber(s){let u=t.substring(this.tokenStart,Me(t,this.tokenStart));return this.eat(s),u},eat(s){if(this.tokenType!==s){let u=He[s].slice(0,-6).replace(/-/g," ").replace(/^./,m=>m.toUpperCase()),p=`${/[[\](){}]/.test(u)?`"${u}"`:u} is expected`,h=this.tokenStart;switch(s){case 1:this.tokenType===2||this.tokenType===7?(h=this.tokenEnd-1,p="Identifier is expected but function found"):p="Identifier is expected";break;case 4:this.isDelim(Jl)&&(this.next(),h++,p="Name is expected");break;case 11:this.tokenType===10&&(h=this.tokenEnd,p="Percent sign is expected");break}this.error(p,h)}this.next()},eatIdent(s){(this.tokenType!==1||this.lookupValue(0,s)===!1)&&this.error(`Identifier "${s}" is expected`),this.next()},eatDelim(s){this.isDelim(s)||this.error(`Delim "${String.fromCharCode(s)}" is expected`),this.next()},getLocation(s,u){return n?a.getLocationRange(s,u,r):null},getLocationFromList(s){if(n){let u=this.getFirstListNode(s),p=this.getLastListNode(s);return a.getLocationRange(u!==null?u.loc.start.offset-a.startOffset:this.tokenStart,p!==null?p.loc.end.offset-a.startOffset:this.tokenStart,r)}return null},error(s,u){let p=typeof u<"u"&&u<t.length?a.getLocation(u):this.eof?a.getLocation(qi(t,t.length-1)):a.getLocation(this.tokenStart);throw new Ir(s||"Unexpected input",t,p.offset,p.line,p.column)}});return Object.assign(function(s,u){t=s,u=u||{},l.setSource(t,Le),a.setSource(t,u.offset,u.line,u.column),r=u.filename||"<unknown>",n=Boolean(u.positions),o=typeof u.onParseError=="function"?u.onParseError:$i,i=!1,l.parseAtrulePrelude="parseAtrulePrelude"in u?Boolean(u.parseAtrulePrelude):!0,l.parseRulePrelude="parseRulePrelude"in u?Boolean(u.parseRulePrelude):!0,l.parseValue="parseValue"in u?Boolean(u.parseValue):!0,l.parseCustomProperty="parseCustomProperty"in u?Boolean(u.parseCustomProperty):!1;let{context:p="default",onComment:h}=u;if(!(p in l.context))throw new Error("Unknown context `"+p+"`");typeof h=="function"&&l.forEachToken((y,T,N)=>{if(y===25){let C=l.getLocation(T,N),D=ke(t,N-2,N,"*/")?t.slice(T+2,N-2):t.slice(T+2,N);h(D,C)}});let m=l.context[p].call(l,u);return l.eof||l.error(),m},{SyntaxError:Ir,config:l.config})}var ka=Hl(ya(),1),xa=new Set(["Atrule","Selector","Declaration"]);function wa(e){let t=new ka.SourceMapGenerator,r={line:1,column:0},n={line:0,column:0},o={line:1,column:0},i={generated:o},a=1,l=0,c=!1,s=e.node;e.node=function(h){if(h.loc&&h.loc.start&&xa.has(h.type)){let m=h.loc.start.line,y=h.loc.start.column-1;(n.line!==m||n.column!==y)&&(n.line=m,n.column=y,r.line=a,r.column=l,c&&(c=!1,(r.line!==o.line||r.column!==o.column)&&t.addMapping(i)),c=!0,t.addMapping({source:h.loc.source,original:n,generated:r}))}s.call(this,h),c&&xa.has(h.type)&&(o.line=a,o.column=l)};let u=e.emit;e.emit=function(h,m,y){for(let T=0;T<h.length;T++)h.charCodeAt(T)===10?(a++,l=0):l++;u(h,m,y)};let p=e.result;return e.result=function(){return c&&t.addMapping(i),{css:p(),map:t}},e}var Xt={};b(Xt,{safe:()=>Ur,spec:()=>Sc});var kc=43,wc=45,_r=(e,t)=>{if(e===9&&(e=t),typeof e=="string"){let r=e.charCodeAt(0);return r>127?32768:r<<8}return e},va=[[1,1],[1,2],[1,7],[1,8],[1,"-"],[1,10],[1,11],[1,12],[1,15],[1,21],[3,1],[3,2],[3,7],[3,8],[3,"-"],[3,10],[3,11],[3,12],[3,15],[4,1],[4,2],[4,7],[4,8],[4,"-"],[4,10],[4,11],[4,12],[4,15],[12,1],[12,2],[12,7],[12,8],[12,"-"],[12,10],[12,11],[12,12],[12,15],["#",1],["#",2],["#",7],["#",8],["#","-"],["#",10],["#",11],["#",12],["#",15],["-",1],["-",2],["-",7],["-",8],["-","-"],["-",10],["-",11],["-",12],["-",15],[10,1],[10,2],[10,7],[10,8],[10,10],[10,11],[10,12],[10,"%"],[10,15],["@",1],["@",2],["@",7],["@",8],["@","-"],["@",15],[".",10],[".",11],[".",12],["+",10],["+",11],["+",12],["/","*"]],vc=va.concat([[1,4],[12,4],[4,4],[3,21],[3,5],[3,16],[11,11],[11,12],[11,2],[11,"-"],[22,1],[22,2],[22,11],[22,12],[22,4],[22,"-"]]);function Sa(e){let t=new Set(e.map(([r,n])=>_r(r)<<16|_r(n)));return function(r,n,o){let i=_r(n,o),a=o.charCodeAt(0);return(a===wc&&n!==1&&n!==2&&n!==15||a===kc?t.has(r<<16|a<<8):t.has(r<<16|i))&&this.emit(" ",13,!0),i}}var Sc=Sa(va),Ur=Sa(vc);var Cc=92;function Ac(e,t){if(typeof t=="function"){let r=null;e.children.forEach(n=>{r!==null&&t.call(this,r),this.node(n),r=n});return}e.children.forEach(this.node,this)}function Ec(e){Le(e,(t,r,n)=>{this.token(t,e.slice(r,n))})}function Ca(e){let t=new Map;for(let r in e.node){let n=e.node[r];typeof(n.generate||n)=="function"&&t.set(r,n.generate||n)}return function(r,n){let o="",i=0,a={node(c){if(t.has(c.type))t.get(c.type).call(l,c);else throw new Error("Unknown node type: "+c.type)},tokenBefore:Ur,token(c,s){i=this.tokenBefore(i,c,s),this.emit(s,c,!1),c===9&&s.charCodeAt(0)===Cc&&this.emit(` -`,13,!0)},emit(c){o+=c},result(){return o}};n&&(typeof n.decorator=="function"&&(a=n.decorator(a)),n.sourceMap&&(a=wa(a)),n.mode in Xt&&(a.tokenBefore=Xt[n.mode]));let l={node:c=>a.node(c),children:Ac,token:(c,s)=>a.token(c,s),tokenize:Ec};return a.node(r),a.result()}}function Aa(e){return{fromPlainObject(t){return e(t,{enter(r){r.children&&!(r.children instanceof w)&&(r.children=new w().fromArray(r.children))}}),t},toPlainObject(t){return e(t,{leave(r){r.children&&r.children instanceof w&&(r.children=r.children.toArray())}}),t}}}var{hasOwnProperty:jr}=Object.prototype,bt=function(){};function Ea(e){return typeof e=="function"?e:bt}function Ta(e,t){return function(r,n,o){r.type===t&&e.call(this,r,n,o)}}function Tc(e,t){let r=t.structure,n=[];for(let o in r){if(jr.call(r,o)===!1)continue;let i=r[o],a={name:o,type:!1,nullable:!1};Array.isArray(i)||(i=[i]);for(let l of i)l===null?a.nullable=!0:typeof l=="string"?a.type="node":Array.isArray(l)&&(a.type="list");a.type&&n.push(a)}return n.length?{context:t.walkContext,fields:n}:null}function Lc(e){let t={};for(let r in e.node)if(jr.call(e.node,r)){let n=e.node[r];if(!n.structure)throw new Error("Missed `structure` field in `"+r+"` node type definition");t[r]=Tc(r,n)}return t}function La(e,t){let r=e.fields.slice(),n=e.context,o=typeof n=="string";return t&&r.reverse(),function(i,a,l,c){let s;o&&(s=a[n],a[n]=i);for(let u of r){let p=i[u.name];if(!u.nullable||p){if(u.type==="list"){if(t?p.reduceRight(c,!1):p.reduce(c,!1))return!0}else if(l(p))return!0}}o&&(a[n]=s)}}function Pa({StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}){return{Atrule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Rule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Declaration:{StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}}}function Ia(e){let t=Lc(e),r={},n={},o=Symbol("break-walk"),i=Symbol("skip-node");for(let s in t)jr.call(t,s)&&t[s]!==null&&(r[s]=La(t[s],!1),n[s]=La(t[s],!0));let a=Pa(r),l=Pa(n),c=function(s,u){function p(C,D,Ae){let B=h.call(N,C,D,Ae);return B===o?!0:B===i?!1:!!(y.hasOwnProperty(C.type)&&y[C.type](C,N,p,T)||m.call(N,C,D,Ae)===o)}let h=bt,m=bt,y=r,T=(C,D,Ae,B)=>C||p(D,Ae,B),N={break:o,skip:i,root:s,stylesheet:null,atrule:null,atrulePrelude:null,rule:null,selector:null,block:null,declaration:null,function:null};if(typeof u=="function")h=u;else if(u&&(h=Ea(u.enter),m=Ea(u.leave),u.reverse&&(y=n),u.visit)){if(a.hasOwnProperty(u.visit))y=u.reverse?l[u.visit]:a[u.visit];else if(!t.hasOwnProperty(u.visit))throw new Error("Bad value `"+u.visit+"` for `visit` option (should be: "+Object.keys(t).sort().join(", ")+")");h=Ta(h,u.visit),m=Ta(m,u.visit)}if(h===bt&&m===bt)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");p(s)};return c.break=o,c.skip=i,c.find=function(s,u){let p=null;return c(s,function(h,m,y){if(u.call(this,h,m,y))return p=h,o}),p},c.findLast=function(s,u){let p=null;return c(s,{reverse:!0,enter(h,m,y){if(u.call(this,h,m,y))return p=h,o}}),p},c.findAll=function(s,u){let p=[];return c(s,function(h,m,y){u.call(this,h,m,y)&&p.push(h)}),p},c}function Pc(e){return e}function Ic(e){let{min:t,max:r,comma:n}=e;return t===0&&r===0?n?"#?":"*":t===0&&r===1?"?":t===1&&r===0?n?"#":"+":t===1&&r===1?"":(n?"#":"")+(t===r?"{"+t+"}":"{"+t+","+(r!==0?r:"")+"}")}function Oc(e){switch(e.type){case"Range":return" ["+(e.min===null?"-\u221E":e.min)+","+(e.max===null?"\u221E":e.max)+"]";default:throw new Error("Unknown node type `"+e.type+"`")}}function Dc(e,t,r,n){let o=e.combinator===" "||n?e.combinator:" "+e.combinator+" ",i=e.terms.map(a=>qr(a,t,r,n)).join(o);return e.explicit||r?(n||i[0]===","?"[":"[ ")+i+(n?"]":" ]"):i}function qr(e,t,r,n){let o;switch(e.type){case"Group":o=Dc(e,t,r,n)+(e.disallowEmpty?"!":"");break;case"Multiplier":return qr(e.term,t,r,n)+t(Ic(e),e);case"Type":o="<"+e.name+(e.opts?t(Oc(e.opts),e.opts):"")+">";break;case"Property":o="<'"+e.name+"'>";break;case"Keyword":o=e.name;break;case"AtKeyword":o="@"+e.name;break;case"Function":o=e.name+"(";break;case"String":case"Token":o=e.value;break;case"Comma":o=",";break;default:throw new Error("Unknown node type `"+e.type+"`")}return t(o,e)}function Ge(e,t){let r=Pc,n=!1,o=!1;return typeof t=="function"?r=t:t&&(n=Boolean(t.forceBraces),o=Boolean(t.compact),typeof t.decorate=="function"&&(r=t.decorate)),qr(e,r,n,o)}var Oa={offset:0,line:1,column:1};function Nc(e,t){let r=e.tokens,n=e.longestMatch,o=n<r.length&&r[n].node||null,i=o!==t?o:null,a=0,l=0,c=0,s="",u,p;for(let h=0;h<r.length;h++){let m=r[h].value;h===n&&(l=m.length,a=s.length),i!==null&&r[h].node===i&&(h<=n?c++:c=0),s+=m}return n===r.length||c>1?(u=Zt(i||t,"end")||yt(Oa,s),p=yt(u)):(u=Zt(i,"start")||yt(Zt(t,"start")||Oa,s.slice(0,a)),p=Zt(i,"end")||yt(u,s.substr(a,l))),{css:s,mismatchOffset:a,mismatchLength:l,start:u,end:p}}function Zt(e,t){let r=e&&e.loc&&e.loc[t];return r?"line"in r?yt(r):r:null}function yt({offset:e,line:t,column:r},n){let o={offset:e,line:t,column:r};if(n){let i=n.split(/\n|\r\n?|\f/);o.offset+=n.length,o.line+=i.length-1,o.column=i.length===1?o.column+n.length:i.pop().length+1}return o}var Ke=function(e,t){let r=Re("SyntaxReferenceError",e+(t?" `"+t+"`":""));return r.reference=t,r},Da=function(e,t,r,n){let o=Re("SyntaxMatchError",e),{css:i,mismatchOffset:a,mismatchLength:l,start:c,end:s}=Nc(n,r);return o.rawMessage=e,o.syntax=t?Ge(t):"<generic>",o.css=i,o.mismatchOffset=a,o.mismatchLength=l,o.message=e+` - syntax: `+o.syntax+` - value: `+(i||"<empty string>")+` - --------`+new Array(o.mismatchOffset+1).join("-")+"^",Object.assign(o,c),o.loc={source:r&&r.loc&&r.loc.source||"<unknown>",start:c,end:s},o};var Jt=new Map,Qe=new Map,er=45,Z=Mc,me=Rc;function tr(e,t){return t=t||0,e.length-t>=2&&e.charCodeAt(t)===er&&e.charCodeAt(t+1)===er}function Na(e,t){if(t=t||0,e.length-t>=3&&e.charCodeAt(t)===er&&e.charCodeAt(t+1)!==er){let r=e.indexOf("-",t+2);if(r!==-1)return e.substring(t,r+1)}return""}function Mc(e){if(Jt.has(e))return Jt.get(e);let t=e.toLowerCase(),r=Jt.get(t);if(r===void 0){let n=tr(t,0),o=n?"":Na(t,0);r=Object.freeze({basename:t.substr(o.length),name:t,prefix:o,vendor:o,custom:n})}return Jt.set(e,r),r}function Rc(e){if(Qe.has(e))return Qe.get(e);let t=e,r=e[0];r==="/"?r=e[1]==="/"?"//":"/":r!=="_"&&r!=="*"&&r!=="$"&&r!=="#"&&r!=="+"&&r!=="&"&&(r="");let n=tr(t,r.length);if(!n&&(t=t.toLowerCase(),Qe.has(t))){let l=Qe.get(t);return Qe.set(e,l),l}let o=n?"":Na(t,r.length),i=t.substr(0,r.length+o.length),a=Object.freeze({basename:t.substr(i.length),name:t.substr(r.length),hack:r,vendor:o,prefix:i,custom:n});return Qe.set(e,a),a}var rr=["initial","inherit","unset","revert","revert-layer"];var kt=43,de=45,Hr=110,$e=!0,Fc=!1;function Yr(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function xt(e,t,r){for(;e!==null&&(e.type===13||e.type===25);)e=r(++t);return t}function Pe(e,t,r,n){if(!e)return 0;let o=e.value.charCodeAt(t);if(o===kt||o===de){if(r)return 0;t++}for(;t<e.value.length;t++)if(!j(e.value.charCodeAt(t)))return 0;return n+1}function Wr(e,t,r){let n=!1,o=xt(e,t,r);if(e=r(o),e===null)return t;if(e.type!==10)if(Yr(e,kt)||Yr(e,de)){if(n=!0,o=xt(r(++o),o,r),e=r(o),e===null||e.type!==10)return 0}else return t;if(!n){let i=e.value.charCodeAt(0);if(i!==kt&&i!==de)return 0}return Pe(e,n?0:1,n,o)}function Vr(e,t){let r=0;if(!e)return 0;if(e.type===10)return Pe(e,0,Fc,r);if(e.type===1&&e.value.charCodeAt(0)===de){if(!xe(e.value,1,Hr))return 0;switch(e.value.length){case 2:return Wr(t(++r),r,t);case 3:return e.value.charCodeAt(2)!==de?0:(r=xt(t(++r),r,t),e=t(r),Pe(e,0,$e,r));default:return e.value.charCodeAt(2)!==de?0:Pe(e,3,$e,r)}}else if(e.type===1||Yr(e,kt)&&t(r+1).type===1){if(e.type!==1&&(e=t(++r)),e===null||!xe(e.value,0,Hr))return 0;switch(e.value.length){case 1:return Wr(t(++r),r,t);case 2:return e.value.charCodeAt(1)!==de?0:(r=xt(t(++r),r,t),e=t(r),Pe(e,0,$e,r));default:return e.value.charCodeAt(1)!==de?0:Pe(e,2,$e,r)}}else if(e.type===12){let n=e.value.charCodeAt(0),o=n===kt||n===de?1:0,i=o;for(;i<e.value.length&&j(e.value.charCodeAt(i));i++);return i===o||!xe(e.value,i,Hr)?0:i+1===e.value.length?Wr(t(++r),r,t):e.value.charCodeAt(i+1)!==de?0:i+2===e.value.length?(r=xt(t(++r),r,t),e=t(r),Pe(e,0,$e,r)):Pe(e,i+2,$e,r)}return 0}var Bc=43,Ma=45,Ra=63,_c=117;function Gr(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function Uc(e,t){return e.value.charCodeAt(0)===t}function wt(e,t,r){let n=0;for(let o=t;o<e.value.length;o++){let i=e.value.charCodeAt(o);if(i===Ma&&r&&n!==0)return wt(e,t+n+1,!1),6;if(!oe(i)||++n>6)return 0}return n}function nr(e,t,r){if(!e)return 0;for(;Gr(r(t),Ra);){if(++e>6)return 0;t++}return t}function Kr(e,t){let r=0;if(e===null||e.type!==1||!xe(e.value,0,_c)||(e=t(++r),e===null))return 0;if(Gr(e,Bc))return e=t(++r),e===null?0:e.type===1?nr(wt(e,0,!0),++r,t):Gr(e,Ra)?nr(1,++r,t):0;if(e.type===10){let n=wt(e,1,!0);return n===0?0:(e=t(++r),e===null?r:e.type===12||e.type===10?!Uc(e,Ma)||!wt(e,1,!1)?0:r+1:nr(n,r,t))}return e.type===12?nr(wt(e,1,!0),++r,t):0}var jc=["calc(","-moz-calc(","-webkit-calc("],Qr=new Map([[2,22],[21,22],[19,20],[23,24]]),qc=["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],Hc=["deg","grad","rad","turn"],Wc=["s","ms"],Yc=["hz","khz"],Vc=["dpi","dpcm","dppx","x"],Gc=["fr"],Kc=["db"],Qc=["st"];function ue(e,t){return t<e.length?e.charCodeAt(t):0}function Fa(e,t){return ke(e,0,e.length,t)}function Ba(e,t){for(let r=0;r<t.length;r++)if(Fa(e,t[r]))return!0;return!1}function _a(e,t){return t!==e.length-2?!1:ue(e,t)===92&&j(ue(e,t+1))}function or(e,t,r){if(e&&e.type==="Range"){let n=Number(r!==void 0&&r!==t.length?t.substr(0,r):t);if(isNaN(n)||e.min!==null&&n<e.min&&typeof e.min!="string"||e.max!==null&&n>e.max&&typeof e.max!="string")return!0}return!1}function $c(e,t){let r=0,n=[],o=0;e:do{switch(e.type){case 24:case 22:case 20:if(e.type!==r)break e;if(r=n.pop(),n.length===0){o++;break e}break;case 2:case 21:case 19:case 23:n.push(r),r=Qr.get(e.type);break}o++}while(e=t(o));return o}function le(e){return function(t,r,n){return t===null?0:t.type===2&&Ba(t.value,jc)?$c(t,r):e(t,r,n)}}function z(e){return function(t){return t===null||t.type!==e?0:1}}function Xc(e){if(e===null||e.type!==1)return 0;let t=e.value.toLowerCase();return Ba(t,rr)||Fa(t,"default")?0:1}function Zc(e){return e===null||e.type!==1||ue(e.value,0)!==45||ue(e.value,1)!==45?0:1}function Jc(e){if(e===null||e.type!==4)return 0;let t=e.value.length;if(t!==4&&t!==5&&t!==7&&t!==9)return 0;for(let r=1;r<t;r++)if(!oe(ue(e.value,r)))return 0;return 1}function eu(e){return e===null||e.type!==4||!je(ue(e.value,1),ue(e.value,2),ue(e.value,3))?0:1}function tu(e,t){if(!e)return 0;let r=0,n=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==r)break e;r=n.pop();break;case 17:if(r===0)break e;break;case 9:if(r===0&&e.value==="!")break e;break;case 2:case 21:case 19:case 23:n.push(r),r=Qr.get(e.type);break}o++}while(e=t(o));return o}function ru(e,t){if(!e)return 0;let r=0,n=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==r)break e;r=n.pop();break;case 2:case 21:case 19:case 23:n.push(r),r=Qr.get(e.type);break}o++}while(e=t(o));return o}function Se(e){return e&&(e=new Set(e)),function(t,r,n){if(t===null||t.type!==12)return 0;let o=Me(t.value,0);if(e!==null){let i=t.value.indexOf("\\",o),a=i===-1||!_a(t.value,i)?t.value.substr(o):t.value.substring(o,i);if(e.has(a.toLowerCase())===!1)return 0}return or(n,t.value,o)?0:1}}function nu(e,t,r){return e===null||e.type!==11||or(r,e.value,e.value.length-1)?0:1}function za(e){return typeof e!="function"&&(e=function(){return 0}),function(t,r,n){return t!==null&&t.type===10&&Number(t.value)===0?1:e(t,r,n)}}function ou(e,t,r){if(e===null)return 0;let n=Me(e.value,0);return!(n===e.value.length)&&!_a(e.value,n)||or(r,e.value,n)?0:1}function iu(e,t,r){if(e===null||e.type!==10)return 0;let n=ue(e.value,0)===43||ue(e.value,0)===45?1:0;for(;n<e.value.length;n++)if(!j(ue(e.value,n)))return 0;return or(r,e.value,n)?0:1}var $r={"ident-token":z(1),"function-token":z(2),"at-keyword-token":z(3),"hash-token":z(4),"string-token":z(5),"bad-string-token":z(6),"url-token":z(7),"bad-url-token":z(8),"delim-token":z(9),"number-token":z(10),"percentage-token":z(11),"dimension-token":z(12),"whitespace-token":z(13),"CDO-token":z(14),"CDC-token":z(15),"colon-token":z(16),"semicolon-token":z(17),"comma-token":z(18),"[-token":z(19),"]-token":z(20),"(-token":z(21),")-token":z(22),"{-token":z(23),"}-token":z(24),string:z(5),ident:z(1),"custom-ident":Xc,"custom-property-name":Zc,"hex-color":Jc,"id-selector":eu,"an-plus-b":Vr,urange:Kr,"declaration-value":tu,"any-value":ru,dimension:le(Se(null)),angle:le(Se(Hc)),decibel:le(Se(Kc)),frequency:le(Se(Yc)),flex:le(Se(Gc)),length:le(za(Se(qc))),resolution:le(Se(Vc)),semitones:le(Se(Qc)),time:le(Se(Wc)),percentage:le(nu),zero:za(),number:le(ou),integer:le(iu)};function Xr(e,t,r){return Object.assign(Re("SyntaxError",e),{input:t,offset:r,rawMessage:e,message:e+` - `+t+` ---`+new Array((r||t.length)+1).join("-")+"^"})}var au=9,su=10,lu=12,cu=13,uu=32,ir=class{constructor(t){this.str=t,this.pos=0}charCodeAt(t){return t<this.str.length?this.str.charCodeAt(t):0}charCode(){return this.charCodeAt(this.pos)}nextCharCode(){return this.charCodeAt(this.pos+1)}nextNonWsCode(t){return this.charCodeAt(this.findWsEnd(t))}findWsEnd(t){for(;t<this.str.length;t++){let r=this.str.charCodeAt(t);if(r!==cu&&r!==su&&r!==lu&&r!==uu&&r!==au)break}return t}substringToPos(t){return this.str.substring(this.pos,this.pos=t)}eat(t){this.charCode()!==t&&this.error("Expect `"+String.fromCharCode(t)+"`"),this.pos++}peek(){return this.pos<this.str.length?this.str.charAt(this.pos++):""}error(t){throw new Xr(t,this.str,this.pos)}};var pu=9,hu=10,fu=12,mu=13,du=32,Ga=33,en=35,Ua=38,ar=39,Ka=40,gu=41,Qa=42,tn=43,rn=44,ja=45,nn=60,$a=62,Jr=63,bu=64,ur=91,on=93,sr=123,qa=124,Ha=125,Wa=8734,vt=new Uint8Array(128).map((e,t)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(t))?1:0),Ya={" ":1,"&&":2,"||":3,"|":4};function lr(e){return e.substringToPos(e.findWsEnd(e.pos))}function Xe(e){let t=e.pos;for(;t<e.str.length;t++){let r=e.str.charCodeAt(t);if(r>=128||vt[r]===0)break}return e.pos===t&&e.error("Expect a keyword"),e.substringToPos(t)}function cr(e){let t=e.pos;for(;t<e.str.length;t++){let r=e.str.charCodeAt(t);if(r<48||r>57)break}return e.pos===t&&e.error("Expect a number"),e.substringToPos(t)}function yu(e){let t=e.str.indexOf("'",e.pos+1);return t===-1&&(e.pos=e.str.length,e.error("Expect an apostrophe")),e.substringToPos(t+1)}function Va(e){let t=null,r=null;return e.eat(sr),t=cr(e),e.charCode()===rn?(e.pos++,e.charCode()!==Ha&&(r=cr(e))):r=t,e.eat(Ha),{min:Number(t),max:r?Number(r):0}}function xu(e){let t=null,r=!1;switch(e.charCode()){case Qa:e.pos++,t={min:0,max:0};break;case tn:e.pos++,t={min:1,max:0};break;case Jr:e.pos++,t={min:0,max:1};break;case en:e.pos++,r=!0,e.charCode()===sr?t=Va(e):e.charCode()===Jr?(e.pos++,t={min:0,max:0}):t={min:1,max:0};break;case sr:t=Va(e);break;default:return null}return{type:"Multiplier",comma:r,min:t.min,max:t.max,term:null}}function Ze(e,t){let r=xu(e);return r!==null?(r.term=t,e.charCode()===en&&e.charCodeAt(e.pos-1)===tn?Ze(e,r):r):t}function Zr(e){let t=e.peek();return t===""?null:{type:"Token",value:t}}function ku(e){let t;return e.eat(nn),e.eat(ar),t=Xe(e),e.eat(ar),e.eat($a),Ze(e,{type:"Property",name:t})}function wu(e){let t=null,r=null,n=1;return e.eat(ur),e.charCode()===ja&&(e.peek(),n=-1),n==-1&&e.charCode()===Wa?e.peek():(t=n*Number(cr(e)),vt[e.charCode()]!==0&&(t+=Xe(e))),lr(e),e.eat(rn),lr(e),e.charCode()===Wa?e.peek():(n=1,e.charCode()===ja&&(e.peek(),n=-1),r=n*Number(cr(e)),vt[e.charCode()]!==0&&(r+=Xe(e))),e.eat(on),{type:"Range",min:t,max:r}}function vu(e){let t,r=null;return e.eat(nn),t=Xe(e),e.charCode()===Ka&&e.nextCharCode()===gu&&(e.pos+=2,t+="()"),e.charCodeAt(e.findWsEnd(e.pos))===ur&&(lr(e),r=wu(e)),e.eat($a),Ze(e,{type:"Type",name:t,opts:r})}function Su(e){let t=Xe(e);return e.charCode()===Ka?(e.pos++,{type:"Function",name:t}):Ze(e,{type:"Keyword",name:t})}function Cu(e,t){function r(o,i){return{type:"Group",terms:o,combinator:i,disallowEmpty:!1,explicit:!1}}let n;for(t=Object.keys(t).sort((o,i)=>Ya[o]-Ya[i]);t.length>0;){n=t.shift();let o=0,i=0;for(;o<e.length;o++){let a=e[o];a.type==="Combinator"&&(a.value===n?(i===-1&&(i=o-1),e.splice(o,1),o--):(i!==-1&&o-i>1&&(e.splice(i,o-i,r(e.slice(i,o),n)),o=i+1),i=-1))}i!==-1&&t.length&&e.splice(i,o-i,r(e.slice(i,o),n))}return n}function Xa(e){let t=[],r={},n,o=null,i=e.pos;for(;n=Eu(e);)n.type!=="Spaces"&&(n.type==="Combinator"?((o===null||o.type==="Combinator")&&(e.pos=i,e.error("Unexpected combinator")),r[n.value]=!0):o!==null&&o.type!=="Combinator"&&(r[" "]=!0,t.push({type:"Combinator",value:" "})),t.push(n),o=n,i=e.pos);return o!==null&&o.type==="Combinator"&&(e.pos-=i,e.error("Unexpected combinator")),{type:"Group",terms:t,combinator:Cu(t,r)||" ",disallowEmpty:!1,explicit:!1}}function Au(e){let t;return e.eat(ur),t=Xa(e),e.eat(on),t.explicit=!0,e.charCode()===Ga&&(e.pos++,t.disallowEmpty=!0),t}function Eu(e){let t=e.charCode();if(t<128&&vt[t]===1)return Su(e);switch(t){case on:break;case ur:return Ze(e,Au(e));case nn:return e.nextCharCode()===ar?ku(e):vu(e);case qa:return{type:"Combinator",value:e.substringToPos(e.pos+(e.nextCharCode()===qa?2:1))};case Ua:return e.pos++,e.eat(Ua),{type:"Combinator",value:"&&"};case rn:return e.pos++,{type:"Comma"};case ar:return Ze(e,{type:"String",value:yu(e)});case du:case pu:case hu:case mu:case fu:return{type:"Spaces",value:lr(e)};case bu:return t=e.nextCharCode(),t<128&&vt[t]===1?(e.pos++,{type:"AtKeyword",name:Xe(e)}):Zr(e);case Qa:case tn:case Jr:case en:case Ga:break;case sr:if(t=e.nextCharCode(),t<48||t>57)return Zr(e);break;default:return Zr(e)}}function St(e){let t=new ir(e),r=Xa(t);return t.pos!==e.length&&t.error("Unexpected input"),r.terms.length===1&&r.terms[0].type==="Group"?r.terms[0]:r}var Ct=function(){};function Za(e){return typeof e=="function"?e:Ct}function an(e,t,r){function n(a){switch(o.call(r,a),a.type){case"Group":a.terms.forEach(n);break;case"Multiplier":n(a.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+a.type)}i.call(r,a)}let o=Ct,i=Ct;if(typeof t=="function"?o=t:t&&(o=Za(t.enter),i=Za(t.leave)),o===Ct&&i===Ct)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");n(e,r)}var Lu={decorator(e){let t=[],r=null;return{...e,node(n){let o=r;r=n,e.node.call(this,n),r=o},emit(n,o,i){t.push({type:o,value:n,node:i?null:r})},result(){return t}}}};function Pu(e){let t=[];return Le(e,(r,n,o)=>t.push({type:r,value:e.slice(n,o),node:null})),t}function Ja(e,t){return typeof e=="string"?Pu(e):t.generate(e,Lu)}var E={type:"Match"},O={type:"Mismatch"},pr={type:"DisallowEmpty"},Iu=40,Ou=41;function ee(e,t,r){return t===E&&r===O||e===E&&t===E&&r===E?e:(e.type==="If"&&e.else===O&&t===E&&(t=e.then,e=e.match),{type:"If",match:e,then:t,else:r})}function ts(e){return e.length>2&&e.charCodeAt(e.length-2)===Iu&&e.charCodeAt(e.length-1)===Ou}function es(e){return e.type==="Keyword"||e.type==="AtKeyword"||e.type==="Function"||e.type==="Type"&&ts(e.name)}function sn(e,t,r){switch(e){case" ":{let n=E;for(let o=t.length-1;o>=0;o--){let i=t[o];n=ee(i,n,O)}return n}case"|":{let n=O,o=null;for(let i=t.length-1;i>=0;i--){let a=t[i];if(es(a)&&(o===null&&i>0&&es(t[i-1])&&(o=Object.create(null),n=ee({type:"Enum",map:o},E,n)),o!==null)){let l=(ts(a.name)?a.name.slice(0,-1):a.name).toLowerCase();if(!(l in o)){o[l]=a;continue}}o=null,n=ee(a,E,n)}return n}case"&&":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!0};let n=O;for(let o=t.length-1;o>=0;o--){let i=t[o],a;t.length>1?a=sn(e,t.filter(function(l){return l!==i}),!1):a=E,n=ee(i,a,n)}return n}case"||":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!1};let n=r?E:O;for(let o=t.length-1;o>=0;o--){let i=t[o],a;t.length>1?a=sn(e,t.filter(function(l){return l!==i}),!0):a=E,n=ee(i,a,n)}return n}}}function Du(e){let t=E,r=ln(e.term);if(e.max===0)r=ee(r,pr,O),t=ee(r,null,O),t.then=ee(E,E,t),e.comma&&(t.then.else=ee({type:"Comma",syntax:e},t,O));else for(let n=e.min||1;n<=e.max;n++)e.comma&&t!==E&&(t=ee({type:"Comma",syntax:e},t,O)),t=ee(r,ee(E,E,t),O);if(e.min===0)t=ee(E,E,t);else for(let n=0;n<e.min-1;n++)e.comma&&t!==E&&(t=ee({type:"Comma",syntax:e},t,O)),t=ee(r,t,O);return t}function ln(e){if(typeof e=="function")return{type:"Generic",fn:e};switch(e.type){case"Group":{let t=sn(e.combinator,e.terms.map(ln),!1);return e.disallowEmpty&&(t=ee(t,pr,O)),t}case"Multiplier":return Du(e);case"Type":case"Property":return{type:e.type,name:e.name,syntax:e};case"Keyword":return{type:e.type,name:e.name.toLowerCase(),syntax:e};case"AtKeyword":return{type:e.type,name:"@"+e.name.toLowerCase(),syntax:e};case"Function":return{type:e.type,name:e.name.toLowerCase()+"(",syntax:e};case"String":return e.value.length===3?{type:"Token",value:e.value.charAt(1),syntax:e}:{type:e.type,value:e.value.substr(1,e.value.length-2).replace(/\\'/g,"'"),syntax:e};case"Token":return{type:e.type,value:e.value,syntax:e};case"Comma":return{type:e.type,syntax:e};default:throw new Error("Unknown node type:",e.type)}}function hr(e,t){return typeof e=="string"&&(e=St(e)),{type:"MatchGraph",match:ln(e),syntax:t||null,source:e}}var{hasOwnProperty:rs}=Object.prototype,Nu=0,Mu=1,un=2,ss=3,ns="Match",Ru="Mismatch",zu="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",os=15e3,Fu=0;function Bu(e){let t=null,r=null,n=e;for(;n!==null;)r=n.prev,n.prev=t,t=n,n=r;return t}function cn(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++){let n=t.charCodeAt(r),o=e.charCodeAt(r);if(o>=65&&o<=90&&(o=o|32),o!==n)return!1}return!0}function _u(e){return e.type!==9?!1:e.value!=="?"}function is(e){return e===null?!0:e.type===18||e.type===2||e.type===21||e.type===19||e.type===23||_u(e)}function as(e){return e===null?!0:e.type===22||e.type===20||e.type===24||e.type===9&&e.value==="/"}function Uu(e,t,r){function n(){do D++,C=D<e.length?e[D]:null;while(C!==null&&(C.type===13||C.type===25))}function o(ce){let ye=D+ce;return ye<e.length?e[ye]:null}function i(ce,ye){return{nextState:ce,matchStack:B,syntaxStack:p,thenStack:h,tokenIndex:D,prev:ye}}function a(ce){h={nextState:ce,matchStack:B,syntaxStack:p,prev:h}}function l(ce){m=i(ce,m)}function c(){B={type:Mu,syntax:t.syntax,token:C,prev:B},n(),y=null,D>Ae&&(Ae=D)}function s(){p={syntax:t.syntax,opts:t.syntax.opts||p!==null&&p.opts||null,prev:p},B={type:un,syntax:t.syntax,token:B.token,prev:B}}function u(){B.type===un?B=B.prev:B={type:ss,syntax:p.syntax,token:B.token,prev:B},p=p.prev}let p=null,h=null,m=null,y=null,T=0,N=null,C=null,D=-1,Ae=0,B={type:Nu,syntax:null,token:null,prev:null};for(n();N===null&&++T<os;)switch(t.type){case"Match":if(h===null){if(C!==null&&(D!==e.length-1||C.value!=="\\0"&&C.value!=="\\9")){t=O;break}N=ns;break}if(t=h.nextState,t===pr)if(h.matchStack===B){t=O;break}else t=E;for(;h.syntaxStack!==p;)u();h=h.prev;break;case"Mismatch":if(y!==null&&y!==!1)(m===null||D>m.tokenIndex)&&(m=y,y=!1);else if(m===null){N=Ru;break}t=m.nextState,h=m.thenStack,p=m.syntaxStack,B=m.matchStack,D=m.tokenIndex,C=D<e.length?e[D]:null,m=m.prev;break;case"MatchGraph":t=t.match;break;case"If":t.else!==O&&l(t.else),t.then!==E&&a(t.then),t=t.match;break;case"MatchOnce":t={type:"MatchOnceBuffer",syntax:t,index:0,mask:0};break;case"MatchOnceBuffer":{let J=t.syntax.terms;if(t.index===J.length){if(t.mask===0||t.syntax.all){t=O;break}t=E;break}if(t.mask===(1<<J.length)-1){t=E;break}for(;t.index<J.length;t.index++){let te=1<<t.index;if((t.mask&te)===0){l(t),a({type:"AddMatchOnce",syntax:t.syntax,mask:t.mask|te}),t=J[t.index++];break}}break}case"AddMatchOnce":t={type:"MatchOnceBuffer",syntax:t.syntax,index:0,mask:t.mask};break;case"Enum":if(C!==null){let J=C.value.toLowerCase();if(J.indexOf("\\")!==-1&&(J=J.replace(/\\[09].*$/,"")),rs.call(t.map,J)){t=t.map[J];break}}t=O;break;case"Generic":{let J=p!==null?p.opts:null,te=D+Math.floor(t.fn(C,o,J));if(!isNaN(te)&&te>D){for(;D<te;)c();t=E}else t=O;break}case"Type":case"Property":{let J=t.type==="Type"?"types":"properties",te=rs.call(r,J)?r[J][t.name]:null;if(!te||!te.match)throw new Error("Bad syntax reference: "+(t.type==="Type"?"<"+t.name+">":"<'"+t.name+"'>"));if(y!==!1&&C!==null&&t.type==="Type"&&(t.name==="custom-ident"&&C.type===1||t.name==="length"&&C.value==="0")){y===null&&(y=i(t,m)),t=O;break}s(),t=te.match;break}case"Keyword":{let J=t.name;if(C!==null){let te=C.value;if(te.indexOf("\\")!==-1&&(te=te.replace(/\\[09].*$/,"")),cn(te,J)){c(),t=E;break}}t=O;break}case"AtKeyword":case"Function":if(C!==null&&cn(C.value,t.name)){c(),t=E;break}t=O;break;case"Token":if(C!==null&&C.value===t.value){c(),t=E;break}t=O;break;case"Comma":C!==null&&C.type===18?is(B.token)?t=O:(c(),t=as(C)?O:E):t=is(B.token)||as(C)?E:O;break;case"String":let ce="",ye=D;for(;ye<e.length&&ce.length<t.value.length;ye++)ce+=e[ye].value;if(cn(ce,t.value)){for(;D<ye;)c();t=E}else t=O;break;default:throw new Error("Unknown node type: "+t.type)}switch(Fu+=T,N){case null:console.warn("[csstree-match] BREAK after "+os+" iterations"),N=zu,B=null;break;case ns:for(;p!==null;)u();break;default:B=null}return{tokens:e,reason:N,iterations:T,match:B,longestMatch:Ae}}function pn(e,t,r){let n=Uu(e,t,r||{});if(n.match===null)return n;let o=n.match,i=n.match={syntax:t.syntax||null,match:[]},a=[i];for(o=Bu(o).prev;o!==null;){switch(o.type){case un:i.match.push(i={syntax:o.syntax,match:[]}),a.push(i);break;case ss:a.pop(),i=a[a.length-1];break;default:i.match.push({syntax:o.syntax||null,token:o.token.value,node:o.token.node})}o=o.prev}return n}var fn={};b(fn,{getTrace:()=>ls,isKeyword:()=>Hu,isProperty:()=>qu,isType:()=>ju});function ls(e){function t(o){return o===null?!1:o.type==="Type"||o.type==="Property"||o.type==="Keyword"}function r(o){if(Array.isArray(o.match)){for(let i=0;i<o.match.length;i++)if(r(o.match[i]))return t(o.syntax)&&n.unshift(o.syntax),!0}else if(o.node===e)return n=t(o.syntax)?[o.syntax]:[],!0;return!1}let n=null;return this.matched!==null&&r(this.matched),n}function ju(e,t){return hn(this,e,r=>r.type==="Type"&&r.name===t)}function qu(e,t){return hn(this,e,r=>r.type==="Property"&&r.name===t)}function Hu(e){return hn(this,e,t=>t.type==="Keyword")}function hn(e,t,r){let n=ls.call(e,t);return n===null?!1:n.some(r)}function cs(e){return"node"in e?e.node:cs(e.match[0])}function us(e){return"node"in e?e.node:us(e.match[e.match.length-1])}function mn(e,t,r,n,o){function i(l){if(l.syntax!==null&&l.syntax.type===n&&l.syntax.name===o){let c=cs(l),s=us(l);e.syntax.walk(t,function(u,p,h){if(u===c){let m=new w;do{if(m.appendData(p.data),p.data===s)break;p=p.next}while(p!==null);a.push({parent:h,nodes:m})}})}Array.isArray(l.match)&&l.match.forEach(i)}let a=[];return r.matched!==null&&i(r.matched),a}var{hasOwnProperty:At}=Object.prototype;function dn(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&e>=0}function ps(e){return Boolean(e)&&dn(e.offset)&&dn(e.line)&&dn(e.column)}function Wu(e,t){return function(n,o){if(!n||n.constructor!==Object)return o(n,"Type of node should be an Object");for(let i in n){let a=!0;if(At.call(n,i)!==!1){if(i==="type")n.type!==e&&o(n,"Wrong node type `"+n.type+"`, expected `"+e+"`");else if(i==="loc"){if(n.loc===null)continue;if(n.loc&&n.loc.constructor===Object)if(typeof n.loc.source!="string")i+=".source";else if(!ps(n.loc.start))i+=".start";else if(!ps(n.loc.end))i+=".end";else continue;a=!1}else if(t.hasOwnProperty(i)){a=!1;for(let l=0;!a&&l<t[i].length;l++){let c=t[i][l];switch(c){case String:a=typeof n[i]=="string";break;case Boolean:a=typeof n[i]=="boolean";break;case null:a=n[i]===null;break;default:typeof c=="string"?a=n[i]&&n[i].type===c:Array.isArray(c)&&(a=n[i]instanceof w)}}}else o(n,"Unknown field `"+i+"` for "+e+" node type");a||o(n,"Bad value for `"+e+"."+i+"`")}}for(let i in t)At.call(t,i)&&At.call(n,i)===!1&&o(n,"Field `"+e+"."+i+"` is missed")}}function Yu(e,t){let r=t.structure,n={type:String,loc:!0},o={type:'"'+e+'"'};for(let i in r){if(At.call(r,i)===!1)continue;let a=[],l=n[i]=Array.isArray(r[i])?r[i].slice():[r[i]];for(let c=0;c<l.length;c++){let s=l[c];if(s===String||s===Boolean)a.push(s.name);else if(s===null)a.push("null");else if(typeof s=="string")a.push("<"+s+">");else if(Array.isArray(s))a.push("List");else throw new Error("Wrong value `"+s+"` in `"+e+"."+i+"` structure definition")}o[i]=a.join(" | ")}return{docs:o,check:Wu(e,n)}}function hs(e){let t={};if(e.node){for(let r in e.node)if(At.call(e.node,r)){let n=e.node[r];if(n.structure)t[r]=Yu(r,n);else throw new Error("Missed `structure` field in `"+r+"` node type definition")}}return t}var Vu=hr(rr.join(" | "));function gn(e,t,r){let n={};for(let o in e)e[o].syntax&&(n[o]=r?e[o].syntax:Ge(e[o].syntax,{compact:t}));return n}function Gu(e,t,r){let n={};for(let[o,i]of Object.entries(e))n[o]={prelude:i.prelude&&(r?i.prelude.syntax:Ge(i.prelude.syntax,{compact:t})),descriptors:i.descriptors&&gn(i.descriptors,t,r)};return n}function Ku(e){for(let t=0;t<e.length;t++)if(e[t].value.toLowerCase()==="var(")return!0;return!1}function ge(e,t,r){return{matched:e,iterations:r,error:t,...fn}}function Je(e,t,r,n){let o=Ja(r,e.syntax),i;return Ku(o)?ge(null,new Error("Matching for a tree with var() is not supported")):(n&&(i=pn(o,e.cssWideKeywordsSyntax,e)),(!n||!i.match)&&(i=pn(o,t.match,e),!i.match)?ge(null,new Da(i.reason,t.syntax,r,i),i.iterations):ge(i.match,null,i.iterations))}var et=class{constructor(t,r,n){if(this.cssWideKeywordsSyntax=Vu,this.syntax=r,this.generic=!1,this.atrules=Object.create(null),this.properties=Object.create(null),this.types=Object.create(null),this.structure=n||hs(t),t){if(t.types)for(let o in t.types)this.addType_(o,t.types[o]);if(t.generic){this.generic=!0;for(let o in $r)this.addType_(o,$r[o])}if(t.atrules)for(let o in t.atrules)this.addAtrule_(o,t.atrules[o]);if(t.properties)for(let o in t.properties)this.addProperty_(o,t.properties[o])}}checkStructure(t){function r(i,a){o.push({node:i,message:a})}let n=this.structure,o=[];return this.syntax.walk(t,function(i){n.hasOwnProperty(i.type)?n[i.type].check(i,r):r(i,"Unknown node type `"+i.type+"`")}),o.length?o:!1}createDescriptor(t,r,n,o=null){let i={type:r,name:n},a={type:r,name:n,parent:o,serializable:typeof t=="string"||t&&typeof t.type=="string",syntax:null,match:null};return typeof t=="function"?a.match=hr(t,i):(typeof t=="string"?Object.defineProperty(a,"syntax",{get(){return Object.defineProperty(a,"syntax",{value:St(t)}),a.syntax}}):a.syntax=t,Object.defineProperty(a,"match",{get(){return Object.defineProperty(a,"match",{value:hr(a.syntax,i)}),a.match}})),a}addAtrule_(t,r){!r||(this.atrules[t]={type:"Atrule",name:t,prelude:r.prelude?this.createDescriptor(r.prelude,"AtrulePrelude",t):null,descriptors:r.descriptors?Object.keys(r.descriptors).reduce((n,o)=>(n[o]=this.createDescriptor(r.descriptors[o],"AtruleDescriptor",o,t),n),Object.create(null)):null})}addProperty_(t,r){!r||(this.properties[t]=this.createDescriptor(r,"Property",t))}addType_(t,r){!r||(this.types[t]=this.createDescriptor(r,"Type",t))}checkAtruleName(t){if(!this.getAtrule(t))return new Ke("Unknown at-rule","@"+t)}checkAtrulePrelude(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t);if(!o.prelude&&r)return new SyntaxError("At-rule `@"+t+"` should not contain a prelude");if(o.prelude&&!r&&!Je(this,o.prelude,"",!1).matched)return new SyntaxError("At-rule `@"+t+"` should contain a prelude")}checkAtruleDescriptorName(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t),i=Z(r);if(!o.descriptors)return new SyntaxError("At-rule `@"+t+"` has no known descriptors");if(!o.descriptors[i.name]&&!o.descriptors[i.basename])return new Ke("Unknown at-rule descriptor",r)}checkPropertyName(t){if(!this.getProperty(t))return new Ke("Unknown property",t)}matchAtrulePrelude(t,r){let n=this.checkAtrulePrelude(t,r);return n?ge(null,n):Je(this,this.getAtrule(t).prelude,r||"",!1)}matchAtruleDescriptor(t,r,n){let o=this.checkAtruleDescriptorName(t,r);if(o)return ge(null,o);let i=this.getAtrule(t),a=Z(r);return Je(this,i.descriptors[a.name]||i.descriptors[a.basename],n,!1)}matchDeclaration(t){return t.type!=="Declaration"?ge(null,new Error("Not a Declaration node")):this.matchProperty(t.property,t.value)}matchProperty(t,r){if(me(t).custom)return ge(null,new Error("Lexer matching doesn't applicable for custom properties"));let n=this.checkPropertyName(t);return n?ge(null,n):Je(this,this.getProperty(t),r,!0)}matchType(t,r){let n=this.getType(t);return n?Je(this,n,r,!1):ge(null,new Ke("Unknown type",t))}match(t,r){return typeof t!="string"&&(!t||!t.type)?ge(null,new Ke("Bad syntax")):((typeof t=="string"||!t.match)&&(t=this.createDescriptor(t,"Type","anonymous")),Je(this,t,r,!1))}findValueFragments(t,r,n,o){return mn(this,r,this.matchProperty(t,r),n,o)}findDeclarationValueFragments(t,r,n){return mn(this,t.value,this.matchDeclaration(t),r,n)}findAllFragments(t,r,n){let o=[];return this.syntax.walk(t,{visit:"Declaration",enter:i=>{o.push.apply(o,this.findDeclarationValueFragments(i,r,n))}}),o}getAtrule(t,r=!0){let n=Z(t);return(n.vendor&&r?this.atrules[n.name]||this.atrules[n.basename]:this.atrules[n.name])||null}getAtrulePrelude(t,r=!0){let n=this.getAtrule(t,r);return n&&n.prelude||null}getAtruleDescriptor(t,r){return this.atrules.hasOwnProperty(t)&&this.atrules.declarators&&this.atrules[t].declarators[r]||null}getProperty(t,r=!0){let n=me(t);return(n.vendor&&r?this.properties[n.name]||this.properties[n.basename]:this.properties[n.name])||null}getType(t){return hasOwnProperty.call(this.types,t)?this.types[t]:null}validate(){function t(o,i,a,l){if(a.has(i))return a.get(i);a.set(i,!1),l.syntax!==null&&an(l.syntax,function(c){if(c.type!=="Type"&&c.type!=="Property")return;let s=c.type==="Type"?o.types:o.properties,u=c.type==="Type"?r:n;(!hasOwnProperty.call(s,c.name)||t(o,c.name,u,s[c.name]))&&a.set(i,!0)},this)}let r=new Map,n=new Map;for(let o in this.types)t(this,o,r,this.types[o]);for(let o in this.properties)t(this,o,n,this.properties[o]);return r=[...r.keys()].filter(o=>r.get(o)),n=[...n.keys()].filter(o=>n.get(o)),r.length||n.length?{types:r,properties:n}:null}dump(t,r){return{generic:this.generic,types:gn(this.types,!r,t),properties:gn(this.properties,!r,t),atrules:Gu(this.atrules,!r,t)}}toString(){return JSON.stringify(this.dump())}};var{hasOwnProperty:tt}=Object.prototype,Qu={generic:!0,types:bn,atrules:{prelude:ms,descriptors:ms},properties:bn,parseContext:$u,scope:gs,atrule:["parse"],pseudo:["parse"],node:["name","structure","parse","generate","walkContext"]};function fr(e){return e&&e.constructor===Object}function ds(e){return fr(e)?{...e}:e}function $u(e,t){return Object.assign(e,t)}function gs(e,t){for(let r in t)tt.call(t,r)&&(fr(e[r])?gs(e[r],t[r]):e[r]=ds(t[r]));return e}function fs(e,t){return typeof t=="string"&&/^\s*\|/.test(t)?typeof e=="string"?e+t:t.replace(/^\s*\|\s*/,""):t||null}function bn(e,t){if(typeof t=="string")return fs(e,t);let r={...e};for(let n in t)tt.call(t,n)&&(r[n]=fs(tt.call(e,n)?e[n]:void 0,t[n]));return r}function ms(e,t){let r=bn(e,t);return!fr(r)||Object.keys(r).length?r:null}function Et(e,t,r){for(let n in r)if(tt.call(r,n)!==!1){if(r[n]===!0)tt.call(t,n)&&(e[n]=ds(t[n]));else if(r[n]){if(typeof r[n]=="function"){let o=r[n];e[n]=o({},e[n]),e[n]=o(e[n]||{},t[n])}else if(fr(r[n])){let o={};for(let i in e[n])o[i]=Et({},e[n][i],r[n]);for(let i in t[n])o[i]=Et(o[i]||{},t[n][i],r[n]);e[n]=o}else if(Array.isArray(r[n])){let o={},i=r[n].reduce(function(a,l){return a[l]=!0,a},{});for(let[a,l]of Object.entries(e[n]||{}))o[a]={},l&&Et(o[a],l,i);for(let a in t[n])tt.call(t[n],a)&&(o[a]||(o[a]={}),t[n]&&t[n][a]&&Et(o[a],t[n][a],i));e[n]=o}}}return e}var mr=(e,t)=>Et(e,t,Qu);function bs(e){let t=Ji(e),r=Ia(e),n=Ca(e),{fromPlainObject:o,toPlainObject:i}=Aa(r),a={lexer:null,createLexer:l=>new et(l,a,a.lexer.structure),tokenize:Le,parse:t,generate:n,walk:r,find:r.find,findLast:r.findLast,findAll:r.findAll,fromPlainObject:o,toPlainObject:i,fork(l){let c=mr({},e);return bs(typeof l=="function"?l(c,Object.assign):mr(c,l))}};return a.lexer=new et({generic:!0,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},a),a}var yn=e=>bs(mr({},e));var ys={generic:!0,types:{"absolute-size":"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large","alpha-value":"<number>|<percentage>","angle-percentage":"<angle>|<percentage>","angular-color-hint":"<angle-percentage>","angular-color-stop":"<color>&&<color-stop-angle>?","angular-color-stop-list":"[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>","animateable-feature":"scroll-position|contents|<custom-ident>",attachment:"scroll|fixed|local","attr()":"attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attribute-selector":"'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )","auto-track-list":"[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?","baseline-position":"[first|last]? baseline","basic-shape":"<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>","bg-image":"none|<image>","bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","bg-position":"[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]","bg-size":"[<length-percentage>|auto]{1,2}|cover|contain","blur()":"blur( <length> )","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",box:"border-box|padding-box|content-box","brightness()":"brightness( <number-percentage> )","calc()":"calc( <calc-sum> )","calc-sum":"<calc-product> [['+'|'-'] <calc-product>]*","calc-product":"<calc-value> ['*' <calc-value>|'/' <number>]*","calc-value":"<number>|<dimension>|<percentage>|( <calc-sum> )","cf-final-image":"<image>|<color>","cf-mixing-image":"<percentage>?&&<image>","circle()":"circle( [<shape-radius>]? [at <position>]? )","clamp()":"clamp( <calc-sum>#{3} )","class-selector":"'.' <ident-token>","clip-source":"<url>",color:"<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<hex-color>|<named-color>|currentcolor|<deprecated-system-color>","color-stop":"<color-stop-length>|<color-stop-angle>","color-stop-angle":"<angle-percentage>{1,2}","color-stop-length":"<length-percentage>{1,2}","color-stop-list":"[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>",combinator:"'>'|'+'|'~'|['||']","common-lig-values":"[common-ligatures|no-common-ligatures]","compat-auto":"searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[<type-selector>? <subclass-selector>* [<pseudo-element-selector> <pseudo-class-selector>*]*]!","compound-selector-list":"<compound-selector>#","complex-selector":"<compound-selector> [<combinator>? <compound-selector>]*","complex-selector-list":"<complex-selector>#","conic-gradient()":"conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","contextual-alt-values":"[contextual|no-contextual]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"<image>","contrast()":"contrast( [<number-percentage>] )",counter:"<counter()>|<counters()>","counter()":"counter( <counter-name> , <counter-style>? )","counter-name":"<custom-ident>","counter-style":"<counter-style-name>|symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <counter-name> , <string> , <counter-style>? )","cross-fade()":"cross-fade( <cf-mixing-image> , <cf-final-image>? )","cubic-bezier-timing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"<display-outside>?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( <length>{2,3} <color>? )","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )","ellipse()":"ellipse( [<shape-radius>{2}]? [at <position>]? )","ending-shape":"circle|ellipse","env()":"env( <custom-ident> , <declaration-value>? )","explicit-track-list":"[<line-names>? <track-size>]+ <line-names>?","family-name":"<string>|<custom-ident>+","feature-tag-value":"<string> [<integer>|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":"<feature-type> '{' <feature-value-declaration-list> '}'","feature-value-block-list":"<feature-value-block>+","feature-value-declaration":"<custom-ident> : <integer>+ ;","feature-value-declaration-list":"<feature-value-declaration>","feature-value-name":"<custom-ident>","fill-rule":"nonzero|evenodd","filter-function":"<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>","filter-function-list":"[<filter-function>|<url>]+","final-bg-layer":"<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","fit-content()":"fit-content( [<length>|<percentage>] )","fixed-breadth":"<length-percentage>","fixed-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <fixed-size>]+ <line-names>? )","fixed-size":"<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>","font-variant-css21":"[normal|small-caps]","font-weight-absolute":"normal|bold|<number [1,1000]>","frequency-percentage":"<frequency>|<percentage>","general-enclosed":"[<function-token> <any-value> )]|( <ident> <any-value> )","generic-family":"serif|sans-serif|cursive|fantasy|monospace|-apple-system","generic-name":"serif|sans-serif|cursive|fantasy|monospace","geometry-box":"<shape-box>|fill-box|stroke-box|view-box",gradient:"<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>","grayscale()":"grayscale( <number-percentage> )","grid-line":"auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )","hsla()":"hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )",hue:"<number>|<angle>","hue-rotate()":"hue-rotate( <angle> )","hwb()":"hwb( [<hue>|none] [<percentage>|none] [<percentage>|none] [/ [<alpha-value>|none]]? )",image:"<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>","image()":"image( <image-tags>? [<image-src>? , <color>?]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[<image>|<string>] [<resolution>||type( <string> )]","image-src":"<url>|<string>","image-tags":"ltr|rtl","inflexible-breadth":"<length>|<percentage>|min-content|max-content|auto","inset()":"inset( <length-percentage>{1,4} [round <'border-radius'>]? )","invert()":"invert( <number-percentage> )","keyframes-name":"<custom-ident>|<string>","keyframe-block":"<keyframe-selector># { <declaration-list> }","keyframe-block-list":"<keyframe-block>+","keyframe-selector":"from|to|<percentage>","layer()":"layer( <layer-name> )","layer-name":"<ident> ['.' <ident>]*","leader()":"leader( <leader-type> )","leader-type":"dotted|solid|space|<string>","length-percentage":"<length>|<percentage>","line-names":"'[' <custom-ident>* ']'","line-name-list":"[<line-names>|<name-repeat>]+","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"<length>|thin|medium|thick","linear-color-hint":"<length-percentage>","linear-color-stop":"<color> <color-stop-length>?","linear-gradient()":"linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","mask-layer":"<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>","mask-position":"[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?","mask-reference":"none|<image>|<mask-source>","mask-source":"<url>","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( <number>#{6} )","matrix3d()":"matrix3d( <number>#{16} )","max()":"max( <calc-sum># )","media-and":"<media-in-parens> [and <media-in-parens>]+","media-condition":"<media-not>|<media-and>|<media-or>|<media-in-parens>","media-condition-without-or":"<media-not>|<media-and>|<media-in-parens>","media-feature":"( [<mf-plain>|<mf-boolean>|<mf-range>] )","media-in-parens":"( <media-condition> )|<media-feature>|<general-enclosed>","media-not":"not <media-in-parens>","media-or":"<media-in-parens> [or <media-in-parens>]+","media-query":"<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?","media-query-list":"<media-query>#","media-type":"<ident>","mf-boolean":"<mf-name>","mf-name":"<ident>","mf-plain":"<mf-name> : <mf-value>","mf-range":"<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>","mf-value":"<number>|<dimension>|<ident>|<ratio>","min()":"min( <calc-sum># )","minmax()":"minmax( [<length>|<percentage>|min-content|max-content|auto] , [<length>|<percentage>|<flex>|min-content|max-content|auto] )","name-repeat":"repeat( [<integer [1,\u221E]>|auto-fill] , <line-names>+ )","named-color":"transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>","namespace-prefix":"<ident>","ns-prefix":"[<ident-token>|'*']? '|'","number-percentage":"<number>|<percentage>","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]",nth:"<an-plus-b>|even|odd","opacity()":"opacity( [<number-percentage>] )","overflow-position":"unsafe|safe","outline-radius":"<length>|<percentage>","page-body":"<declaration>? [; <page-body>]?|<page-margin-box> <page-body>","page-margin-box":"<page-margin-box-type> '{' <declaration-list> '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector-list":"[<page-selector>#]?","page-selector":"<pseudo-page>+|<ident> <pseudo-page>*","page-size":"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger","path()":"path( [<fill-rule> ,]? <string> )","paint()":"paint( <ident> , <declaration-value>? )","perspective()":"perspective( <length> )","polygon()":"polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]","pseudo-class-selector":"':' <ident-token>|':' <function-token> <any-value> ')'","pseudo-element-selector":"':' <pseudo-class-selector>","pseudo-page":": [left|right|first|blank]",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-gradient()":"radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","relative-selector":"<combinator>? <complex-selector>","relative-selector-list":"<relative-selector>#","relative-size":"larger|smaller","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-conic-gradient()":"repeating-conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","repeating-linear-gradient()":"repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","repeating-radial-gradient()":"repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","rgb()":"rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )","rgba()":"rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )","rotate()":"rotate( [<angle>|<zero>] )","rotate3d()":"rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )","rotateX()":"rotateX( [<angle>|<zero>] )","rotateY()":"rotateY( [<angle>|<zero>] )","rotateZ()":"rotateZ( [<angle>|<zero>] )","saturate()":"saturate( <number-percentage> )","scale()":"scale( <number> , <number>? )","scale3d()":"scale3d( <number> , <number> , <number> )","scaleX()":"scaleX( <number> )","scaleY()":"scaleY( <number> )","scaleZ()":"scaleZ( <number> )","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","shape-radius":"<length-percentage>|closest-side|farthest-side","skew()":"skew( [<angle>|<zero>] , [<angle>|<zero>]? )","skewX()":"skewX( [<angle>|<zero>] )","skewY()":"skewY( [<angle>|<zero>] )","sepia()":"sepia( <number-percentage> )",shadow:"inset?&&<length>{2,4}&&<color>?","shadow-t":"[<length>{2,3}&&<color>?]",shape:"rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )","shape-box":"<box>|margin-box","side-or-corner":"[left|right]||[top|bottom]","single-animation":"<time>||<easing-function>||<time>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]","single-animation-direction":"normal|reverse|alternate|alternate-reverse","single-animation-fill-mode":"none|forwards|backwards|both","single-animation-iteration-count":"infinite|<number>","single-animation-play-state":"running|paused","single-animation-timeline":"auto|none|<timeline-name>","single-transition":"[none|<single-transition-property>]||<time>||<easing-function>||<time>","single-transition-property":"all|<custom-ident>",size:"closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}","step-position":"jump-start|jump-end|jump-none|jump-both|start|end","step-timing-function":"step-start|step-end|steps( <integer> [, <step-position>]? )","subclass-selector":"<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>","supports-condition":"not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*","supports-in-parens":"( <supports-condition> )|<supports-feature>|<general-enclosed>","supports-feature":"<supports-decl>|<supports-selector-fn>","supports-decl":"( <declaration> )","supports-selector-fn":"selector( <complex-selector> )",symbol:"<string>|<image>|<custom-ident>",target:"<target-counter()>|<target-counters()>|<target-text()>","target-counter()":"target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )","target-counters()":"target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )","target-text()":"target-text( [<string>|<url>] , [content|before|after|first-letter]? )","time-percentage":"<time>|<percentage>","timeline-name":"<custom-ident>|<string>","easing-function":"linear|<cubic-bezier-timing-function>|<step-timing-function>","track-breadth":"<length-percentage>|<flex>|min-content|max-content|auto","track-list":"[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?","track-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <track-size>]+ <line-names>? )","track-size":"<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( [<length>|<percentage>] )","transform-function":"<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>","transform-list":"<transform-function>+","translate()":"translate( <length-percentage> , <length-percentage>? )","translate3d()":"translate3d( <length-percentage> , <length-percentage> , <length> )","translateX()":"translateX( <length-percentage> )","translateY()":"translateY( <length-percentage> )","translateZ()":"translateZ( <length> )","type-or-unit":"string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%","type-selector":"<wq-name>|<ns-prefix>? '*'","var()":"var( <custom-property-name> , <declaration-value>? )","viewport-length":"auto|<length-percentage>","visual-box":"content-box|padding-box|border-box","wq-name":"<ns-prefix>? <ident-token>","-legacy-gradient":"<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>","-legacy-linear-gradient":"-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-repeating-linear-gradient":"-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-linear-gradient-arguments":"[<angle>|<side-or-corner>]? , <color-stop-list>","-legacy-radial-gradient":"-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-repeating-radial-gradient":"-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-radial-gradient-arguments":"[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>","-legacy-radial-gradient-size":"closest-side|closest-corner|farthest-side|farthest-corner|contain|cover","-legacy-radial-gradient-shape":"circle|ellipse","-non-standard-font":"-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body","-non-standard-color":"-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text","-non-standard-image-rendering":"optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast","-non-standard-overflow":"-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable","-non-standard-width":"fill-available|min-intrinsic|intrinsic|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content|-webkit-min-content|-webkit-max-content","-webkit-gradient()":"-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )","-webkit-gradient-color-stop":"from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )","-webkit-gradient-point":"[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]","-webkit-gradient-radius":"<length>|<percentage>","-webkit-gradient-type":"linear|radial","-webkit-mask-box-repeat":"repeat|stretch|round","-webkit-mask-clip-style":"border|border-box|padding|padding-box|content|content-box|text","-ms-filter-function-list":"<-ms-filter-function>+","-ms-filter-function":"<-ms-filter-function-progid>|<-ms-filter-function-legacy>","-ms-filter-function-progid":"'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]","-ms-filter-function-legacy":"<ident-token>|<function-token> <any-value>? )","-ms-filter":"<string>",age:"child|young|old","attr-name":"<wq-name>","attr-fallback":"<any-value>","bg-clip":"<box>|border|text","border-radius":"<length-percentage>{1,2}",bottom:"<length>|auto","generic-voice":"[<age>? <gender> <integer>?]",gender:"male|female|neutral","lab()":"lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","lch()":"lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )",left:"<length>|auto","mask-image":"<mask-reference>#",paint:"none|<color>|<url> [none|<color>]?|context-fill|context-stroke",ratio:"<number [0,\u221E]> [/ <number [0,\u221E]>]?","reversed-counter-name":"reversed( <counter-name> )",right:"<length>|auto","svg-length":"<percentage>|<length>|<number>","svg-writing-mode":"lr-tb|rl-tb|tb-rl|lr|rl|tb",top:"<length>|auto","track-group":"'(' [<string>* <track-minmax> <string>*]+ ')' ['[' <positive-integer> ']']?|<track-minmax>","track-list-v0":"[<string>* <track-group> <string>*]+|none","track-minmax":"minmax( <track-breadth> , <track-breadth> )|auto|<track-breadth>|fit-content",x:"<number>",y:"<number>",declaration:"<ident-token> : <declaration-value>? ['!' important]?","declaration-list":"[<declaration>? ';']* <declaration>?",url:"url( <string> <url-modifier>* )|<url-token>","url-modifier":"<ident>|<function-token> <any-value> )","number-zero-one":"<number [0,1]>","number-one-or-greater":"<number [1,\u221E]>","positive-integer":"<integer [0,\u221E]>","-non-standard-display":"-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box"},properties:{"--*":"<declaration-value>","-ms-accelerator":"false|true","-ms-block-progression":"tb|rl|bt|lr","-ms-content-zoom-chaining":"none|chained","-ms-content-zooming":"none|zoom","-ms-content-zoom-limit":"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>","-ms-content-zoom-limit-max":"<percentage>","-ms-content-zoom-limit-min":"<percentage>","-ms-content-zoom-snap":"<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>","-ms-content-zoom-snap-points":"snapInterval( <percentage> , <percentage> )|snapList( <percentage># )","-ms-content-zoom-snap-type":"none|proximity|mandatory","-ms-filter":"<string>","-ms-flow-from":"[none|<custom-ident>]#","-ms-flow-into":"[none|<custom-ident>]#","-ms-grid-columns":"none|<track-list>|<auto-track-list>","-ms-grid-rows":"none|<track-list>|<auto-track-list>","-ms-high-contrast-adjust":"auto|none","-ms-hyphenate-limit-chars":"auto|<integer>{1,3}","-ms-hyphenate-limit-lines":"no-limit|<integer>","-ms-hyphenate-limit-zone":"<percentage>|<length>","-ms-ime-align":"auto|after","-ms-overflow-style":"auto|none|scrollbar|-ms-autohiding-scrollbar","-ms-scrollbar-3dlight-color":"<color>","-ms-scrollbar-arrow-color":"<color>","-ms-scrollbar-base-color":"<color>","-ms-scrollbar-darkshadow-color":"<color>","-ms-scrollbar-face-color":"<color>","-ms-scrollbar-highlight-color":"<color>","-ms-scrollbar-shadow-color":"<color>","-ms-scrollbar-track-color":"<color>","-ms-scroll-chaining":"chained|none","-ms-scroll-limit":"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>","-ms-scroll-limit-x-max":"auto|<length>","-ms-scroll-limit-x-min":"<length>","-ms-scroll-limit-y-max":"auto|<length>","-ms-scroll-limit-y-min":"<length>","-ms-scroll-rails":"none|railed","-ms-scroll-snap-points-x":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-points-y":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-type":"none|proximity|mandatory","-ms-scroll-snap-x":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>","-ms-scroll-snap-y":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>","-ms-scroll-translation":"none|vertical-to-horizontal","-ms-text-autospace":"none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space","-ms-touch-select":"grippers|none","-ms-user-select":"none|element|text","-ms-wrap-flow":"auto|both|start|end|maximum|clear","-ms-wrap-margin":"<length>","-ms-wrap-through":"wrap|none","-moz-appearance":"none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized","-moz-binding":"<url>|none","-moz-border-bottom-colors":"<color>+|none","-moz-border-left-colors":"<color>+|none","-moz-border-right-colors":"<color>+|none","-moz-border-top-colors":"<color>+|none","-moz-context-properties":"none|[fill|fill-opacity|stroke|stroke-opacity]#","-moz-float-edge":"border-box|content-box|margin-box|padding-box","-moz-force-broken-image-icon":"0|1","-moz-image-region":"<shape>|auto","-moz-orient":"inline|block|horizontal|vertical","-moz-outline-radius":"<outline-radius>{1,4} [/ <outline-radius>{1,4}]?","-moz-outline-radius-bottomleft":"<outline-radius>","-moz-outline-radius-bottomright":"<outline-radius>","-moz-outline-radius-topleft":"<outline-radius>","-moz-outline-radius-topright":"<outline-radius>","-moz-stack-sizing":"ignore|stretch-to-fit","-moz-text-blink":"none|blink","-moz-user-focus":"ignore|normal|select-after|select-before|select-menu|select-same|select-all|none","-moz-user-input":"auto|none|enabled|disabled","-moz-user-modify":"read-only|read-write|write-only","-moz-window-dragging":"drag|no-drag","-moz-window-shadow":"default|menu|tooltip|sheet|none","-webkit-appearance":"none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button","-webkit-border-before":"<'border-width'>||<'border-style'>||<color>","-webkit-border-before-color":"<color>","-webkit-border-before-style":"<'border-style'>","-webkit-border-before-width":"<'border-width'>","-webkit-box-reflect":"[above|below|right|left]? <length>? <image>?","-webkit-line-clamp":"none|<integer>","-webkit-mask":"[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#","-webkit-mask-attachment":"<attachment>#","-webkit-mask-clip":"[<box>|border|padding|content|text]#","-webkit-mask-composite":"<composite-style>#","-webkit-mask-image":"<mask-reference>#","-webkit-mask-origin":"[<box>|border|padding|content]#","-webkit-mask-position":"<position>#","-webkit-mask-position-x":"[<length-percentage>|left|center|right]#","-webkit-mask-position-y":"[<length-percentage>|top|center|bottom]#","-webkit-mask-repeat":"<repeat-style>#","-webkit-mask-repeat-x":"repeat|no-repeat|space|round","-webkit-mask-repeat-y":"repeat|no-repeat|space|round","-webkit-mask-size":"<bg-size>#","-webkit-overflow-scrolling":"auto|touch","-webkit-tap-highlight-color":"<color>","-webkit-text-fill-color":"<color>","-webkit-text-stroke":"<length>||<color>","-webkit-text-stroke-color":"<color>","-webkit-text-stroke-width":"<length>","-webkit-touch-callout":"default|none","-webkit-user-modify":"read-only|read-write|read-write-plaintext-only","accent-color":"auto|<color>","align-content":"normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>","align-items":"normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]","align-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>","align-tracks":"[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#",all:"initial|inherit|unset|revert|revert-layer",animation:"<single-animation>#","animation-delay":"<time>#","animation-direction":"<single-animation-direction>#","animation-duration":"<time>#","animation-fill-mode":"<single-animation-fill-mode>#","animation-iteration-count":"<single-animation-iteration-count>#","animation-name":"[none|<keyframes-name>]#","animation-play-state":"<single-animation-play-state>#","animation-timing-function":"<easing-function>#","animation-timeline":"<single-animation-timeline>#",appearance:"none|auto|textfield|menulist-button|<compat-auto>","aspect-ratio":"auto|<ratio>",azimuth:"<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards","backdrop-filter":"none|<filter-function-list>","backface-visibility":"visible|hidden",background:"[<bg-layer> ,]* <final-bg-layer>","background-attachment":"<attachment>#","background-blend-mode":"<blend-mode>#","background-clip":"<bg-clip>#","background-color":"<color>","background-image":"<bg-image>#","background-origin":"<box>#","background-position":"<bg-position>#","background-position-x":"[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#","background-position-y":"[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#","background-repeat":"<repeat-style>#","background-size":"<bg-size>#","block-overflow":"clip|ellipsis|<string>","block-size":"<'width'>",border:"<line-width>||<line-style>||<color>","border-block":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-color":"<'border-top-color'>{1,2}","border-block-style":"<'border-top-style'>","border-block-width":"<'border-top-width'>","border-block-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-end-color":"<'border-top-color'>","border-block-end-style":"<'border-top-style'>","border-block-end-width":"<'border-top-width'>","border-block-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-start-color":"<'border-top-color'>","border-block-start-style":"<'border-top-style'>","border-block-start-width":"<'border-top-width'>","border-bottom":"<line-width>||<line-style>||<color>","border-bottom-color":"<'border-top-color'>","border-bottom-left-radius":"<length-percentage>{1,2}","border-bottom-right-radius":"<length-percentage>{1,2}","border-bottom-style":"<line-style>","border-bottom-width":"<line-width>","border-collapse":"collapse|separate","border-color":"<color>{1,4}","border-end-end-radius":"<length-percentage>{1,2}","border-end-start-radius":"<length-percentage>{1,2}","border-image":"<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>","border-image-outset":"[<length>|<number>]{1,4}","border-image-repeat":"[stretch|repeat|round|space]{1,2}","border-image-slice":"<number-percentage>{1,4}&&fill?","border-image-source":"none|<image>","border-image-width":"[<length-percentage>|<number>|auto]{1,4}","border-inline":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-color":"<'border-top-color'>{1,2}","border-inline-style":"<'border-top-style'>","border-inline-width":"<'border-top-width'>","border-inline-end-color":"<'border-top-color'>","border-inline-end-style":"<'border-top-style'>","border-inline-end-width":"<'border-top-width'>","border-inline-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-start-color":"<'border-top-color'>","border-inline-start-style":"<'border-top-style'>","border-inline-start-width":"<'border-top-width'>","border-left":"<line-width>||<line-style>||<color>","border-left-color":"<color>","border-left-style":"<line-style>","border-left-width":"<line-width>","border-radius":"<length-percentage>{1,4} [/ <length-percentage>{1,4}]?","border-right":"<line-width>||<line-style>||<color>","border-right-color":"<color>","border-right-style":"<line-style>","border-right-width":"<line-width>","border-spacing":"<length> <length>?","border-start-end-radius":"<length-percentage>{1,2}","border-start-start-radius":"<length-percentage>{1,2}","border-style":"<line-style>{1,4}","border-top":"<line-width>||<line-style>||<color>","border-top-color":"<color>","border-top-left-radius":"<length-percentage>{1,2}","border-top-right-radius":"<length-percentage>{1,2}","border-top-style":"<line-style>","border-top-width":"<line-width>","border-width":"<line-width>{1,4}",bottom:"<length>|<percentage>|auto","box-align":"start|center|end|baseline|stretch","box-decoration-break":"slice|clone","box-direction":"normal|reverse|inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single|multiple","box-ordinal-group":"<integer>","box-orient":"horizontal|vertical|inline-axis|block-axis|inherit","box-pack":"start|center|end|justify","box-shadow":"none|<shadow>#","box-sizing":"content-box|border-box","break-after":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-before":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-inside":"auto|avoid|avoid-page|avoid-column|avoid-region","caption-side":"top|bottom|block-start|block-end|inline-start|inline-end","caret-color":"auto|<color>",clear:"none|left|right|both|inline-start|inline-end",clip:"<shape>|auto","clip-path":"<clip-source>|[<basic-shape>||<geometry-box>]|none",color:"<color>","print-color-adjust":"economy|exact","color-scheme":"normal|[light|dark|<custom-ident>]+&&only?","column-count":"<integer>|auto","column-fill":"auto|balance|balance-all","column-gap":"normal|<length-percentage>","column-rule":"<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>","column-rule-color":"<color>","column-rule-style":"<'border-style'>","column-rule-width":"<'border-width'>","column-span":"none|all","column-width":"<length>|auto",columns:"<'column-width'>||<'column-count'>",contain:"none|strict|content|[size||layout||style||paint]",content:"normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>]+]?","content-visibility":"visible|auto|hidden","counter-increment":"[<counter-name> <integer>?]+|none","counter-reset":"[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none","counter-set":"[<counter-name> <integer>?]+|none",cursor:"[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",direction:"ltr|rtl",display:"[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>","empty-cells":"show|hide",filter:"none|<filter-function-list>|<-ms-filter-function-list>",flex:"none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]","flex-basis":"content|<'width'>","flex-direction":"row|row-reverse|column|column-reverse","flex-flow":"<'flex-direction'>||<'flex-wrap'>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap|wrap|wrap-reverse",float:"left|right|none|inline-start|inline-end",font:"[[<'font-style'>||<font-variant-css21>||<'font-weight'>||<'font-stretch'>]? <'font-size'> [/ <'line-height'>]? <'font-family'>]|caption|icon|menu|message-box|small-caption|status-bar","font-family":"[<family-name>|<generic-family>]#","font-feature-settings":"normal|<feature-tag-value>#","font-kerning":"auto|normal|none","font-language-override":"normal|<string>","font-optical-sizing":"auto|none","font-variation-settings":"normal|[<string> <number>]#","font-size":"<absolute-size>|<relative-size>|<length-percentage>","font-size-adjust":"none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]","font-smooth":"auto|never|always|<absolute-size>|<length>","font-stretch":"<font-stretch-absolute>","font-style":"normal|italic|oblique <angle>?","font-synthesis":"none|[weight||style||small-caps]","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-alternates":"normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]","font-variant-caps":"normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps","font-variant-east-asian":"normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-ligatures":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]","font-variant-numeric":"normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]","font-variant-position":"normal|sub|super","font-weight":"<font-weight-absolute>|bolder|lighter","forced-color-adjust":"auto|none",gap:"<'row-gap'> <'column-gap'>?",grid:"<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>","grid-area":"<grid-line> [/ <grid-line>]{0,3}","grid-auto-columns":"<track-size>+","grid-auto-flow":"[row|column]||dense","grid-auto-rows":"<track-size>+","grid-column":"<grid-line> [/ <grid-line>]?","grid-column-end":"<grid-line>","grid-column-gap":"<length-percentage>","grid-column-start":"<grid-line>","grid-gap":"<'grid-row-gap'> <'grid-column-gap'>?","grid-row":"<grid-line> [/ <grid-line>]?","grid-row-end":"<grid-line>","grid-row-gap":"<length-percentage>","grid-row-start":"<grid-line>","grid-template":"none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?","grid-template-areas":"none|<string>+","grid-template-columns":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","grid-template-rows":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","hanging-punctuation":"none|[first||[force-end|allow-end]||last]",height:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","hyphenate-character":"auto|<string>",hyphens:"none|manual|auto","image-orientation":"from-image|<angle>|[<angle>? flip]","image-rendering":"auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>","image-resolution":"[from-image||<resolution>]&&snap?","ime-mode":"auto|normal|active|inactive|disabled","initial-letter":"normal|[<number> <integer>?]","initial-letter-align":"[auto|alphabetic|hanging|ideographic]","inline-size":"<'width'>","input-security":"auto|none",inset:"<'top'>{1,4}","inset-block":"<'top'>{1,2}","inset-block-end":"<'top'>","inset-block-start":"<'top'>","inset-inline":"<'top'>{1,2}","inset-inline-end":"<'top'>","inset-inline-start":"<'top'>",isolation:"auto|isolate","justify-content":"normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]","justify-items":"normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]","justify-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]","justify-tracks":"[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",left:"<length>|<percentage>|auto","letter-spacing":"normal|<length-percentage>","line-break":"auto|loose|normal|strict|anywhere","line-clamp":"none|<integer>","line-height":"normal|<number>|<length>|<percentage>","line-height-step":"<length>","list-style":"<'list-style-type'>||<'list-style-position'>||<'list-style-image'>","list-style-image":"<image>|none","list-style-position":"inside|outside","list-style-type":"<counter-style>|<string>|none",margin:"[<length>|<percentage>|auto]{1,4}","margin-block":"<'margin-left'>{1,2}","margin-block-end":"<'margin-left'>","margin-block-start":"<'margin-left'>","margin-bottom":"<length>|<percentage>|auto","margin-inline":"<'margin-left'>{1,2}","margin-inline-end":"<'margin-left'>","margin-inline-start":"<'margin-left'>","margin-left":"<length>|<percentage>|auto","margin-right":"<length>|<percentage>|auto","margin-top":"<length>|<percentage>|auto","margin-trim":"none|in-flow|all",mask:"<mask-layer>#","mask-border":"<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>","mask-border-mode":"luminance|alpha","mask-border-outset":"[<length>|<number>]{1,4}","mask-border-repeat":"[stretch|repeat|round|space]{1,2}","mask-border-slice":"<number-percentage>{1,4} fill?","mask-border-source":"none|<image>","mask-border-width":"[<length-percentage>|<number>|auto]{1,4}","mask-clip":"[<geometry-box>|no-clip]#","mask-composite":"<compositing-operator>#","mask-image":"<mask-reference>#","mask-mode":"<masking-mode>#","mask-origin":"<geometry-box>#","mask-position":"<position>#","mask-repeat":"<repeat-style>#","mask-size":"<bg-size>#","mask-type":"luminance|alpha","masonry-auto-flow":"[pack|next]||[definite-first|ordered]","math-style":"normal|compact","max-block-size":"<'max-width'>","max-height":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","max-inline-size":"<'max-width'>","max-lines":"none|<integer>","max-width":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","min-block-size":"<'min-width'>","min-height":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","min-inline-size":"<'min-width'>","min-width":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","mix-blend-mode":"<blend-mode>|plus-lighter","object-fit":"fill|contain|cover|none|scale-down","object-position":"<position>",offset:"[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?","offset-anchor":"auto|<position>","offset-distance":"<length-percentage>","offset-path":"none|ray( [<angle>&&<size>&&contain?] )|<path()>|<url>|[<basic-shape>||<geometry-box>]","offset-position":"auto|<position>","offset-rotate":"[auto|reverse]||<angle>",opacity:"<alpha-value>",order:"<integer>",orphans:"<integer>",outline:"[<'outline-color'>||<'outline-style'>||<'outline-width'>]","outline-color":"<color>|invert","outline-offset":"<length>","outline-style":"auto|<'border-style'>","outline-width":"<line-width>",overflow:"[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>","overflow-anchor":"auto|none","overflow-block":"visible|hidden|clip|scroll|auto","overflow-clip-box":"padding-box|content-box","overflow-clip-margin":"<visual-box>||<length [0,\u221E]>","overflow-inline":"visible|hidden|clip|scroll|auto","overflow-wrap":"normal|break-word|anywhere","overflow-x":"visible|hidden|clip|scroll|auto","overflow-y":"visible|hidden|clip|scroll|auto","overscroll-behavior":"[contain|none|auto]{1,2}","overscroll-behavior-block":"contain|none|auto","overscroll-behavior-inline":"contain|none|auto","overscroll-behavior-x":"contain|none|auto","overscroll-behavior-y":"contain|none|auto",padding:"[<length>|<percentage>]{1,4}","padding-block":"<'padding-left'>{1,2}","padding-block-end":"<'padding-left'>","padding-block-start":"<'padding-left'>","padding-bottom":"<length>|<percentage>","padding-inline":"<'padding-left'>{1,2}","padding-inline-end":"<'padding-left'>","padding-inline-start":"<'padding-left'>","padding-left":"<length>|<percentage>","padding-right":"<length>|<percentage>","padding-top":"<length>|<percentage>","page-break-after":"auto|always|avoid|left|right|recto|verso","page-break-before":"auto|always|avoid|left|right|recto|verso","page-break-inside":"auto|avoid","paint-order":"normal|[fill||stroke||markers]",perspective:"none|<length>","perspective-origin":"<position>","place-content":"<'align-content'> <'justify-content'>?","place-items":"<'align-items'> <'justify-items'>?","place-self":"<'align-self'> <'justify-self'>?","pointer-events":"auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",position:"static|relative|absolute|sticky|fixed|-webkit-sticky",quotes:"none|auto|[<string> <string>]+",resize:"none|both|horizontal|vertical|block|inline",right:"<length>|<percentage>|auto",rotate:"none|<angle>|[x|y|z|<number>{3}]&&<angle>","row-gap":"normal|<length-percentage>","ruby-align":"start|center|space-between|space-around","ruby-merge":"separate|collapse|auto","ruby-position":"[alternate||[over|under]]|inter-character",scale:"none|<number>{1,3}","scrollbar-color":"auto|<color>{2}","scrollbar-gutter":"auto|stable&&both-edges?","scrollbar-width":"auto|thin|none","scroll-behavior":"auto|smooth","scroll-margin":"<length>{1,4}","scroll-margin-block":"<length>{1,2}","scroll-margin-block-start":"<length>","scroll-margin-block-end":"<length>","scroll-margin-bottom":"<length>","scroll-margin-inline":"<length>{1,2}","scroll-margin-inline-start":"<length>","scroll-margin-inline-end":"<length>","scroll-margin-left":"<length>","scroll-margin-right":"<length>","scroll-margin-top":"<length>","scroll-padding":"[auto|<length-percentage>]{1,4}","scroll-padding-block":"[auto|<length-percentage>]{1,2}","scroll-padding-block-start":"auto|<length-percentage>","scroll-padding-block-end":"auto|<length-percentage>","scroll-padding-bottom":"auto|<length-percentage>","scroll-padding-inline":"[auto|<length-percentage>]{1,2}","scroll-padding-inline-start":"auto|<length-percentage>","scroll-padding-inline-end":"auto|<length-percentage>","scroll-padding-left":"auto|<length-percentage>","scroll-padding-right":"auto|<length-percentage>","scroll-padding-top":"auto|<length-percentage>","scroll-snap-align":"[none|start|end|center]{1,2}","scroll-snap-coordinate":"none|<position>#","scroll-snap-destination":"<position>","scroll-snap-points-x":"none|repeat( <length-percentage> )","scroll-snap-points-y":"none|repeat( <length-percentage> )","scroll-snap-stop":"normal|always","scroll-snap-type":"none|[x|y|block|inline|both] [mandatory|proximity]?","scroll-snap-type-x":"none|mandatory|proximity","scroll-snap-type-y":"none|mandatory|proximity","shape-image-threshold":"<alpha-value>","shape-margin":"<length-percentage>","shape-outside":"none|[<shape-box>||<basic-shape>]|<image>","tab-size":"<integer>|<length>","table-layout":"auto|fixed","text-align":"start|end|left|right|center|justify|match-parent","text-align-last":"auto|start|end|left|right|center|justify","text-combine-upright":"none|all|[digits <integer>?]","text-decoration":"<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>","text-decoration-color":"<color>","text-decoration-line":"none|[underline||overline||line-through||blink]|spelling-error|grammar-error","text-decoration-skip":"none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]","text-decoration-skip-ink":"auto|all|none","text-decoration-style":"solid|double|dotted|dashed|wavy","text-decoration-thickness":"auto|from-font|<length>|<percentage>","text-emphasis":"<'text-emphasis-style'>||<'text-emphasis-color'>","text-emphasis-color":"<color>","text-emphasis-position":"[over|under]&&[right|left]","text-emphasis-style":"none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>","text-indent":"<length-percentage>&&hanging?&&each-line?","text-justify":"auto|inter-character|inter-word|none","text-orientation":"mixed|upright|sideways","text-overflow":"[clip|ellipsis|<string>]{1,2}","text-rendering":"auto|optimizeSpeed|optimizeLegibility|geometricPrecision","text-shadow":"none|<shadow-t>#","text-size-adjust":"none|auto|<percentage>","text-transform":"none|capitalize|uppercase|lowercase|full-width|full-size-kana","text-underline-offset":"auto|<length>|<percentage>","text-underline-position":"auto|from-font|[under||[left|right]]",top:"<length>|<percentage>|auto","touch-action":"auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",transform:"none|<transform-list>","transform-box":"content-box|border-box|fill-box|stroke-box|view-box","transform-origin":"[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?","transform-style":"flat|preserve-3d",transition:"<single-transition>#","transition-delay":"<time>#","transition-duration":"<time>#","transition-property":"none|<single-transition-property>#","transition-timing-function":"<easing-function>#",translate:"none|<length-percentage> [<length-percentage> <length>?]?","unicode-bidi":"normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext","user-select":"auto|text|none|contain|all","vertical-align":"baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>",visibility:"visible|hidden|collapse","white-space":"normal|pre|nowrap|pre-wrap|pre-line|break-spaces",widows:"<integer>",width:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|fill|stretch|intrinsic|-moz-max-content|-webkit-max-content|-moz-fit-content|-webkit-fit-content","will-change":"auto|<animateable-feature>#","word-break":"normal|break-all|keep-all|break-word","word-spacing":"normal|<length>","word-wrap":"normal|break-word","writing-mode":"horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>","z-index":"auto|<integer>",zoom:"normal|reset|<number>|<percentage>","-moz-background-clip":"padding|border","-moz-border-radius-bottomleft":"<'border-bottom-left-radius'>","-moz-border-radius-bottomright":"<'border-bottom-right-radius'>","-moz-border-radius-topleft":"<'border-top-left-radius'>","-moz-border-radius-topright":"<'border-bottom-right-radius'>","-moz-control-character-visibility":"visible|hidden","-moz-osx-font-smoothing":"auto|grayscale","-moz-user-select":"none|text|all|-moz-none","-ms-flex-align":"start|end|center|baseline|stretch","-ms-flex-item-align":"auto|start|end|center|baseline|stretch","-ms-flex-line-pack":"start|end|center|justify|distribute|stretch","-ms-flex-negative":"<'flex-shrink'>","-ms-flex-pack":"start|end|center|justify|distribute","-ms-flex-order":"<integer>","-ms-flex-positive":"<'flex-grow'>","-ms-flex-preferred-size":"<'flex-basis'>","-ms-interpolation-mode":"nearest-neighbor|bicubic","-ms-grid-column-align":"start|end|center|stretch","-ms-grid-row-align":"start|end|center|stretch","-ms-hyphenate-limit-last":"none|always|column|page|spread","-webkit-background-clip":"[<box>|border|padding|content|text]#","-webkit-column-break-after":"always|auto|avoid","-webkit-column-break-before":"always|auto|avoid","-webkit-column-break-inside":"always|auto|avoid","-webkit-font-smoothing":"auto|none|antialiased|subpixel-antialiased","-webkit-mask-box-image":"[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?","-webkit-print-color-adjust":"economy|exact","-webkit-text-security":"none|circle|disc|square","-webkit-user-drag":"none|element|auto","-webkit-user-select":"auto|none|text|all","alignment-baseline":"auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical","baseline-shift":"baseline|sub|super|<svg-length>",behavior:"<url>+","clip-rule":"nonzero|evenodd",cue:"<'cue-before'> <'cue-after'>?","cue-after":"<url> <decibel>?|none","cue-before":"<url> <decibel>?|none","dominant-baseline":"auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge",fill:"<paint>","fill-opacity":"<number-zero-one>","fill-rule":"nonzero|evenodd","glyph-orientation-horizontal":"<angle>","glyph-orientation-vertical":"<angle>",kerning:"auto|<svg-length>",marker:"none|<url>","marker-end":"none|<url>","marker-mid":"none|<url>","marker-start":"none|<url>",pause:"<'pause-before'> <'pause-after'>?","pause-after":"<time>|none|x-weak|weak|medium|strong|x-strong","pause-before":"<time>|none|x-weak|weak|medium|strong|x-strong",rest:"<'rest-before'> <'rest-after'>?","rest-after":"<time>|none|x-weak|weak|medium|strong|x-strong","rest-before":"<time>|none|x-weak|weak|medium|strong|x-strong","shape-rendering":"auto|optimizeSpeed|crispEdges|geometricPrecision",src:"[<url> [format( <string># )]?|local( <family-name> )]#",speak:"auto|none|normal","speak-as":"normal|spell-out||digits||[literal-punctuation|no-punctuation]",stroke:"<paint>","stroke-dasharray":"none|[<svg-length>+]#","stroke-dashoffset":"<svg-length>","stroke-linecap":"butt|round|square","stroke-linejoin":"miter|round|bevel","stroke-miterlimit":"<number-one-or-greater>","stroke-opacity":"<number-zero-one>","stroke-width":"<svg-length>","text-anchor":"start|middle|end","unicode-range":"<urange>#","voice-balance":"<number>|left|center|right|leftwards|rightwards","voice-duration":"auto|<time>","voice-family":"[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve","voice-pitch":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-range":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-rate":"[normal|x-slow|slow|medium|fast|x-fast]||<percentage>","voice-stress":"normal|strong|moderate|none|reduced","voice-volume":"silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]"},atrules:{charset:{prelude:"<string>",descriptors:null},"counter-style":{prelude:"<counter-style-name>",descriptors:{"additive-symbols":"[<integer>&&<symbol>]#",fallback:"<counter-style-name>",negative:"<symbol> <symbol>?",pad:"<integer>&&<symbol>",prefix:"<symbol>",range:"[[<integer>|infinite]{2}]#|auto","speak-as":"auto|bullets|numbers|words|spell-out|<counter-style-name>",suffix:"<symbol>",symbols:"<symbol>+",system:"cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"}},document:{prelude:"[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",descriptors:null},"font-face":{prelude:null,descriptors:{"ascent-override":"normal|<percentage>","descent-override":"normal|<percentage>","font-display":"[auto|block|swap|fallback|optional]","font-family":"<family-name>","font-feature-settings":"normal|<feature-tag-value>#","font-variation-settings":"normal|[<string> <number>]#","font-stretch":"<font-stretch-absolute>{1,2}","font-style":"normal|italic|oblique <angle>{0,2}","font-weight":"<font-weight-absolute>{1,2}","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","line-gap-override":"normal|<percentage>","size-adjust":"<percentage>",src:"[<url> [format( <string># )]?|local( <family-name> )]#","unicode-range":"<urange>#"}},"font-feature-values":{prelude:"<family-name>#",descriptors:null},import:{prelude:"[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?",descriptors:null},keyframes:{prelude:"<keyframes-name>",descriptors:null},layer:{prelude:"[<layer-name>#|<layer-name>?]",descriptors:null},media:{prelude:"<media-query-list>",descriptors:null},namespace:{prelude:"<namespace-prefix>? [<string>|<url>]",descriptors:null},page:{prelude:"<page-selector-list>",descriptors:{bleed:"auto|<length>",marks:"none|[crop||cross]",size:"<length>{1,2}|auto|[<page-size>||[portrait|landscape]]"}},property:{prelude:"<custom-property-name>",descriptors:{syntax:"<string>",inherits:"true|false","initial-value":"<string>"}},"scroll-timeline":{prelude:"<timeline-name>",descriptors:null},supports:{prelude:"<supports-condition>",descriptors:null},viewport:{prelude:null,descriptors:{height:"<viewport-length>{1,2}","max-height":"<viewport-length>","max-width":"<viewport-length>","max-zoom":"auto|<number>|<percentage>","min-height":"<viewport-length>","min-width":"<viewport-length>","min-zoom":"auto|<number>|<percentage>",orientation:"auto|portrait|landscape","user-zoom":"zoom|fixed","viewport-fit":"auto|contain|cover",width:"<viewport-length>{1,2}",zoom:"auto|<number>|<percentage>"}}}};var It={};b(It,{AnPlusB:()=>wn,Atrule:()=>Sn,AtrulePrelude:()=>An,AttributeSelector:()=>Ln,Block:()=>In,Brackets:()=>Dn,CDC:()=>Mn,CDO:()=>zn,ClassSelector:()=>Bn,Combinator:()=>Un,Comment:()=>qn,Declaration:()=>Wn,DeclarationList:()=>Vn,Dimension:()=>Kn,Function:()=>$n,Hash:()=>Zn,IdSelector:()=>ro,Identifier:()=>eo,MediaFeature:()=>oo,MediaQuery:()=>ao,MediaQueryList:()=>lo,Nth:()=>uo,Number:()=>ho,Operator:()=>mo,Parentheses:()=>bo,Percentage:()=>xo,PseudoClassSelector:()=>wo,PseudoElementSelector:()=>So,Ratio:()=>Ao,Raw:()=>To,Rule:()=>Po,Selector:()=>Oo,SelectorList:()=>No,String:()=>Fo,StyleSheet:()=>_o,TypeSelector:()=>qo,UnicodeRange:()=>Yo,Url:()=>$o,Value:()=>Zo,WhiteSpace:()=>ei});var wn={};b(wn,{generate:()=>ep,name:()=>Zu,parse:()=>kn,structure:()=>Ju});var be=43,ie=45,dr=110,Fe=!0,Xu=!1;function gr(e,t){let r=this.tokenStart+e,n=this.charCodeAt(r);for((n===be||n===ie)&&(t&&this.error("Number sign is not allowed"),r++);r<this.tokenEnd;r++)j(this.charCodeAt(r))||this.error("Integer is expected",r)}function rt(e){return gr.call(this,0,e)}function Ie(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let r="";switch(t){case dr:r="N is expected";break;case ie:r="HyphenMinus is expected";break}this.error(r,this.tokenStart+e)}}function xn(){let e=0,t=0,r=this.tokenType;for(;r===13||r===25;)r=this.lookupType(++e);if(r!==10)if(this.isDelim(be,e)||this.isDelim(ie,e)){t=this.isDelim(be,e)?be:ie;do r=this.lookupType(++e);while(r===13||r===25);r!==10&&(this.skip(e),rt.call(this,Fe))}else return null;return e>0&&this.skip(e),t===0&&(r=this.charCodeAt(this.tokenStart),r!==be&&r!==ie&&this.error("Number sign is expected")),rt.call(this,t!==0),t===ie?"-"+this.consume(10):this.consume(10)}var Zu="AnPlusB",Ju={a:[String,null],b:[String,null]};function kn(){let e=this.tokenStart,t=null,r=null;if(this.tokenType===10)rt.call(this,Xu),r=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,ie))switch(t="-1",Ie.call(this,1,dr),this.tokenEnd-this.tokenStart){case 2:this.next(),r=xn.call(this);break;case 3:Ie.call(this,2,ie),this.next(),this.skipSC(),rt.call(this,Fe),r="-"+this.consume(10);break;default:Ie.call(this,2,ie),gr.call(this,3,Fe),this.next(),r=this.substrToCursor(e+2)}else if(this.tokenType===1||this.isDelim(be)&&this.lookupType(1)===1){let n=0;switch(t="1",this.isDelim(be)&&(n=1,this.next()),Ie.call(this,0,dr),this.tokenEnd-this.tokenStart){case 1:this.next(),r=xn.call(this);break;case 2:Ie.call(this,1,ie),this.next(),this.skipSC(),rt.call(this,Fe),r="-"+this.consume(10);break;default:Ie.call(this,1,ie),gr.call(this,2,Fe),this.next(),r=this.substrToCursor(e+n+1)}}else if(this.tokenType===12){let n=this.charCodeAt(this.tokenStart),o=n===be||n===ie,i=this.tokenStart+o;for(;i<this.tokenEnd&&j(this.charCodeAt(i));i++);i===this.tokenStart+o&&this.error("Integer is expected",this.tokenStart+o),Ie.call(this,i-this.tokenStart,dr),t=this.substring(e,i),i+1===this.tokenEnd?(this.next(),r=xn.call(this)):(Ie.call(this,i-this.tokenStart+1,ie),i+2===this.tokenEnd?(this.next(),this.skipSC(),rt.call(this,Fe),r="-"+this.consume(10)):(gr.call(this,i-this.tokenStart+2,Fe),this.next(),r=this.substrToCursor(i+1)))}else this.error();return t!==null&&t.charCodeAt(0)===be&&(t=t.substr(1)),r!==null&&r.charCodeAt(0)===be&&(r=r.substr(1)),{type:"AnPlusB",loc:this.getLocation(e,this.tokenStart),a:t,b:r}}function ep(e){if(e.a){let t=e.a==="+1"&&"n"||e.a==="1"&&"n"||e.a==="-1"&&"-n"||e.a+"n";if(e.b){let r=e.b[0]==="-"||e.b[0]==="+"?e.b:"+"+e.b;this.tokenize(t+r)}else this.tokenize(t)}else this.tokenize(e.b)}var Sn={};b(Sn,{generate:()=>ip,name:()=>rp,parse:()=>vn,structure:()=>op,walkContext:()=>np});function xs(e){return this.Raw(e,this.consumeUntilLeftCurlyBracketOrSemicolon,!0)}function tp(){for(let e=1,t;t=this.lookupType(e);e++){if(t===24)return!0;if(t===23||t===3)return!1}return!1}var rp="Atrule",np="atrule",op={name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]};function vn(){let e=this.tokenStart,t,r,n=null,o=null;switch(this.eat(3),t=this.substrToCursor(e+1),r=t.toLowerCase(),this.skipSC(),this.eof===!1&&this.tokenType!==23&&this.tokenType!==17&&(this.parseAtrulePrelude?n=this.parseWithFallback(this.AtrulePrelude.bind(this,t),xs):n=xs.call(this,this.tokenIndex),this.skipSC()),this.tokenType){case 17:this.next();break;case 23:hasOwnProperty.call(this.atrule,r)&&typeof this.atrule[r].block=="function"?o=this.atrule[r].block.call(this):o=this.Block(tp.call(this));break}return{type:"Atrule",loc:this.getLocation(e,this.tokenStart),name:t,prelude:n,block:o}}function ip(e){this.token(3,"@"+e.name),e.prelude!==null&&this.node(e.prelude),e.block?this.node(e.block):this.token(17,";")}var An={};b(An,{generate:()=>cp,name:()=>ap,parse:()=>Cn,structure:()=>lp,walkContext:()=>sp});var ap="AtrulePrelude",sp="atrulePrelude",lp={children:[[]]};function Cn(e){let t=null;return e!==null&&(e=e.toLowerCase()),this.skipSC(),hasOwnProperty.call(this.atrule,e)&&typeof this.atrule[e].prelude=="function"?t=this.atrule[e].prelude.call(this):t=this.readSequence(this.scope.AtrulePrelude),this.skipSC(),this.eof!==!0&&this.tokenType!==23&&this.tokenType!==17&&this.error("Semicolon or block is expected"),{type:"AtrulePrelude",loc:this.getLocationFromList(t),children:t}}function cp(e){this.children(e)}var Ln={};b(Ln,{generate:()=>bp,name:()=>dp,parse:()=>Tn,structure:()=>gp});var up=36,ks=42,br=61,pp=94,En=124,hp=126;function fp(){this.eof&&this.error("Unexpected end of input");let e=this.tokenStart,t=!1;return this.isDelim(ks)?(t=!0,this.next()):this.isDelim(En)||this.eat(1),this.isDelim(En)?this.charCodeAt(this.tokenStart+1)!==br?(this.next(),this.eat(1)):t&&this.error("Identifier is expected",this.tokenEnd):t&&this.error("Vertical line is expected"),{type:"Identifier",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function mp(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==br&&t!==hp&&t!==pp&&t!==up&&t!==ks&&t!==En&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.next(),t!==br&&(this.isDelim(br)||this.error("Equal sign is expected"),this.next()),this.substrToCursor(e)}var dp="AttributeSelector",gp={name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]};function Tn(){let e=this.tokenStart,t,r=null,n=null,o=null;return this.eat(19),this.skipSC(),t=fp.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(r=mp.call(this),this.skipSC(),n=this.tokenType===5?this.String():this.Identifier(),this.skipSC()),this.tokenType===1&&(o=this.consume(1),this.skipSC())),this.eat(20),{type:"AttributeSelector",loc:this.getLocation(e,this.tokenStart),name:t,matcher:r,value:n,flags:o}}function bp(e){this.token(9,"["),this.node(e.name),e.matcher!==null&&(this.tokenize(e.matcher),this.node(e.value)),e.flags!==null&&this.token(1,e.flags),this.token(9,"]")}var In={};b(In,{generate:()=>Sp,name:()=>kp,parse:()=>Pn,structure:()=>vp,walkContext:()=>wp});function vs(e){return this.Raw(e,null,!0)}function yp(){return this.parseWithFallback(this.Rule,vs)}function ws(e){return this.Raw(e,this.consumeUntilSemicolonIncluded,!0)}function xp(){if(this.tokenType===17)return ws.call(this,this.tokenIndex);let e=this.parseWithFallback(this.Declaration,ws);return this.tokenType===17&&this.next(),e}var kp="Block",wp="block",vp={children:[["Atrule","Rule","Declaration"]]};function Pn(e){let t=e?xp:yp,r=this.tokenStart,n=this.createList();this.eat(23);e:for(;!this.eof;)switch(this.tokenType){case 24:break e;case 13:case 25:this.next();break;case 3:n.push(this.parseWithFallback(this.Atrule,vs));break;default:n.push(t.call(this))}return this.eof||this.eat(24),{type:"Block",loc:this.getLocation(r,this.tokenStart),children:n}}function Sp(e){this.token(23,"{"),this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")}),this.token(24,"}")}var Dn={};b(Dn,{generate:()=>Ep,name:()=>Cp,parse:()=>On,structure:()=>Ap});var Cp="Brackets",Ap={children:[[]]};function On(e,t){let r=this.tokenStart,n=null;return this.eat(19),n=e.call(this,t),this.eof||this.eat(20),{type:"Brackets",loc:this.getLocation(r,this.tokenStart),children:n}}function Ep(e){this.token(9,"["),this.children(e),this.token(9,"]")}var Mn={};b(Mn,{generate:()=>Pp,name:()=>Tp,parse:()=>Nn,structure:()=>Lp});var Tp="CDC",Lp=[];function Nn(){let e=this.tokenStart;return this.eat(15),{type:"CDC",loc:this.getLocation(e,this.tokenStart)}}function Pp(){this.token(15,"-->")}var zn={};b(zn,{generate:()=>Dp,name:()=>Ip,parse:()=>Rn,structure:()=>Op});var Ip="CDO",Op=[];function Rn(){let e=this.tokenStart;return this.eat(14),{type:"CDO",loc:this.getLocation(e,this.tokenStart)}}function Dp(){this.token(14,"<!--")}var Bn={};b(Bn,{generate:()=>zp,name:()=>Mp,parse:()=>Fn,structure:()=>Rp});var Np=46,Mp="ClassSelector",Rp={name:String};function Fn(){return this.eatDelim(Np),{type:"ClassSelector",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function zp(e){this.token(9,"."),this.token(1,e.name)}var Un={};b(Un,{generate:()=>qp,name:()=>Up,parse:()=>_n,structure:()=>jp});var Fp=43,Ss=47,Bp=62,_p=126,Up="Combinator",jp={name:String};function _n(){let e=this.tokenStart,t;switch(this.tokenType){case 13:t=" ";break;case 9:switch(this.charCodeAt(this.tokenStart)){case Bp:case Fp:case _p:this.next();break;case Ss:this.next(),this.eatIdent("deep"),this.eatDelim(Ss);break;default:this.error("Combinator is expected")}t=this.substrToCursor(e);break}return{type:"Combinator",loc:this.getLocation(e,this.tokenStart),name:t}}function qp(e){this.tokenize(e.name)}var qn={};b(qn,{generate:()=>Gp,name:()=>Yp,parse:()=>jn,structure:()=>Vp});var Hp=42,Wp=47,Yp="Comment",Vp={value:String};function jn(){let e=this.tokenStart,t=this.tokenEnd;return this.eat(25),t-e+2>=2&&this.charCodeAt(t-2)===Hp&&this.charCodeAt(t-1)===Wp&&(t-=2),{type:"Comment",loc:this.getLocation(e,this.tokenStart),value:this.substring(e+2,t)}}function Gp(e){this.token(25,"/*"+e.value+"*/")}var Wn={};b(Wn,{generate:()=>ih,name:()=>rh,parse:()=>Hn,structure:()=>oh,walkContext:()=>nh});var As=33,Kp=35,Qp=36,$p=38,Xp=42,Zp=43,Cs=47;function Jp(e){return this.Raw(e,this.consumeUntilExclamationMarkOrSemicolon,!0)}function eh(e){return this.Raw(e,this.consumeUntilExclamationMarkOrSemicolon,!1)}function th(){let e=this.tokenIndex,t=this.Value();return t.type!=="Raw"&&this.eof===!1&&this.tokenType!==17&&this.isDelim(As)===!1&&this.isBalanceEdge(e)===!1&&this.error(),t}var rh="Declaration",nh="declaration",oh={important:[Boolean,String],property:String,value:["Value","Raw"]};function Hn(){let e=this.tokenStart,t=this.tokenIndex,r=ah.call(this),n=tr(r),o=n?this.parseCustomProperty:this.parseValue,i=n?eh:Jp,a=!1,l;this.skipSC(),this.eat(16);let c=this.tokenIndex;if(n||this.skipSC(),o?l=this.parseWithFallback(th,i):l=i.call(this,this.tokenIndex),n&&l.type==="Value"&&l.children.isEmpty){for(let s=c-this.tokenIndex;s<=0;s++)if(this.lookupType(s)===13){l.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}return this.isDelim(As)&&(a=sh.call(this),this.skipSC()),this.eof===!1&&this.tokenType!==17&&this.isBalanceEdge(t)===!1&&this.error(),{type:"Declaration",loc:this.getLocation(e,this.tokenStart),important:a,property:r,value:l}}function ih(e){this.token(1,e.property),this.token(16,":"),this.node(e.value),e.important&&(this.token(9,"!"),this.token(1,e.important===!0?"important":e.important))}function ah(){let e=this.tokenStart;if(this.tokenType===9)switch(this.charCodeAt(this.tokenStart)){case Xp:case Qp:case Zp:case Kp:case $p:this.next();break;case Cs:this.next(),this.isDelim(Cs)&&this.next();break}return this.tokenType===4?this.eat(4):this.eat(1),this.substrToCursor(e)}function sh(){this.eat(9),this.skipSC();let e=this.consume(1);return e==="important"?!0:e}var Vn={};b(Vn,{generate:()=>ph,name:()=>ch,parse:()=>Yn,structure:()=>uh});function lh(e){return this.Raw(e,this.consumeUntilSemicolonIncluded,!0)}var ch="DeclarationList",uh={children:[["Declaration"]]};function Yn(){let e=this.createList();e:for(;!this.eof;)switch(this.tokenType){case 13:case 25:case 17:this.next();break;default:e.push(this.parseWithFallback(this.Declaration,lh))}return{type:"DeclarationList",loc:this.getLocationFromList(e),children:e}}function ph(e){this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")})}var Kn={};b(Kn,{generate:()=>mh,name:()=>hh,parse:()=>Gn,structure:()=>fh});var hh="Dimension",fh={value:String,unit:String};function Gn(){let e=this.tokenStart,t=this.consumeNumber(12);return{type:"Dimension",loc:this.getLocation(e,this.tokenStart),value:t,unit:this.substring(e+t.length,this.tokenStart)}}function mh(e){this.token(12,e.value+e.unit)}var $n={};b($n,{generate:()=>yh,name:()=>dh,parse:()=>Qn,structure:()=>bh,walkContext:()=>gh});var dh="Function",gh="function",bh={name:String,children:[[]]};function Qn(e,t){let r=this.tokenStart,n=this.consumeFunctionName(),o=n.toLowerCase(),i;return i=t.hasOwnProperty(o)?t[o].call(this,t):e.call(this,t),this.eof||this.eat(22),{type:"Function",loc:this.getLocation(r,this.tokenStart),name:n,children:i}}function yh(e){this.token(2,e.name+"("),this.children(e),this.token(22,")")}var Zn={};b(Zn,{generate:()=>vh,name:()=>kh,parse:()=>Xn,structure:()=>wh,xxx:()=>xh});var xh="XXX",kh="Hash",wh={value:String};function Xn(){let e=this.tokenStart;return this.eat(4),{type:"Hash",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e+1)}}function vh(e){this.token(4,"#"+e.value)}var eo={};b(eo,{generate:()=>Ah,name:()=>Sh,parse:()=>Jn,structure:()=>Ch});var Sh="Identifier",Ch={name:String};function Jn(){return{type:"Identifier",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function Ah(e){this.token(1,e.name)}var ro={};b(ro,{generate:()=>Lh,name:()=>Eh,parse:()=>to,structure:()=>Th});var Eh="IdSelector",Th={name:String};function to(){let e=this.tokenStart;return this.eat(4),{type:"IdSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function Lh(e){this.token(9,"#"+e.name)}var oo={};b(oo,{generate:()=>Oh,name:()=>Ph,parse:()=>no,structure:()=>Ih});var Ph="MediaFeature",Ih={name:String,value:["Identifier","Number","Dimension","Ratio",null]};function no(){let e=this.tokenStart,t,r=null;if(this.eat(21),this.skipSC(),t=this.consume(1),this.skipSC(),this.tokenType!==22){switch(this.eat(16),this.skipSC(),this.tokenType){case 10:this.lookupNonWSType(1)===9?r=this.Ratio():r=this.Number();break;case 12:r=this.Dimension();break;case 1:r=this.Identifier();break;default:this.error("Number, dimension, ratio or identifier is expected")}this.skipSC()}return this.eat(22),{type:"MediaFeature",loc:this.getLocation(e,this.tokenStart),name:t,value:r}}function Oh(e){this.token(21,"("),this.token(1,e.name),e.value!==null&&(this.token(16,":"),this.node(e.value)),this.token(22,")")}var ao={};b(ao,{generate:()=>Mh,name:()=>Dh,parse:()=>io,structure:()=>Nh});var Dh="MediaQuery",Nh={children:[["Identifier","MediaFeature","WhiteSpace"]]};function io(){let e=this.createList(),t=null;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 1:t=this.Identifier();break;case 21:t=this.MediaFeature();break;default:break e}e.push(t)}return t===null&&this.error("Identifier or parenthesis is expected"),{type:"MediaQuery",loc:this.getLocationFromList(e),children:e}}function Mh(e){this.children(e)}var lo={};b(lo,{generate:()=>Fh,name:()=>Rh,parse:()=>so,structure:()=>zh});var Rh="MediaQueryList",zh={children:[["MediaQuery"]]};function so(){let e=this.createList();for(this.skipSC();!this.eof&&(e.push(this.MediaQuery()),this.tokenType===18);)this.next();return{type:"MediaQueryList",loc:this.getLocationFromList(e),children:e}}function Fh(e){this.children(e,()=>this.token(18,","))}var uo={};b(uo,{generate:()=>Uh,name:()=>Bh,parse:()=>co,structure:()=>_h});var Bh="Nth",_h={nth:["AnPlusB","Identifier"],selector:["SelectorList",null]};function co(){this.skipSC();let e=this.tokenStart,t=e,r=null,n;return this.lookupValue(0,"odd")||this.lookupValue(0,"even")?n=this.Identifier():n=this.AnPlusB(),t=this.tokenStart,this.skipSC(),this.lookupValue(0,"of")&&(this.next(),r=this.SelectorList(),t=this.tokenStart),{type:"Nth",loc:this.getLocation(e,t),nth:n,selector:r}}function Uh(e){this.node(e.nth),e.selector!==null&&(this.token(1,"of"),this.node(e.selector))}var ho={};b(ho,{generate:()=>Hh,name:()=>jh,parse:()=>po,structure:()=>qh});var jh="Number",qh={value:String};function po(){return{type:"Number",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consume(10)}}function Hh(e){this.token(10,e.value)}var mo={};b(mo,{generate:()=>Vh,name:()=>Wh,parse:()=>fo,structure:()=>Yh});var Wh="Operator",Yh={value:String};function fo(){let e=this.tokenStart;return this.next(),{type:"Operator",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function Vh(e){this.tokenize(e.value)}var bo={};b(bo,{generate:()=>Qh,name:()=>Gh,parse:()=>go,structure:()=>Kh});var Gh="Parentheses",Kh={children:[[]]};function go(e,t){let r=this.tokenStart,n=null;return this.eat(21),n=e.call(this,t),this.eof||this.eat(22),{type:"Parentheses",loc:this.getLocation(r,this.tokenStart),children:n}}function Qh(e){this.token(21,"("),this.children(e),this.token(22,")")}var xo={};b(xo,{generate:()=>Zh,name:()=>$h,parse:()=>yo,structure:()=>Xh});var $h="Percentage",Xh={value:String};function yo(){return{type:"Percentage",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function Zh(e){this.token(11,e.value+"%")}var wo={};b(wo,{generate:()=>rf,name:()=>Jh,parse:()=>ko,structure:()=>tf,walkContext:()=>ef});var Jh="PseudoClassSelector",ef="function",tf={name:String,children:[["Raw"],null]};function ko(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):r=this.consume(1),{type:"PseudoClassSelector",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function rf(e){this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var So={};b(So,{generate:()=>sf,name:()=>nf,parse:()=>vo,structure:()=>af,walkContext:()=>of});var nf="PseudoElementSelector",of="function",af={name:String,children:[["Raw"],null]};function vo(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):r=this.consume(1),{type:"PseudoElementSelector",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function sf(e){this.token(16,":"),this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var Ao={};b(Ao,{generate:()=>hf,name:()=>uf,parse:()=>Co,structure:()=>pf});var lf=47,cf=46;function Es(){this.skipSC();let e=this.consume(10);for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);!j(r)&&r!==cf&&this.error("Unsigned number is expected",this.tokenStart-e.length+t)}return Number(e)===0&&this.error("Zero number is not allowed",this.tokenStart-e.length),e}var uf="Ratio",pf={left:String,right:String};function Co(){let e=this.tokenStart,t=Es.call(this),r;return this.skipSC(),this.eatDelim(lf),r=Es.call(this),{type:"Ratio",loc:this.getLocation(e,this.tokenStart),left:t,right:r}}function hf(e){this.token(10,e.left),this.token(9,"/"),this.token(10,e.right)}var To={};b(To,{generate:()=>gf,name:()=>mf,parse:()=>Eo,structure:()=>df});function ff(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}var mf="Raw",df={value:String};function Eo(e,t,r){let n=this.getTokenStart(e),o;return this.skipUntilBalanced(e,t||this.consumeUntilBalanceEnd),r&&this.tokenStart>n?o=ff.call(this):o=this.tokenStart,{type:"Raw",loc:this.getLocation(n,o),value:this.substring(n,o)}}function gf(e){this.tokenize(e.value)}var Po={};b(Po,{generate:()=>wf,name:()=>yf,parse:()=>Lo,structure:()=>kf,walkContext:()=>xf});function Ts(e){return this.Raw(e,this.consumeUntilLeftCurlyBracket,!0)}function bf(){let e=this.SelectorList();return e.type!=="Raw"&&this.eof===!1&&this.tokenType!==23&&this.error(),e}var yf="Rule",xf="rule",kf={prelude:["SelectorList","Raw"],block:["Block"]};function Lo(){let e=this.tokenIndex,t=this.tokenStart,r,n;return this.parseRulePrelude?r=this.parseWithFallback(bf,Ts):r=Ts.call(this,e),n=this.Block(!0),{type:"Rule",loc:this.getLocation(t,this.tokenStart),prelude:r,block:n}}function wf(e){this.node(e.prelude),this.node(e.block)}var Oo={};b(Oo,{generate:()=>Cf,name:()=>vf,parse:()=>Io,structure:()=>Sf});var vf="Selector",Sf={children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator","WhiteSpace"]]};function Io(){let e=this.readSequence(this.scope.Selector);return this.getFirstListNode(e)===null&&this.error("Selector is expected"),{type:"Selector",loc:this.getLocationFromList(e),children:e}}function Cf(e){this.children(e)}var No={};b(No,{generate:()=>Lf,name:()=>Af,parse:()=>Do,structure:()=>Tf,walkContext:()=>Ef});var Af="SelectorList",Ef="selector",Tf={children:[["Selector","Raw"]]};function Do(){let e=this.createList();for(;!this.eof;){if(e.push(this.Selector()),this.tokenType===18){this.next();continue}break}return{type:"SelectorList",loc:this.getLocationFromList(e),children:e}}function Lf(e){this.children(e,()=>this.token(18,","))}var Fo={};b(Fo,{generate:()=>Of,name:()=>Pf,parse:()=>zo,structure:()=>If});var nt={};b(nt,{decode:()=>Tt,encode:()=>Ro});var Mo=92,Ls=34,Ps=39;function Tt(e){let t=e.length,r=e.charCodeAt(0),n=r===Ls||r===Ps?1:0,o=n===1&&t>1&&e.charCodeAt(t-1)===r?t-2:t-1,i="";for(let a=n;a<=o;a++){let l=e.charCodeAt(a);if(l===Mo){if(a===o){a!==t-1&&(i=e.substr(a+1));break}if(l=e.charCodeAt(++a),re(Mo,l)){let c=a-1,s=fe(e,c);a=s-1,i+=ft(e.substring(c+1,s))}else l===13&&e.charCodeAt(a+1)===10&&a++}else i+=e[a]}return i}function Ro(e,t){let r=t?"'":'"',n=t?Ps:Ls,o="",i=!1;for(let a=0;a<e.length;a++){let l=e.charCodeAt(a);if(l===0){o+="\uFFFD";continue}if(l<=31||l===127){o+="\\"+l.toString(16),i=!0;continue}l===n||l===Mo?(o+="\\"+e.charAt(a),i=!1):(i&&(oe(l)||he(l))&&(o+=" "),o+=e.charAt(a),i=!1)}return r+o+r}var Pf="String",If={value:String};function zo(){return{type:"String",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:Tt(this.consume(5))}}function Of(e){this.token(5,Ro(e.value))}var _o={};b(_o,{generate:()=>zf,name:()=>Nf,parse:()=>Bo,structure:()=>Rf,walkContext:()=>Mf});var Df=33;function Is(e){return this.Raw(e,null,!1)}var Nf="StyleSheet",Mf="stylesheet",Rf={children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]};function Bo(){let e=this.tokenStart,t=this.createList(),r;e:for(;!this.eof;){switch(this.tokenType){case 13:this.next();continue;case 25:if(this.charCodeAt(this.tokenStart+2)!==Df){this.next();continue}r=this.Comment();break;case 14:r=this.CDO();break;case 15:r=this.CDC();break;case 3:r=this.parseWithFallback(this.Atrule,Is);break;default:r=this.parseWithFallback(this.Rule,Is)}t.push(r)}return{type:"StyleSheet",loc:this.getLocation(e,this.tokenStart),children:t}}function zf(e){this.children(e)}var qo={};b(qo,{generate:()=>Uf,name:()=>Bf,parse:()=>jo,structure:()=>_f});var Ff=42,Os=124;function Uo(){this.tokenType!==1&&this.isDelim(Ff)===!1&&this.error("Identifier or asterisk is expected"),this.next()}var Bf="TypeSelector",_f={name:String};function jo(){let e=this.tokenStart;return this.isDelim(Os)?(this.next(),Uo.call(this)):(Uo.call(this),this.isDelim(Os)&&(this.next(),Uo.call(this))),{type:"TypeSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function Uf(e){this.tokenize(e.name)}var Yo={};b(Yo,{generate:()=>Yf,name:()=>Hf,parse:()=>Wo,structure:()=>Wf});var Ds=43,Ns=45,Ho=63;function Lt(e,t){let r=0;for(let n=this.tokenStart+e;n<this.tokenEnd;n++){let o=this.charCodeAt(n);if(o===Ns&&t&&r!==0)return Lt.call(this,e+r+1,!1),-1;oe(o)||this.error(t&&r!==0?"Hyphen minus"+(r<6?" or hex digit":"")+" is expected":r<6?"Hex digit is expected":"Unexpected input",n),++r>6&&this.error("Too many hex digits",n)}return this.next(),r}function yr(e){let t=0;for(;this.isDelim(Ho);)++t>e&&this.error("Too many question marks"),this.next()}function jf(e){this.charCodeAt(this.tokenStart)!==e&&this.error((e===Ds?"Plus sign":"Hyphen minus")+" is expected")}function qf(){let e=0;switch(this.tokenType){case 10:if(e=Lt.call(this,1,!0),this.isDelim(Ho)){yr.call(this,6-e);break}if(this.tokenType===12||this.tokenType===10){jf.call(this,Ns),Lt.call(this,1,!1);break}break;case 12:e=Lt.call(this,1,!0),e>0&&yr.call(this,6-e);break;default:if(this.eatDelim(Ds),this.tokenType===1){e=Lt.call(this,0,!0),e>0&&yr.call(this,6-e);break}if(this.isDelim(Ho)){this.next(),yr.call(this,5);break}this.error("Hex digit or question mark is expected")}}var Hf="UnicodeRange",Wf={value:String};function Wo(){let e=this.tokenStart;return this.eatIdent("u"),qf.call(this),{type:"UnicodeRange",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function Yf(e){this.tokenize(e.value)}var $o={};b($o,{generate:()=>Zf,name:()=>$f,parse:()=>Qo,structure:()=>Xf});var Pt={};b(Pt,{decode:()=>Go,encode:()=>Ko});var Vf=32,Vo=92,Gf=34,Kf=39,Qf=40,Ms=41;function Go(e){let t=e.length,r=4,n=e.charCodeAt(t-1)===Ms?t-2:t-1,o="";for(;r<n&&he(e.charCodeAt(r));)r++;for(;r<n&&he(e.charCodeAt(n));)n--;for(let i=r;i<=n;i++){let a=e.charCodeAt(i);if(a===Vo){if(i===n){i!==t-1&&(o=e.substr(i+1));break}if(a=e.charCodeAt(++i),re(Vo,a)){let l=i-1,c=fe(e,l);i=c-1,o+=ft(e.substring(l+1,c))}else a===13&&e.charCodeAt(i+1)===10&&i++}else o+=e[i]}return o}function Ko(e){let t="",r=!1;for(let n=0;n<e.length;n++){let o=e.charCodeAt(n);if(o===0){t+="\uFFFD";continue}if(o<=31||o===127){t+="\\"+o.toString(16),r=!0;continue}o===Vf||o===Vo||o===Gf||o===Kf||o===Qf||o===Ms?(t+="\\"+e.charAt(n),r=!1):(r&&oe(o)&&(t+=" "),t+=e.charAt(n),r=!1)}return"url("+t+")"}var $f="Url",Xf={value:String};function Qo(){let e=this.tokenStart,t;switch(this.tokenType){case 7:t=Go(this.consume(7));break;case 2:this.cmpStr(this.tokenStart,this.tokenEnd,"url(")||this.error("Function name must be `url`"),this.eat(2),this.skipSC(),t=Tt(this.consume(5)),this.skipSC(),this.eof||this.eat(22);break;default:this.error("Url or Function is expected")}return{type:"Url",loc:this.getLocation(e,this.tokenStart),value:t}}function Zf(e){this.token(7,Ko(e.value))}var Zo={};b(Zo,{generate:()=>tm,name:()=>Jf,parse:()=>Xo,structure:()=>em});var Jf="Value",em={children:[[]]};function Xo(){let e=this.tokenStart,t=this.readSequence(this.scope.Value);return{type:"Value",loc:this.getLocation(e,this.tokenStart),children:t}}function tm(e){this.children(e)}var ei={};b(ei,{generate:()=>im,name:()=>nm,parse:()=>Jo,structure:()=>om});var rm=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),nm="WhiteSpace",om={value:String};function Jo(){return this.eat(13),rm}function im(e){this.token(13,e.value)}var Rs={generic:!0,...ys,node:It};var ti={};b(ti,{AtrulePrelude:()=>Fs,Selector:()=>_s,Value:()=>Hs});var am=35,sm=42,zs=43,lm=45,cm=47,um=117;function Ot(e){switch(this.tokenType){case 4:return this.Hash();case 18:return this.Operator();case 21:return this.Parentheses(this.readSequence,e.recognizer);case 19:return this.Brackets(this.readSequence,e.recognizer);case 5:return this.String();case 12:return this.Dimension();case 11:return this.Percentage();case 10:return this.Number();case 2:return this.cmpStr(this.tokenStart,this.tokenEnd,"url(")?this.Url():this.Function(this.readSequence,e.recognizer);case 7:return this.Url();case 1:return this.cmpChar(this.tokenStart,um)&&this.cmpChar(this.tokenStart+1,zs)?this.UnicodeRange():this.Identifier();case 9:{let t=this.charCodeAt(this.tokenStart);if(t===cm||t===sm||t===zs||t===lm)return this.Operator();t===am&&this.error("Hex or identifier is expected",this.tokenStart+1);break}}}var Fs={getNode:Ot};var pm=35,hm=42,fm=43,mm=47,Bs=46,dm=62,gm=124,bm=126;function ym(e,t){t.last!==null&&t.last.type!=="Combinator"&&e!==null&&e.type!=="Combinator"&&t.push({type:"Combinator",loc:null,name:" "})}function xm(){switch(this.tokenType){case 19:return this.AttributeSelector();case 4:return this.IdSelector();case 16:return this.lookupType(1)===16?this.PseudoElementSelector():this.PseudoClassSelector();case 1:return this.TypeSelector();case 10:case 11:return this.Percentage();case 12:this.charCodeAt(this.tokenStart)===Bs&&this.error("Identifier is expected",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case fm:case dm:case bm:case mm:return this.Combinator();case Bs:return this.ClassSelector();case hm:case gm:return this.TypeSelector();case pm:return this.IdSelector()}break}}}var _s={onWhiteSpace:ym,getNode:xm};function Us(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function js(){let e=this.createList();if(this.skipSC(),e.push(this.Identifier()),this.skipSC(),this.tokenType===18){e.push(this.Operator());let t=this.tokenIndex,r=this.parseCustomProperty?this.Value(null):this.Raw(this.tokenIndex,this.consumeUntilExclamationMarkOrSemicolon,!1);if(r.type==="Value"&&r.children.isEmpty){for(let n=t-this.tokenIndex;n<=0;n++)if(this.lookupType(n)===13){r.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}e.push(r)}return e}function qs(e){return e!==null&&e.type==="Operator"&&(e.value[e.value.length-1]==="-"||e.value[e.value.length-1]==="+")}var Hs={getNode:Ot,onWhiteSpace(e,t){qs(e)&&(e.value=" "+e.value),qs(t.last)&&(t.last.value+=" ")},expression:Us,var:js};var Ws={parse:{prelude:null,block(){return this.Block(!0)}}};var Ys={parse:{prelude(){let e=this.createList();switch(this.skipSC(),this.tokenType){case 5:e.push(this.String());break;case 7:case 2:e.push(this.Url());break;default:this.error("String or url() is expected")}return(this.lookupNonWSType(0)===1||this.lookupNonWSType(0)===21)&&e.push(this.MediaQueryList()),e},block:null}};var Vs={parse:{prelude(){return this.createSingleNodeList(this.MediaQueryList())},block(){return this.Block(!1)}}};var Gs={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}};function km(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function wm(){return this.skipSC(),this.tokenType===1&&this.lookupNonWSType(1)===16?this.createSingleNodeList(this.Declaration()):Ks.call(this)}function Ks(){let e=this.createList(),t;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 2:t=this.Function(km,this.scope.AtrulePrelude);break;case 1:t=this.Identifier();break;case 21:t=this.Parentheses(wm,this.scope.AtrulePrelude);break;default:break e}e.push(t)}return e}var Qs={parse:{prelude(){let e=Ks.call(this);return this.getFirstListNode(e)===null&&this.error("Condition is expected"),e},block(){return this.Block(!1)}}};var $s={"font-face":Ws,import:Ys,media:Vs,page:Gs,supports:Qs};var Be={parse(){return this.createSingleNodeList(this.SelectorList())}},vm={parse(){return this.createSingleNodeList(this.Selector())}},Xs={parse(){return this.createSingleNodeList(this.Identifier())}},xr={parse(){return this.createSingleNodeList(this.Nth())}},Zs={dir:Xs,has:Be,lang:Xs,matches:Be,is:Be,"-moz-any":Be,"-webkit-any":Be,where:Be,not:Be,"nth-child":xr,"nth-last-child":xr,"nth-last-of-type":xr,"nth-of-type":xr,slotted:vm};var ri={};b(ri,{AnPlusB:()=>kn,Atrule:()=>vn,AtrulePrelude:()=>Cn,AttributeSelector:()=>Tn,Block:()=>Pn,Brackets:()=>On,CDC:()=>Nn,CDO:()=>Rn,ClassSelector:()=>Fn,Combinator:()=>_n,Comment:()=>jn,Declaration:()=>Hn,DeclarationList:()=>Yn,Dimension:()=>Gn,Function:()=>Qn,Hash:()=>Xn,IdSelector:()=>to,Identifier:()=>Jn,MediaFeature:()=>no,MediaQuery:()=>io,MediaQueryList:()=>so,Nth:()=>co,Number:()=>po,Operator:()=>fo,Parentheses:()=>go,Percentage:()=>yo,PseudoClassSelector:()=>ko,PseudoElementSelector:()=>vo,Ratio:()=>Co,Raw:()=>Eo,Rule:()=>Lo,Selector:()=>Io,SelectorList:()=>Do,String:()=>zo,StyleSheet:()=>Bo,TypeSelector:()=>jo,UnicodeRange:()=>Wo,Url:()=>Qo,Value:()=>Xo,WhiteSpace:()=>Jo});var Js={parseContext:{default:"StyleSheet",stylesheet:"StyleSheet",atrule:"Atrule",atrulePrelude(e){return this.AtrulePrelude(e.atrule?String(e.atrule):null)},mediaQueryList:"MediaQueryList",mediaQuery:"MediaQuery",rule:"Rule",selectorList:"SelectorList",selector:"Selector",block(){return this.Block(!0)},declarationList:"DeclarationList",declaration:"Declaration",value:"Value"},scope:ti,atrule:$s,pseudo:Zs,node:ri};var el={node:It};var tl=yn({...Rs,...Js,...el});function Dt(e){let t={};for(let r in e){let n=e[r];n&&(Array.isArray(n)||n instanceof w?n=n.map(Dt):n.constructor===Object&&(n=Dt(n))),t[r]=n}return t}var{tokenize:Fx,parse:rl,generate:ne,lexer:kr,createLexer:Bx,walk:F,find:_x,findLast:Ux,findAll:jx,toPlainObject:qx,fromPlainObject:Hx,fork:nl}=tl;var{hasOwnProperty:Cm}=Object.prototype;function ni(e,t){let r=Object.create(null);if(!Array.isArray(e))return null;for(let n of e)t&&(n=n.toLowerCase()),r[n]=!0;return r}function ol(e){if(!e)return null;let t=ni(e.tags,!0),r=ni(e.ids),n=ni(e.classes);return t===null&&r===null&&n===null?null:{tags:t,ids:r,classes:n}}function il(e){let t=!1;if(e.scopes&&Array.isArray(e.scopes)){t=Object.create(null);for(let r=0;r<e.scopes.length;r++){let n=e.scopes[r];if(!n||!Array.isArray(n))throw new Error("Wrong usage format");for(let o of n){if(Cm.call(t,o))throw new Error(`Class can't be used for several scopes: ${o}`);t[o]=r+1}}}return{whitelist:ol(e),blacklist:ol(e.blacklist),scopes:t}}function Ce(e){return!e||!e.children||e.children.isEmpty}function oi(e,t){return e!==null&&e.children===t}function ii(e,t,r){if(e.block&&(this.stylesheet!==null&&(this.stylesheet.firstAtrulesAllowed=!1),Ce(e.block))){r.remove(t);return}switch(e.name){case"charset":if(Ce(e.prelude)){r.remove(t);return}if(t.prev){r.remove(t);return}break;case"import":if(this.stylesheet===null||!this.stylesheet.firstAtrulesAllowed){r.remove(t);return}r.prevUntil(t.prev,function(n){if(!(n.type==="Atrule"&&(n.name==="import"||n.name==="charset")))return this.root.firstAtrulesAllowed=!1,r.remove(t),!0},this);break;default:{let n=Z(e.name).basename;(n==="keyframes"||n==="media"||n==="supports")&&(Ce(e.prelude)||Ce(e.block))&&r.remove(t)}}}function ai(e,t,r){r.remove(t)}function si(e,t,r){if(e.value.children&&e.value.children.isEmpty){r.remove(t);return}me(e.property).custom&&/\S/.test(e.value.value)&&(e.value.value=e.value.value.trim())}function li(e,t,r){(oi(this.stylesheet,r)||oi(this.block,r))&&r.remove(t)}var{hasOwnProperty:ot}=Object.prototype,Am=new Set(["keyframes"]);function al(e,t){return e.children.forEach((r,n,o)=>{let i=!1;F(r,function(a){if(this.selector===null||this.selector===e)switch(a.type){case"SelectorList":(this.function===null||this.function.name.toLowerCase()!=="not")&&al(a,t)&&(i=!0);break;case"ClassSelector":t.whitelist!==null&&t.whitelist.classes!==null&&!ot.call(t.whitelist.classes,a.name)&&(i=!0),t.blacklist!==null&&t.blacklist.classes!==null&&ot.call(t.blacklist.classes,a.name)&&(i=!0);break;case"IdSelector":t.whitelist!==null&&t.whitelist.ids!==null&&!ot.call(t.whitelist.ids,a.name)&&(i=!0),t.blacklist!==null&&t.blacklist.ids!==null&&ot.call(t.blacklist.ids,a.name)&&(i=!0);break;case"TypeSelector":a.name.charAt(a.name.length-1)!=="*"&&(t.whitelist!==null&&t.whitelist.tags!==null&&!ot.call(t.whitelist.tags,a.name.toLowerCase())&&(i=!0),t.blacklist!==null&&t.blacklist.tags!==null&&ot.call(t.blacklist.tags,a.name.toLowerCase())&&(i=!0));break}}),i&&o.remove(n)}),e.children.isEmpty}function ci(e,t,r,n){if(Ce(e.prelude)||Ce(e.block)){r.remove(t);return}if(this.atrule&&Am.has(Z(this.atrule.name).basename))return;let{usage:o}=n;if(o&&(o.whitelist!==null||o.blacklist!==null)&&(al(e.prelude,o),Ce(e.prelude))){r.remove(t);return}}function ui(e,t,r){if(t.data.name!=="*")return;let o=t.next&&t.next.data.type;(o==="IdSelector"||o==="ClassSelector"||o==="AttributeSelector"||o==="PseudoClassSelector"||o==="PseudoElementSelector")&&r.remove(t)}function pi(e,t,r){r.remove(t)}var sl={Atrule:ii,Comment:ai,Declaration:si,Raw:li,Rule:ci,TypeSelector:ui,WhiteSpace:pi};function ll(e,t){F(e,{leave(r,n,o){sl.hasOwnProperty(r.type)&&sl[r.type].call(this,r,n,o,t)}})}function cl(e){e.block.children.forEach(t=>{t.prelude.children.forEach(r=>{r.children.forEach((n,o)=>{n.type==="Percentage"&&n.value==="100"?o.data={type:"TypeSelector",loc:n.loc,name:"to"}:n.type==="TypeSelector"&&n.name==="from"&&(o.data={type:"Percentage",loc:n.loc,value:"0"})})})})}function ul(e){Z(e.name).basename==="keyframes"&&cl(e)}var Em=/^(-?\d|--)|[\u0000-\u002c\u002e\u002f\u003A-\u0040\u005B-\u005E\u0060\u007B-\u009f]/;function Tm(e){return e===""||e==="-"?!1:!Em.test(e)}function pl(e){let t=e.value;!t||t.type!=="String"||Tm(t.value)&&(e.value={type:"Identifier",loc:t.loc,name:t.value})}function hi(e){let t=e.children;t.forEachRight(function(r,n){if(r.type==="Identifier"){if(r.name==="bold")n.data={type:"Number",loc:r.loc,value:"700"};else if(r.name==="normal"){let o=n.prev;o&&o.data.type==="Operator"&&o.data.value==="/"&&this.remove(o),this.remove(n)}}}),t.isEmpty&&t.insert(t.createItem({type:"Identifier",name:"normal"}))}function fi(e){let t=e.children.head.data;if(t.type==="Identifier")switch(t.name){case"normal":e.children.head.data={type:"Number",loc:t.loc,value:"400"};break;case"bold":e.children.head.data={type:"Number",loc:t.loc,value:"700"};break}}function mi(e){function t(){n.length||n.unshift({type:"Number",loc:null,value:"0"},{type:"Number",loc:null,value:"0"}),r.push.apply(r,n),n=[]}let r=[],n=[];e.children.forEach(o=>{if(o.type==="Operator"&&o.value===","){t(),r.push(o);return}o.type==="Identifier"&&(o.name==="transparent"||o.name==="none"||o.name==="repeat"||o.name==="scroll")||n.push(o)}),t(),e.children=new w().fromArray(r)}function Nt(e){e.children.forEach((t,r,n)=>{t.type==="Identifier"&&t.name.toLowerCase()==="none"&&(n.head===n.tail?r.data={type:"Number",loc:t.loc,value:"0"}:n.remove(r))})}var hl={font:hi,"font-weight":fi,background:mi,border:Nt,outline:Nt};function di(e){if(!this.declaration)return;let t=me(this.declaration.property);hl.hasOwnProperty(t.basename)&&hl[t.basename](e)}var Lm=/^(?:\+|(-))?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/,Pm=/^([\+\-])?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/,Im=new Set(["Dimension","Hash","Identifier","Number","Raw","UnicodeRange"]);function _e(e,t){let r=t&&t.prev!==null&&Im.has(t.prev.data.type)?Pm:Lm;return e=String(e).replace(r,"$1$2$3"),(e===""||e==="-")&&(e="0"),e}function fl(e){e.value=_e(e.value)}var Om=new Set(["calc","min","max","clamp"]),Dm=new Set(["px","mm","cm","in","pt","pc","em","ex","ch","rem","vh","vw","vmin","vmax","vm"]);function gi(e,t){let r=_e(e.value);if(e.value=r,r==="0"&&this.declaration!==null&&this.atrulePrelude===null){let n=e.unit.toLowerCase();if(!Dm.has(n)||this.declaration.property==="-ms-flex"||this.declaration.property==="flex"||this.function&&Om.has(this.function.name))return;t.data={type:"Number",loc:e.loc,value:r}}}var Nm=new Set(["width","min-width","max-width","height","min-height","max-height","flex","-ms-flex"]);function bi(e,t){e.value=_e(e.value),e.value==="0"&&this.declaration&&!Nm.has(this.declaration.property)&&(t.data={type:"Number",loc:e.loc,value:e.value},kr.matchDeclaration(this.declaration).isType(t.data,"length")||(t.data=e))}function ml(e){e.value=e.value.replace(/\\/g,"/")}var dl={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgrey:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",grey:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"639",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},gl={8e5:"maroon",800080:"purple",808e3:"olive",808080:"gray","00ffff":"cyan",f0ffff:"azure",f5f5dc:"beige",ffe4c4:"bisque","000000":"black","0000ff":"blue",a52a2a:"brown",ff7f50:"coral",ffd700:"gold","008000":"green","4b0082":"indigo",fffff0:"ivory",f0e68c:"khaki","00ff00":"lime",faf0e6:"linen","000080":"navy",ffa500:"orange",da70d6:"orchid",cd853f:"peru",ffc0cb:"pink",dda0dd:"plum",f00:"red",ff0000:"red",fa8072:"salmon",a0522d:"sienna",c0c0c0:"silver",fffafa:"snow",d2b48c:"tan","008080":"teal",ff6347:"tomato",ee82ee:"violet",f5deb3:"wheat",ffffff:"white",ffff00:"yellow"};function yi(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function bl(e,t,r,n){let o,i,a;if(t===0)o=i=a=r;else{let l=r<.5?r*(1+t):r+t-r*t,c=2*r-l;o=yi(c,l,e+1/3),i=yi(c,l,e),a=yi(c,l,e-1/3)}return[Math.round(o*255),Math.round(i*255),Math.round(a*255),n]}function xi(e){return e=e.toString(16),e.length===1?"0"+e:e}function ki(e,t,r){let n=e.head,o=[],i=!1;for(;n!==null;){let{type:a,value:l}=n.data;switch(a){case"Number":case"Percentage":if(i)return;i=!0,o.push({type:a,value:Number(l)});break;case"Operator":if(l===","){if(!i)return;i=!1}else if(i||l!=="+")return;break;default:return}n=n.next}if(o.length===t){if(o.length===4){if(o[3].type!=="Number")return;o[3].type="Alpha"}if(r){if(o[0].type!==o[1].type||o[0].type!==o[2].type)return}else{if(o[0].type!=="Number"||o[1].type!=="Percentage"||o[2].type!=="Percentage")return;o[0].type="Angle"}return o.map(function(a){let l=Math.max(0,a.value);switch(a.type){case"Number":l=Math.min(l,255);break;case"Percentage":if(l=Math.min(l,100)/100,!r)return l;l=255*l;break;case"Angle":return(l%360+360)%360/360;case"Alpha":return Math.min(l,1)}return Math.round(l)})}}function yl(e,t){let r=e.name,n;if(r==="rgba"||r==="hsla"){if(n=ki(e.children,4,r==="rgba"),!n)return;if(r==="hsla"&&(n=bl(...n),e.name="rgba"),n[3]===0){let o=this.function&&this.function.name;if(n[0]===0&&n[1]===0&&n[2]===0||!/^(?:to|from|color-stop)$|gradient$/i.test(o)){t.data={type:"Identifier",loc:e.loc,name:"transparent"};return}}if(n[3]!==1){e.children.forEach((o,i,a)=>{if(o.type==="Operator"){o.value!==","&&a.remove(i);return}i.data={type:"Number",loc:o.loc,value:_e(n.shift())}});return}r="rgb"}if(r==="hsl"){if(n=n||ki(e.children,3,!1),!n)return;n=bl(...n),r="rgb"}if(r==="rgb"){if(n=n||ki(e.children,3,!0),!n)return;t.data={type:"Hash",loc:e.loc,value:xi(n[0])+xi(n[1])+xi(n[2])},wi(t.data,t)}}function xl(e,t){if(this.declaration===null)return;let r=e.name.toLowerCase();if(dl.hasOwnProperty(r)&&kr.matchDeclaration(this.declaration).isType(e,"color")){let n=dl[r];n.length+1<=r.length?t.data={type:"Hash",loc:e.loc,value:n}:(r==="grey"&&(r="gray"),e.name=r)}}function wi(e,t){let r=e.value.toLowerCase();r.length===6&&r[0]===r[1]&&r[2]===r[3]&&r[4]===r[5]&&(r=r[0]+r[2]+r[4]),gl[r]?t.data={type:"Identifier",loc:e.loc,name:gl[r]}:e.value=r}var kl={Atrule:ul,AttributeSelector:pl,Value:di,Dimension:gi,Percentage:bi,Number:fl,Url:ml,Hash:wi,Identifier:xl,Function:yl};function wl(e){F(e,{leave(t,r,n){kl.hasOwnProperty(t.type)&&kl[t.type].call(this,t,r,n)}})}var vi=class{constructor(){this.map=new Map}resolve(t){let r=this.map.get(t);return r===void 0&&(r=this.map.size+1,this.map.set(t,r)),r}};function Si(){let e=new vi;return function(r){let n=ne(r);return r.id=e.resolve(n),r.length=n.length,r.fingerprint=null,r}}function Mm(e){return e.type==="Raw"?rl(e.value,{context:"selectorList"}):e}function Rm(e,t){for(let r=0;r<3;r++)if(e[r]!==t[r])return e[r]>t[r]?e:t;return e}function vl(e){return Mm(e).children.reduce((t,r)=>Rm(Sl(r),t),[0,0,0])}function Sl(e){let t=0,r=0,n=0;return e.children.forEach(o=>{switch(o.type){case"IdSelector":t++;break;case"ClassSelector":case"AttributeSelector":r++;break;case"PseudoClassSelector":switch(o.name.toLowerCase()){case"not":case"has":case"is":case"matches":case"-webkit-any":case"-moz-any":{let[i,a,l]=vl(o.children.first);t+=i,r+=a,n+=l;break}case"nth-child":case"nth-last-child":{let i=o.children.first;if(i.type==="Nth"&&i.selector){let[a,l,c]=vl(i.selector);t+=a,r+=l+1,n+=c}else r++;break}case"where":break;case"before":case"after":case"first-line":case"first-letter":n++;break;default:r++}break;case"TypeSelector":o.name.endsWith("*")||n++;break;case"PseudoElementSelector":n++;break}}),[t,r,n]}var wr=Sl;var zm=new Set(["first-letter","first-line","after","before"]),Fm=new Set(["link","visited","hover","active","first-letter","first-line","after","before"]);function Mt(e,t){let r=new Set;e.prelude.children.forEach(function(n){let o="*",i=0;n.children.forEach(function(a){switch(a.type){case"ClassSelector":if(t&&t.scopes){let l=t.scopes[a.name]||0;if(i!==0&&l!==i)throw new Error("Selector can't has classes from different scopes: "+ne(n));i=l}break;case"PseudoClassSelector":{let l=a.name.toLowerCase();Fm.has(l)||r.add(`:${l}`);break}case"PseudoElementSelector":{let l=a.name.toLowerCase();zm.has(l)||r.add(`::${l}`);break}case"TypeSelector":o=a.name.toLowerCase();break;case"AttributeSelector":a.flags&&r.add(`[${a.flags.toLowerCase()}]`);break;case"Combinator":o="*";break}}),n.compareMarker=wr(n).toString(),n.id=null,n.id=ne(n),i&&(n.compareMarker+=":"+i),o!=="*"&&(n.compareMarker+=","+o)}),e.pseudoSignature=r.size>0?[...r].sort().join(","):!1}function Ci(e,t){let r=Si();return F(e,{visit:"Rule",enter(n){n.block.children.forEach(r),Mt(n,t.usage)}}),F(e,{visit:"Atrule",enter(n){n.prelude&&(n.prelude.id=null,n.prelude.id=ne(n.prelude)),Z(n.name).basename==="keyframes"&&(n.block.avoidRulesMerge=!0,n.block.children.forEach(function(o){o.prelude.children.forEach(function(i){i.compareMarker=i.id})}))}}),{declaration:r}}var{hasOwnProperty:Cl}=Object.prototype;function Al(e,t,r,n){let o=t.data,i=Z(o.name).basename,a=o.name.toLowerCase()+"/"+(o.prelude?o.prelude.id:null);Cl.call(e,i)||(e[i]=Object.create(null)),n&&delete e[i][a],Cl.call(e[i],a)||(e[i][a]=new w),e[i][a].append(r.remove(t))}function Bm(e,t){let r=Object.create(null),n=null;e.children.forEach(function(o,i,a){if(o.type==="Atrule"){let l=Z(o.name).basename;switch(l){case"keyframes":Al(r,i,a,!0);return;case"media":if(t.forceMediaMerge){Al(r,i,a,!1);return}break}n===null&&l!=="charset"&&l!=="import"&&(n=i)}else n===null&&(n=i)});for(let o in r)for(let i in r[o])e.children.insertList(r[o][i],o==="media"?null:n)}function El(e){return e.type==="Atrule"&&e.name==="media"}function _m(e,t,r){if(!El(e))return;let n=t.prev&&t.prev.data;!n||!El(n)||e.prelude&&n.prelude&&e.prelude.id===n.prelude.id&&(n.block.children.appendList(e.block.children),r.remove(t))}function Ai(e,t){Bm(e,t),F(e,{visit:"Atrule",reverse:!0,enter:_m})}var{hasOwnProperty:Um}=Object.prototype;function Rt(e,t){let r=e.head,n=t.head;for(;r!==null&&n!==null&&r.data.id===n.data.id;)r=r.next,n=n.next;return r===null&&n===null}function zt(e,t){let r=e.head,n=t.head;for(;r!==null&&n!==null&&r.data.id===n.data.id;)r=r.next,n=n.next;return r===null&&n===null}function Ei(e,t){let r={eq:[],ne1:[],ne2:[],ne2overrided:[]},n=Object.create(null),o=Object.create(null);for(let i=t.head;i;i=i.next)o[i.data.id]=!0;for(let i=e.head;i;i=i.next){let a=i.data;a.fingerprint&&(n[a.fingerprint]=a.important),o[a.id]?(o[a.id]=!1,r.eq.push(a)):r.ne1.push(a)}for(let i=t.head;i;i=i.next){let a=i.data;o[a.id]&&((!Um.call(n,a.fingerprint)||!n[a.fingerprint]&&a.important)&&r.ne2.push(a),r.ne2overrided.push(a))}return r}function Oe(e,t){return t.forEach(r=>{let n=r.id,o=e.head;for(;o;){let i=o.data.id;if(i===n)return;if(i>n)break;o=o.next}e.insert(e.createItem(r),o)}),e}function vr(e,t){let r=e.head;for(;r!==null;){let n=t.head;for(;n!==null;){if(r.data.compareMarker===n.data.compareMarker)return!0;n=n.next}r=r.next}return!1}function De(e){switch(e.type){case"Rule":return vr(e.prelude.children,this);case"Atrule":if(e.block)return e.block.children.some(De,this);break;case"Declaration":return!1}return!0}function jm(e,t,r){let n=e.prelude.children,o=e.block.children;r.prevUntil(t.prev,function(i){if(i.type!=="Rule")return De.call(n,i);let a=i.prelude.children,l=i.block.children;if(e.pseudoSignature===i.pseudoSignature){if(Rt(a,n))return l.appendList(o),r.remove(t),!0;if(zt(o,l))return Oe(a,n),r.remove(t),!0}return vr(n,a)})}function Ti(e){F(e,{visit:"Rule",enter:jm})}function qm(e,t,r){let n=e.prelude.children;for(;n.head!==n.tail;){let o=new w;o.insert(n.remove(n.head)),r.insert(r.createItem({type:"Rule",loc:e.loc,prelude:{type:"SelectorList",loc:e.prelude.loc,children:o},block:{type:"Block",loc:e.block.loc,children:e.block.children.copy()},pseudoSignature:e.pseudoSignature}),t)}}function Li(e){F(e,{visit:"Rule",reverse:!0,enter:qm})}var Pl=1,Hm=2,it=0,Ft=1,Pi=2,Sr=3,Tl=["top","right","bottom","left"],Wm={"margin-top":"top","margin-right":"right","margin-bottom":"bottom","margin-left":"left","padding-top":"top","padding-right":"right","padding-bottom":"bottom","padding-left":"left","border-top-color":"top","border-right-color":"right","border-bottom-color":"bottom","border-left-color":"left","border-top-width":"top","border-right-width":"right","border-bottom-width":"bottom","border-left-width":"left","border-top-style":"top","border-right-style":"right","border-bottom-style":"bottom","border-left-style":"left"},Ll={margin:"margin","margin-top":"margin","margin-right":"margin","margin-bottom":"margin","margin-left":"margin",padding:"padding","padding-top":"padding","padding-right":"padding","padding-bottom":"padding","padding-left":"padding","border-color":"border-color","border-top-color":"border-color","border-right-color":"border-color","border-bottom-color":"border-color","border-left-color":"border-color","border-width":"border-width","border-top-width":"border-width","border-right-width":"border-width","border-bottom-width":"border-width","border-left-width":"border-width","border-style":"border-style","border-top-style":"border-style","border-right-style":"border-style","border-bottom-style":"border-style","border-left-style":"border-style"},Ii=class{constructor(t){this.name=t,this.loc=null,this.iehack=void 0,this.sides={top:null,right:null,bottom:null,left:null}}getValueSequence(t,r){let n=[],o="";return t.value.type!=="Value"||t.value.children.some(function(a){let l=!1;switch(a.type){case"Identifier":switch(a.name){case"\\0":case"\\9":o=a.name;return;case"inherit":case"initial":case"unset":case"revert":l=a.name;break}break;case"Dimension":switch(a.unit){case"rem":case"vw":case"vh":case"vmin":case"vmax":case"vm":l=a.unit;break}break;case"Hash":case"Number":case"Percentage":break;case"Function":if(a.name==="var")return!0;l=a.name;break;default:return!0}n.push({node:a,special:l,important:t.important})})||n.length>r||typeof this.iehack=="string"&&this.iehack!==o?!1:(this.iehack=o,n)}canOverride(t,r){let n=this.sides[t];return!n||r.important&&!n.important}add(t,r){function n(){let o=this.sides,i=Wm[t];if(i){if(!(i in o))return!1;let a=this.getValueSequence(r,1);if(!a||!a.length)return!1;for(let l in o)if(o[l]!==null&&o[l].special!==a[0].special)return!1;return this.canOverride(i,a[0])&&(o[i]=a[0]),!0}else if(t===this.name){let a=this.getValueSequence(r,4);if(!a||!a.length)return!1;switch(a.length){case 1:a[Ft]=a[it],a[Pi]=a[it],a[Sr]=a[it];break;case 2:a[Pi]=a[it],a[Sr]=a[Ft];break;case 3:a[Sr]=a[Ft];break}for(let l=0;l<4;l++)for(let c in o)if(o[c]!==null&&o[c].special!==a[l].special)return!1;for(let l=0;l<4;l++)this.canOverride(Tl[l],a[l])&&(o[Tl[l]]=a[l]);return!0}}return n.call(this)?(this.loc||(this.loc=r.loc),!0):!1}isOkToMinimize(){let t=this.sides.top,r=this.sides.right,n=this.sides.bottom,o=this.sides.left;if(t&&r&&n&&o){let i=t.important+r.important+n.important+o.important;return i===0||i===4}return!1}getValue(){let t=new w,r=this.sides,n=[r.top,r.right,r.bottom,r.left],o=[ne(r.top.node),ne(r.right.node),ne(r.bottom.node),ne(r.left.node)];o[Sr]===o[Ft]&&(n.pop(),o[Pi]===o[it]&&(n.pop(),o[Ft]===o[it]&&n.pop()));for(let i=0;i<n.length;i++)t.appendData(n[i].node);return this.iehack&&t.appendData({type:"Identifier",loc:null,name:this.iehack}),{type:"Value",loc:null,children:t}}getDeclaration(){return{type:"Declaration",loc:this.loc,important:this.sides.top.important,property:this.name,value:this.getValue()}}};function Ym(e,t,r,n){let o=e.block.children,i=e.prelude.children.first.id;return e.block.children.forEachRight(function(a,l){let c=a.property;if(!Ll.hasOwnProperty(c))return;let s=Ll[c],u,p;if((!n||i===n)&&s in t&&(p=Hm,u=t[s]),(!u||!u.add(c,a))&&(p=Pl,u=new Ii(s),!u.add(c,a))){n=null;return}t[s]=u,r.push({operation:p,block:o,item:l,shorthand:u}),n=i}),n}function Vm(e,t){e.forEach(function(r){let n=r.shorthand;!n.isOkToMinimize()||(r.operation===Pl?r.item.data=t(n.getDeclaration()):r.block.remove(r.item))})}function Oi(e,t){let r={},n=[];F(e,{visit:"Rule",reverse:!0,enter(o){let i=this.block||this.stylesheet,a=(o.pseudoSignature||"")+"|"+o.prelude.children.first.id,l,c;r.hasOwnProperty(i.id)?l=r[i.id]:(l={lastShortSelector:null},r[i.id]=l),l.hasOwnProperty(a)?c=l[a]:(c={},l[a]=c),l.lastShortSelector=Ym.call(this,o,c,n,l.lastShortSelector)}}),Vm(n,t.declaration)}var Gm=1,Km=new Set(["src"]),Il={display:/table|ruby|flex|-(flex)?box$|grid|contents|run-in/i,"text-align":/^(start|end|match-parent|justify-all)$/i},Ol={cursor:["auto","crosshair","default","move","text","wait","help","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","pointer","progress","not-allowed","no-drop","vertical-text","all-scroll","col-resize","row-resize"],overflow:["hidden","visible","scroll","auto"],position:["static","relative","absolute","fixed"]},Dl={"border-width":["border"],"border-style":["border"],"border-color":["border"],"border-top":["border"],"border-right":["border"],"border-bottom":["border"],"border-left":["border"],"border-top-width":["border-top","border-width","border"],"border-right-width":["border-right","border-width","border"],"border-bottom-width":["border-bottom","border-width","border"],"border-left-width":["border-left","border-width","border"],"border-top-style":["border-top","border-style","border"],"border-right-style":["border-right","border-style","border"],"border-bottom-style":["border-bottom","border-style","border"],"border-left-style":["border-left","border-style","border"],"border-top-color":["border-top","border-color","border"],"border-right-color":["border-right","border-color","border"],"border-bottom-color":["border-bottom","border-color","border"],"border-left-color":["border-left","border-color","border"],"margin-top":["margin"],"margin-right":["margin"],"margin-bottom":["margin"],"margin-left":["margin"],"padding-top":["padding"],"padding-right":["padding"],"padding-bottom":["padding"],"padding-left":["padding"],"font-style":["font"],"font-variant":["font"],"font-weight":["font"],"font-size":["font"],"font-family":["font"],"list-style-type":["list-style"],"list-style-position":["list-style"],"list-style-image":["list-style"]};function Nl(e,t,r){let n=me(e).basename;if(n==="background")return e+":"+ne(t.value);let o=t.id,i=r[o];if(!i){switch(t.value.type){case"Value":let a={},l="",c="",s=!1;t.value.children.forEach(function u(p){switch(p.type){case"Value":case"Brackets":case"Parentheses":p.children.forEach(u);break;case"Raw":s=!0;break;case"Identifier":{let{name:h}=p;l||(l=Z(h).vendor),/\\[09]/.test(h)&&(c=RegExp.lastMatch),Ol.hasOwnProperty(n)?Ol[n].indexOf(h)===-1&&(a[h]=!0):Il.hasOwnProperty(n)&&Il[n].test(h)&&(a[h]=!0);break}case"Function":{let{name:h}=p;l||(l=Z(h).vendor),h==="rect"&&(p.children.some(y=>y.type==="Operator"&&y.value===",")||(h="rect-backward")),a[h+"()"]=!0,p.children.forEach(u);break}case"Dimension":{let{unit:h}=p;switch(/\\[09]/.test(h)&&(c=RegExp.lastMatch),h){case"rem":case"vw":case"vh":case"vmin":case"vmax":case"vm":a[h]=!0;break}break}}}),i=s?"!"+Gm++:"!"+Object.keys(a).sort()+"|"+c+l;break;case"Raw":i="!"+t.value.value;break;default:i=ne(t.value)}r[o]=i}return e+i}function Qm(e,t,r){let n=me(t.property);if(Dl.hasOwnProperty(n.basename)){let o=Dl[n.basename];for(let i of o){let a=Nl(n.prefix+i,t,r),l=e.hasOwnProperty(a)?e[a]:null;if(l&&(!t.important||l.item.data.important))return l}}}function $m(e,t,r,n,o){let i=e.block.children;i.forEachRight(function(a,l){let{property:c}=a,s=Nl(c,a,o),u=n[s];u&&!Km.has(c)?a.important&&!u.item.data.important?(n[s]={block:i,item:l},u.block.remove(u.item)):i.remove(l):Qm(n,a,o)?i.remove(l):(a.fingerprint=s,n[s]={block:i,item:l})}),i.isEmpty&&r.remove(t)}function Di(e){let t={},r=Object.create(null);F(e,{visit:"Rule",reverse:!0,enter(n,o,i){let a=this.block||this.stylesheet,l=(n.pseudoSignature||"")+"|"+n.prelude.children.first.id,c,s;t.hasOwnProperty(a.id)?c=t[a.id]:(c={},t[a.id]=c),c.hasOwnProperty(l)?s=c[l]:(s={},c[l]=s),$m.call(this,n,o,i,s,r)}})}function Xm(e,t,r){let n=e.prelude.children,o=e.block.children,i=n.first.compareMarker,a={};r.nextUntil(t.next,function(l,c){if(l.type!=="Rule")return De.call(n,l);if(e.pseudoSignature!==l.pseudoSignature)return!0;let s=l.prelude.children.head,u=l.block.children,p=s.data.compareMarker;if(p in a)return!0;if(n.head===n.tail&&n.first.id===s.data.id){o.appendList(u),r.remove(c);return}if(zt(o,u)){let h=s.data.id;n.some((m,y)=>{let T=m.id;if(h<T)return n.insert(s,y),!0;if(!y.next)return n.insert(s),!0}),r.remove(c);return}if(p===i)return!0;a[p]=!0})}function Ni(e){F(e,{visit:"Rule",enter:Xm})}function Mi(e){return e.reduce((t,r)=>t+r.id.length+1,0)-1}function Ri(e){let t=0;for(let r of e)t+=r.length;return t+e.length-1}function Zm(e,t,r){let n=this.block!==null?this.block.avoidRulesMerge:!1,o=e.prelude.children,i=e.block,a=Object.create(null),l=!0,c=!0;r.prevUntil(t.prev,function(s,u){let p=s.block,h=s.type;if(h!=="Rule"){let T=De.call(o,s);return!T&&h==="Atrule"&&p&&F(p,{visit:"Rule",enter(N){N.prelude.children.forEach(C=>{a[C.compareMarker]=!0})}}),T}if(e.pseudoSignature!==s.pseudoSignature)return!0;let m=s.prelude.children;if(c=!m.some(T=>T.compareMarker in a),!c&&!l)return!0;if(l&&Rt(m,o))return p.children.appendList(i.children),r.remove(t),!0;let y=Ei(i.children,p.children);if(y.eq.length){if(!y.ne1.length&&!y.ne2.length)return c&&(Oe(o,m),r.remove(u)),!0;if(!n)if(y.ne1.length&&!y.ne2.length){let T=Mi(o),N=Ri(y.eq);l&&T<N&&(Oe(m,o),i.children.fromArray(y.ne1))}else if(!y.ne1.length&&y.ne2.length){let T=Mi(m),N=Ri(y.eq);c&&T<N&&(Oe(o,m),p.children.fromArray(y.ne2))}else{let T={type:"SelectorList",loc:null,children:Oe(m.copy(),o)},N=Mi(T.children)+2;if(Ri(y.eq)>=N){let D=r.createItem({type:"Rule",loc:null,prelude:T,block:{type:"Block",loc:null,children:new w().fromArray(y.eq)},pseudoSignature:e.pseudoSignature});return i.children.fromArray(y.ne1),p.children.fromArray(y.ne2overrided),l?r.insert(D,u):r.insert(D,t),!0}}}l&&(l=!m.some(T=>o.some(N=>N.compareMarker===T.compareMarker))),m.forEach(T=>{a[T.compareMarker]=!0})})}function zi(e){F(e,{visit:"Rule",reverse:!0,enter:Zm})}function Ml(e,t){let r=Ci(e,t);t.logger("prepare",e),Ai(e,t),t.logger("mergeAtrule",e),Ti(e),t.logger("initialMergeRuleset",e),Li(e),t.logger("disjoinRuleset",e),Oi(e,r),t.logger("restructShorthand",e),Di(e),t.logger("restructBlock",e),Ni(e),t.logger("mergeRuleset",e),zi(e),t.logger("restructRuleset",e)}function Jm(e,t){let r=new w,n=!1,o;return e.nextUntil(e.head,(i,a,l)=>{if(i.type==="Comment"){if(!t||i.value.charAt(0)!=="!"){l.remove(a);return}if(n||o)return!0;l.remove(a),o=i;return}i.type!=="WhiteSpace"&&(n=!0),r.insert(l.remove(a))}),{comment:o,stylesheet:{type:"StyleSheet",loc:null,children:r}}}function ed(e,t,r,n){n.logger(`Compress block #${r}`,null,!0);let o=1;return e.type==="StyleSheet"&&(e.firstAtrulesAllowed=t,e.id=o++),F(e,{visit:"Atrule",enter(i){i.block!==null&&(i.block.id=o++)}}),n.logger("init",e),ll(e,n),n.logger("clean",e),wl(e,n),n.logger("replace",e),n.restructuring&&Ml(e,n),e}function td(e){let t="comments"in e?e.comments:"exclamation";return typeof t=="boolean"?t=t?"exclamation":!1:t!=="exclamation"&&t!=="first-exclamation"&&(t=!1),t}function rd(e){return"restructure"in e?e.restructure:"restructuring"in e?e.restructuring:!0}function nd(e){return new w().appendData({type:"Rule",loc:null,prelude:{type:"SelectorList",loc:null,children:new w().appendData({type:"Selector",loc:null,children:new w().appendData({type:"TypeSelector",loc:null,name:"x"})})},block:e})}function Fi(e,t){e=e||{type:"StyleSheet",loc:null,children:new w},t=t||{};let r={logger:typeof t.logger=="function"?t.logger:function(){},restructuring:rd(t),forceMediaMerge:Boolean(t.forceMediaMerge),usage:t.usage?il(t.usage):!1},n=new w,o=td(t),i=!0,a,l,c=1,s;t.clone&&(e=Dt(e)),e.type==="StyleSheet"?(a=e.children,e.children=n):a=nd(e);do{if(l=Jm(a,Boolean(o)),ed(l.stylesheet,i,c++,r),s=l.stylesheet.children,l.comment&&(n.isEmpty||n.insert(w.createItem({type:"Raw",value:` -`})),n.insert(w.createItem(l.comment)),s.isEmpty||n.insert(w.createItem({type:"Raw",value:` -`}))),i&&!s.isEmpty){let u=s.last;(u.type!=="Atrule"||u.name!=="import"&&u.name!=="charset")&&(i=!1)}o!=="exclamation"&&(o=!1),n.appendList(s)}while(!a.isEmpty);return{ast:e}}function Rl(e){let t=nt.encode(e,!0),r=nt.encode(e);return t.length<r.length?t:r}var{lexer:od,tokenize:id,parse:ad,generate:sd,walk:ld,find:cd,findLast:ud,findAll:pd,fromPlainObject:hd,toPlainObject:fd}=nl({node:{String:{generate(e){this.token(Ee.String,Rl(e.value))}},Url:{generate(e){let t=Pt.encode(e.value),r=Rl(e.value);this.token(Ee.Url,t.length<=r.length+5?t:"url("+r+")")}}}});var Bi={};b(Bi,{addSelectors:()=>Oe,compareDeclarations:()=>Ei,hasSimilarSelectors:()=>vr,isEqualDeclarations:()=>zt,isEqualSelectors:()=>Rt,processSelector:()=>Mt,unsafeToSkipNode:()=>De});var{parse:md,generate:_i,compress:dd}=Cr;function at(e,t,r,n){return t.debug&&console.error(`## ${e} done in %d ms -`,Date.now()-r),n}function gd(e){let t;return function(n,o){let i=n;if(o&&(i=`[${((Date.now()-t)/1e3).toFixed(3)}s] ${i}`),e>1&&o){let a=_i(o);e===2&&a.length>256&&(a=a.substr(0,256)+"..."),i+=` - ${a} -`}console.error(i),t=Date.now()}}function bd(e){return e={...e},typeof e.logger!="function"&&e.debug&&(e.logger=gd(e.debug)),e}function zl(e,t,r){Array.isArray(r)||(r=[r]),r.forEach(n=>n(e,t))}function Fl(e,t,r){r=r||{};let n=r.filename||"<unknown>",o,i=at("parsing",r,Date.now(),md(t,{context:e,filename:n,positions:Boolean(r.sourceMap)}));r.beforeCompress&&at("beforeCompress",r,Date.now(),zl(i,r,r.beforeCompress));let a=at("compress",r,Date.now(),dd(i,bd(r)));return r.afterCompress&&at("afterCompress",r,Date.now(),zl(a,r,r.afterCompress)),r.sourceMap?o=at("generate(sourceMap: true)",r,Date.now(),(()=>{let l=_i(a.ast,{sourceMap:!0});return l.map._file=n,l.map.setSourceContent(n,t),l})()):o=at("generate",r,Date.now(),{css:_i(a.ast),map:null}),o}function yd(e,t){return Fl("stylesheet",e,t)}function xd(e,t){return Fl("declarationList",e,t)}return Wl(kd);})(); diff --git a/node_modules/csso/dist/version.cjs b/node_modules/csso/dist/version.cjs deleted file mode 100644 index 182178a4..00000000 --- a/node_modules/csso/dist/version.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = "5.0.5";
\ No newline at end of file diff --git a/node_modules/csso/dist/version.js b/node_modules/csso/dist/version.js deleted file mode 100644 index 932c6f4a..00000000 --- a/node_modules/csso/dist/version.js +++ /dev/null @@ -1 +0,0 @@ -export const version = "5.0.5";
\ No newline at end of file diff --git a/node_modules/csso/lib/clean/Atrule.js b/node_modules/csso/lib/clean/Atrule.js deleted file mode 100644 index 236d122d..00000000 --- a/node_modules/csso/lib/clean/Atrule.js +++ /dev/null @@ -1,69 +0,0 @@ -import { keyword as resolveKeyword } from 'css-tree'; -import { hasNoChildren } from './utils.js'; - -export default function cleanAtrule(node, item, list) { - if (node.block) { - // otherwise removed at-rule don't prevent @import for removal - if (this.stylesheet !== null) { - this.stylesheet.firstAtrulesAllowed = false; - } - - if (hasNoChildren(node.block)) { - list.remove(item); - return; - } - } - - switch (node.name) { - case 'charset': - if (hasNoChildren(node.prelude)) { - list.remove(item); - return; - } - - // if there is any rule before @charset -> remove it - if (item.prev) { - list.remove(item); - return; - } - - break; - - case 'import': - if (this.stylesheet === null || !this.stylesheet.firstAtrulesAllowed) { - list.remove(item); - return; - } - - // if there are some rules that not an @import or @charset before @import - // remove it - list.prevUntil(item.prev, function(rule) { - if (rule.type === 'Atrule') { - if (rule.name === 'import' || rule.name === 'charset') { - return; - } - } - - this.root.firstAtrulesAllowed = false; - list.remove(item); - - return true; - }, this); - - break; - - default: { - const name = resolveKeyword(node.name).basename; - - if (name === 'keyframes' || - name === 'media' || - name === 'supports') { - - // drop at-rule with no prelude - if (hasNoChildren(node.prelude) || hasNoChildren(node.block)) { - list.remove(item); - } - } - } - } -}; diff --git a/node_modules/csso/lib/clean/Comment.js b/node_modules/csso/lib/clean/Comment.js deleted file mode 100644 index 7744c6ba..00000000 --- a/node_modules/csso/lib/clean/Comment.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function cleanComment(data, item, list) { - list.remove(item); -}; diff --git a/node_modules/csso/lib/clean/Declaration.js b/node_modules/csso/lib/clean/Declaration.js deleted file mode 100644 index 36af5a85..00000000 --- a/node_modules/csso/lib/clean/Declaration.js +++ /dev/null @@ -1,14 +0,0 @@ -import { property } from 'css-tree'; - -export default function cleanDeclartion(node, item, list) { - if (node.value.children && node.value.children.isEmpty) { - list.remove(item); - return; - } - - if (property(node.property).custom) { - if (/\S/.test(node.value.value)) { - node.value.value = node.value.value.trim(); - } - } -}; diff --git a/node_modules/csso/lib/clean/Raw.js b/node_modules/csso/lib/clean/Raw.js deleted file mode 100644 index b9ec0ae9..00000000 --- a/node_modules/csso/lib/clean/Raw.js +++ /dev/null @@ -1,9 +0,0 @@ -import { isNodeChildrenList } from './utils.js'; - -export default function cleanRaw(node, item, list) { - // raw in stylesheet or block children - if (isNodeChildrenList(this.stylesheet, list) || - isNodeChildrenList(this.block, list)) { - list.remove(item); - } -}; diff --git a/node_modules/csso/lib/clean/Rule.js b/node_modules/csso/lib/clean/Rule.js deleted file mode 100644 index c4b02d2f..00000000 --- a/node_modules/csso/lib/clean/Rule.js +++ /dev/null @@ -1,100 +0,0 @@ -import { walk, keyword } from 'css-tree'; -import { hasNoChildren } from './utils.js'; - -const { hasOwnProperty } = Object.prototype; -const skipUsageFilteringAtrule = new Set(['keyframes']); - -function cleanUnused(selectorList, usageData) { - selectorList.children.forEach((selector, item, list) => { - let shouldRemove = false; - - walk(selector, function(node) { - // ignore nodes in nested selectors - if (this.selector === null || this.selector === selectorList) { - switch (node.type) { - case 'SelectorList': - // TODO: remove toLowerCase when pseudo selectors will be normalized - // ignore selectors inside :not() - if (this.function === null || this.function.name.toLowerCase() !== 'not') { - if (cleanUnused(node, usageData)) { - shouldRemove = true; - } - } - break; - - case 'ClassSelector': - if (usageData.whitelist !== null && - usageData.whitelist.classes !== null && - !hasOwnProperty.call(usageData.whitelist.classes, node.name)) { - shouldRemove = true; - } - if (usageData.blacklist !== null && - usageData.blacklist.classes !== null && - hasOwnProperty.call(usageData.blacklist.classes, node.name)) { - shouldRemove = true; - } - break; - - case 'IdSelector': - if (usageData.whitelist !== null && - usageData.whitelist.ids !== null && - !hasOwnProperty.call(usageData.whitelist.ids, node.name)) { - shouldRemove = true; - } - if (usageData.blacklist !== null && - usageData.blacklist.ids !== null && - hasOwnProperty.call(usageData.blacklist.ids, node.name)) { - shouldRemove = true; - } - break; - - case 'TypeSelector': - // TODO: remove toLowerCase when type selectors will be normalized - // ignore universal selectors - if (node.name.charAt(node.name.length - 1) !== '*') { - if (usageData.whitelist !== null && - usageData.whitelist.tags !== null && - !hasOwnProperty.call(usageData.whitelist.tags, node.name.toLowerCase())) { - shouldRemove = true; - } - if (usageData.blacklist !== null && - usageData.blacklist.tags !== null && - hasOwnProperty.call(usageData.blacklist.tags, node.name.toLowerCase())) { - shouldRemove = true; - } - } - break; - } - } - }); - - if (shouldRemove) { - list.remove(item); - } - }); - - return selectorList.children.isEmpty; -} - -export default function cleanRule(node, item, list, options) { - if (hasNoChildren(node.prelude) || hasNoChildren(node.block)) { - list.remove(item); - return; - } - - // avoid usage filtering for some at-rules - if (this.atrule && skipUsageFilteringAtrule.has(keyword(this.atrule.name).basename)) { - return; - } - - const { usage } = options; - - if (usage && (usage.whitelist !== null || usage.blacklist !== null)) { - cleanUnused(node.prelude, usage); - - if (hasNoChildren(node.prelude)) { - list.remove(item); - return; - } - } -}; diff --git a/node_modules/csso/lib/clean/TypeSelector.js b/node_modules/csso/lib/clean/TypeSelector.js deleted file mode 100644 index 416b495d..00000000 --- a/node_modules/csso/lib/clean/TypeSelector.js +++ /dev/null @@ -1,19 +0,0 @@ -// remove useless universal selector -export default function cleanTypeSelector(node, item, list) { - const name = item.data.name; - - // check it's a non-namespaced universal selector - if (name !== '*') { - return; - } - - // remove when universal selector before other selectors - const nextType = item.next && item.next.data.type; - if (nextType === 'IdSelector' || - nextType === 'ClassSelector' || - nextType === 'AttributeSelector' || - nextType === 'PseudoClassSelector' || - nextType === 'PseudoElementSelector') { - list.remove(item); - } -}; diff --git a/node_modules/csso/lib/clean/WhiteSpace.js b/node_modules/csso/lib/clean/WhiteSpace.js deleted file mode 100644 index 870befb1..00000000 --- a/node_modules/csso/lib/clean/WhiteSpace.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function cleanWhitespace(node, item, list) { - list.remove(item); -}; diff --git a/node_modules/csso/lib/clean/index.js b/node_modules/csso/lib/clean/index.js deleted file mode 100644 index 4faa73a6..00000000 --- a/node_modules/csso/lib/clean/index.js +++ /dev/null @@ -1,28 +0,0 @@ -import { walk } from 'css-tree'; -import Atrule from './Atrule.js'; -import Comment from './Comment.js'; -import Declaration from './Declaration.js'; -import Raw from './Raw.js'; -import Rule from './Rule.js'; -import TypeSelector from './TypeSelector.js'; -import WhiteSpace from './WhiteSpace.js'; - -const handlers = { - Atrule, - Comment, - Declaration, - Raw, - Rule, - TypeSelector, - WhiteSpace -}; - -export default function(ast, options) { - walk(ast, { - leave(node, item, list) { - if (handlers.hasOwnProperty(node.type)) { - handlers[node.type].call(this, node, item, list, options); - } - } - }); -}; diff --git a/node_modules/csso/lib/clean/utils.js b/node_modules/csso/lib/clean/utils.js deleted file mode 100644 index ca1d57c8..00000000 --- a/node_modules/csso/lib/clean/utils.js +++ /dev/null @@ -1,7 +0,0 @@ -export function hasNoChildren(node) { - return !node || !node.children || node.children.isEmpty; -} - -export function isNodeChildrenList(node, list) { - return node !== null && node.children === list; -} diff --git a/node_modules/csso/lib/compress.js b/node_modules/csso/lib/compress.js deleted file mode 100644 index 4c4fb4fc..00000000 --- a/node_modules/csso/lib/compress.js +++ /dev/null @@ -1,196 +0,0 @@ -import { List, clone, walk } from 'css-tree'; -import { buildIndex } from './usage.js'; -import clean from './clean/index.js'; -import replace from './replace/index.js'; -import restructure from './restructure/index.js'; - -function readChunk(input, specialComments) { - const children = new List(); - let nonSpaceTokenInBuffer = false; - let protectedComment; - - input.nextUntil(input.head, (node, item, list) => { - if (node.type === 'Comment') { - if (!specialComments || node.value.charAt(0) !== '!') { - list.remove(item); - return; - } - - if (nonSpaceTokenInBuffer || protectedComment) { - return true; - } - - list.remove(item); - protectedComment = node; - - return; - } - - if (node.type !== 'WhiteSpace') { - nonSpaceTokenInBuffer = true; - } - - children.insert(list.remove(item)); - }); - - return { - comment: protectedComment, - stylesheet: { - type: 'StyleSheet', - loc: null, - children - } - }; -} - -function compressChunk(ast, firstAtrulesAllowed, num, options) { - options.logger(`Compress block #${num}`, null, true); - - let seed = 1; - - if (ast.type === 'StyleSheet') { - ast.firstAtrulesAllowed = firstAtrulesAllowed; - ast.id = seed++; - } - - walk(ast, { - visit: 'Atrule', - enter(node) { - if (node.block !== null) { - node.block.id = seed++; - } - } - }); - options.logger('init', ast); - - // remove redundant - clean(ast, options); - options.logger('clean', ast); - - // replace nodes for shortened forms - replace(ast, options); - options.logger('replace', ast); - - // structure optimisations - if (options.restructuring) { - restructure(ast, options); - } - - return ast; -} - -function getCommentsOption(options) { - let comments = 'comments' in options ? options.comments : 'exclamation'; - - if (typeof comments === 'boolean') { - comments = comments ? 'exclamation' : false; - } else if (comments !== 'exclamation' && comments !== 'first-exclamation') { - comments = false; - } - - return comments; -} - -function getRestructureOption(options) { - if ('restructure' in options) { - return options.restructure; - } - - return 'restructuring' in options ? options.restructuring : true; -} - -function wrapBlock(block) { - return new List().appendData({ - type: 'Rule', - loc: null, - prelude: { - type: 'SelectorList', - loc: null, - children: new List().appendData({ - type: 'Selector', - loc: null, - children: new List().appendData({ - type: 'TypeSelector', - loc: null, - name: 'x' - }) - }) - }, - block - }); -} - -export default function compress(ast, options) { - ast = ast || { type: 'StyleSheet', loc: null, children: new List() }; - options = options || {}; - - const compressOptions = { - logger: typeof options.logger === 'function' ? options.logger : function() {}, - restructuring: getRestructureOption(options), - forceMediaMerge: Boolean(options.forceMediaMerge), - usage: options.usage ? buildIndex(options.usage) : false - }; - const output = new List(); - let specialComments = getCommentsOption(options); - let firstAtrulesAllowed = true; - let input; - let chunk; - let chunkNum = 1; - let chunkChildren; - - if (options.clone) { - ast = clone(ast); - } - - if (ast.type === 'StyleSheet') { - input = ast.children; - ast.children = output; - } else { - input = wrapBlock(ast); - } - - do { - chunk = readChunk(input, Boolean(specialComments)); - compressChunk(chunk.stylesheet, firstAtrulesAllowed, chunkNum++, compressOptions); - chunkChildren = chunk.stylesheet.children; - - if (chunk.comment) { - // add \n before comment if there is another content in output - if (!output.isEmpty) { - output.insert(List.createItem({ - type: 'Raw', - value: '\n' - })); - } - - output.insert(List.createItem(chunk.comment)); - - // add \n after comment if chunk is not empty - if (!chunkChildren.isEmpty) { - output.insert(List.createItem({ - type: 'Raw', - value: '\n' - })); - } - } - - if (firstAtrulesAllowed && !chunkChildren.isEmpty) { - const lastRule = chunkChildren.last; - - if (lastRule.type !== 'Atrule' || - (lastRule.name !== 'import' && lastRule.name !== 'charset')) { - firstAtrulesAllowed = false; - } - } - - if (specialComments !== 'exclamation') { - specialComments = false; - } - - output.appendList(chunkChildren); - } while (!input.isEmpty); - - return { - ast - }; -}; diff --git a/node_modules/csso/lib/index.js b/node_modules/csso/lib/index.js deleted file mode 100644 index 66ccf2b8..00000000 --- a/node_modules/csso/lib/index.js +++ /dev/null @@ -1,131 +0,0 @@ -import { version } from './version.js'; -import * as syntax from './syntax.js'; -import * as utils from './utils.js'; - -const { parse, generate, compress } = syntax; - -function debugOutput(name, options, startTime, data) { - if (options.debug) { - console.error(`## ${name} done in %d ms\n`, Date.now() - startTime); - } - - return data; -} - -function createDefaultLogger(level) { - let lastDebug; - - return function logger(title, ast) { - let line = title; - - if (ast) { - line = `[${((Date.now() - lastDebug) / 1000).toFixed(3)}s] ${line}`; - } - - if (level > 1 && ast) { - let css = generate(ast); - - // when level 2, limit css to 256 symbols - if (level === 2 && css.length > 256) { - css = css.substr(0, 256) + '...'; - } - - line += `\n ${css}\n`; - } - - console.error(line); - lastDebug = Date.now(); - }; -} - -function buildCompressOptions(options) { - options = { ...options }; - - if (typeof options.logger !== 'function' && options.debug) { - options.logger = createDefaultLogger(options.debug); - } - - return options; -} - -function runHandler(ast, options, handlers) { - if (!Array.isArray(handlers)) { - handlers = [handlers]; - } - - handlers.forEach(fn => fn(ast, options)); -} - -function minify(context, source, options) { - options = options || {}; - - const filename = options.filename || '<unknown>'; - let result; - - // parse - const ast = debugOutput('parsing', options, Date.now(), - parse(source, { - context, - filename, - positions: Boolean(options.sourceMap) - }) - ); - - // before compress handlers - if (options.beforeCompress) { - debugOutput('beforeCompress', options, Date.now(), - runHandler(ast, options, options.beforeCompress) - ); - } - - // compress - const compressResult = debugOutput('compress', options, Date.now(), - compress(ast, buildCompressOptions(options)) - ); - - // after compress handlers - if (options.afterCompress) { - debugOutput('afterCompress', options, Date.now(), - runHandler(compressResult, options, options.afterCompress) - ); - } - - // generate - if (options.sourceMap) { - result = debugOutput('generate(sourceMap: true)', options, Date.now(), (() => { - const tmp = generate(compressResult.ast, { sourceMap: true }); - - tmp.map._file = filename; // since other tools can relay on file in source map transform chain - tmp.map.setSourceContent(filename, source); - - return tmp; - })()); - } else { - result = debugOutput('generate', options, Date.now(), { - css: generate(compressResult.ast), - map: null - }); - } - - return result; -} - -function minifyStylesheet(source, options) { - return minify('stylesheet', source, options); -} - -function minifyBlock(source, options) { - return minify('declarationList', source, options); -} - -export { - version, - utils, - - // main methods - minifyStylesheet as minify, - minifyBlock, - - // css syntax parser/walkers/generator/etc - syntax -}; diff --git a/node_modules/csso/lib/replace/Atrule.js b/node_modules/csso/lib/replace/Atrule.js deleted file mode 100644 index 98f3248d..00000000 --- a/node_modules/csso/lib/replace/Atrule.js +++ /dev/null @@ -1,9 +0,0 @@ -import { keyword as resolveKeyword } from 'css-tree'; -import compressKeyframes from './atrule/keyframes.js'; - -export default function(node) { - // compress @keyframe selectors - if (resolveKeyword(node.name).basename === 'keyframes') { - compressKeyframes(node); - } -}; diff --git a/node_modules/csso/lib/replace/AttributeSelector.js b/node_modules/csso/lib/replace/AttributeSelector.js deleted file mode 100644 index 3821530c..00000000 --- a/node_modules/csso/lib/replace/AttributeSelector.js +++ /dev/null @@ -1,28 +0,0 @@ -// Can unquote attribute detection -// Adopted implementation of Mathias Bynens -// https://github.com/mathiasbynens/mothereff.in/blob/master/unquoted-attributes/eff.js -const blockUnquoteRx = /^(-?\d|--)|[\u0000-\u002c\u002e\u002f\u003A-\u0040\u005B-\u005E\u0060\u007B-\u009f]/; - -function canUnquote(value) { - if (value === '' || value === '-') { - return false; - } - - return !blockUnquoteRx.test(value); -} - -export default function(node) { - const attrValue = node.value; - - if (!attrValue || attrValue.type !== 'String') { - return; - } - - if (canUnquote(attrValue.value)) { - node.value = { - type: 'Identifier', - loc: attrValue.loc, - name: attrValue.value - }; - } -}; diff --git a/node_modules/csso/lib/replace/Dimension.js b/node_modules/csso/lib/replace/Dimension.js deleted file mode 100644 index edb00388..00000000 --- a/node_modules/csso/lib/replace/Dimension.js +++ /dev/null @@ -1,63 +0,0 @@ -import { packNumber } from './Number.js'; - -const MATH_FUNCTIONS = new Set([ - 'calc', - 'min', - 'max', - 'clamp' -]); -const LENGTH_UNIT = new Set([ - // absolute length units - 'px', - 'mm', - 'cm', - 'in', - 'pt', - 'pc', - - // relative length units - 'em', - 'ex', - 'ch', - 'rem', - - // viewport-percentage lengths - 'vh', - 'vw', - 'vmin', - 'vmax', - 'vm' -]); - -export default function compressDimension(node, item) { - const value = packNumber(node.value); - - node.value = value; - - if (value === '0' && this.declaration !== null && this.atrulePrelude === null) { - const unit = node.unit.toLowerCase(); - - // only length values can be compressed - if (!LENGTH_UNIT.has(unit)) { - return; - } - - // issue #362: shouldn't remove unit in -ms-flex since it breaks flex in IE10/11 - // issue #200: shouldn't remove unit in flex since it breaks flex in IE10/11 - if (this.declaration.property === '-ms-flex' || - this.declaration.property === 'flex') { - return; - } - - // issue #222: don't remove units inside calc - if (this.function && MATH_FUNCTIONS.has(this.function.name)) { - return; - } - - item.data = { - type: 'Number', - loc: node.loc, - value - }; - } -}; diff --git a/node_modules/csso/lib/replace/Number.js b/node_modules/csso/lib/replace/Number.js deleted file mode 100644 index 3420812d..00000000 --- a/node_modules/csso/lib/replace/Number.js +++ /dev/null @@ -1,40 +0,0 @@ -const OMIT_PLUSSIGN = /^(?:\+|(-))?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/; -const KEEP_PLUSSIGN = /^([\+\-])?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/; -const unsafeToRemovePlusSignAfter = new Set([ - 'Dimension', - 'Hash', - 'Identifier', - 'Number', - 'Raw', - 'UnicodeRange' -]); - -export function packNumber(value, item) { - // omit plus sign only if no prev or prev is safe type - const regexp = item && item.prev !== null && unsafeToRemovePlusSignAfter.has(item.prev.data.type) - ? KEEP_PLUSSIGN - : OMIT_PLUSSIGN; - - // 100 -> '100' - // 00100 -> '100' - // +100 -> '100' - // -100 -> '-100' - // 0.123 -> '.123' - // 0.12300 -> '.123' - // 0.0 -> '' - // 0 -> '' - // -0 -> '-' - value = String(value).replace(regexp, '$1$2$3'); - - if (value === '' || value === '-') { - value = '0'; - } - // FIXME: is it solution simplier? - // value = String(Number(value)).replace(/^(-?)0+\./, '$1.'); - - return value; -} - -export function Number(node) { - node.value = packNumber(node.value); -}; diff --git a/node_modules/csso/lib/replace/Percentage.js b/node_modules/csso/lib/replace/Percentage.js deleted file mode 100644 index 4a2d70e8..00000000 --- a/node_modules/csso/lib/replace/Percentage.js +++ /dev/null @@ -1,37 +0,0 @@ -import { lexer } from 'css-tree'; -import { packNumber } from './Number.js'; - -const blacklist = new Set([ - // see https://github.com/jakubpawlowicz/clean-css/issues/957 - 'width', - 'min-width', - 'max-width', - 'height', - 'min-height', - 'max-height', - - // issue #410: Don’t remove units in flex-basis value for (-ms-)flex shorthand - // issue #362: shouldn't remove unit in -ms-flex since it breaks flex in IE10/11 - // issue #200: shouldn't remove unit in flex since it breaks flex in IE10/11 - 'flex', - '-ms-flex' -]); - -export default function compressPercentage(node, item) { - node.value = packNumber(node.value); - - if (node.value === '0' && this.declaration && !blacklist.has(this.declaration.property)) { - // try to convert a number - item.data = { - type: 'Number', - loc: node.loc, - value: node.value - }; - - // that's ok only when new value matches on length - if (!lexer.matchDeclaration(this.declaration).isType(item.data, 'length')) { - // otherwise rollback changes - item.data = node; - } - } -}; diff --git a/node_modules/csso/lib/replace/Url.js b/node_modules/csso/lib/replace/Url.js deleted file mode 100644 index 00149218..00000000 --- a/node_modules/csso/lib/replace/Url.js +++ /dev/null @@ -1,4 +0,0 @@ -export default function(node) { - // convert `\\` to `/` - node.value = node.value.replace(/\\/g, '/'); -}; diff --git a/node_modules/csso/lib/replace/Value.js b/node_modules/csso/lib/replace/Value.js deleted file mode 100644 index 05d1d57b..00000000 --- a/node_modules/csso/lib/replace/Value.js +++ /dev/null @@ -1,26 +0,0 @@ -import { property as resolveName } from 'css-tree'; -import font from './property/font.js'; -import fontWeight from './property/font-weight.js'; -import background from './property/background.js'; -import border from './property/border.js'; -import outline from './property/border.js'; - -const handlers = { - 'font': font, - 'font-weight': fontWeight, - 'background': background, - 'border': border, - 'outline': outline -}; - -export default function compressValue(node) { - if (!this.declaration) { - return; - } - - const property = resolveName(this.declaration.property); - - if (handlers.hasOwnProperty(property.basename)) { - handlers[property.basename](node); - } -}; diff --git a/node_modules/csso/lib/replace/atrule/keyframes.js b/node_modules/csso/lib/replace/atrule/keyframes.js deleted file mode 100644 index 62e6aef7..00000000 --- a/node_modules/csso/lib/replace/atrule/keyframes.js +++ /dev/null @@ -1,21 +0,0 @@ -export default function(node) { - node.block.children.forEach((rule) => { - rule.prelude.children.forEach((simpleselector) => { - simpleselector.children.forEach((data, item) => { - if (data.type === 'Percentage' && data.value === '100') { - item.data = { - type: 'TypeSelector', - loc: data.loc, - name: 'to' - }; - } else if (data.type === 'TypeSelector' && data.name === 'from') { - item.data = { - type: 'Percentage', - loc: data.loc, - value: '0' - }; - } - }); - }); - }); -}; diff --git a/node_modules/csso/lib/replace/color.js b/node_modules/csso/lib/replace/color.js deleted file mode 100644 index 7f3db13d..00000000 --- a/node_modules/csso/lib/replace/color.js +++ /dev/null @@ -1,498 +0,0 @@ -import { lexer } from 'css-tree'; -import { packNumber } from './Number.js'; - -// http://www.w3.org/TR/css3-color/#svg-color -const NAME_TO_HEX = { - 'aliceblue': 'f0f8ff', - 'antiquewhite': 'faebd7', - 'aqua': '0ff', - 'aquamarine': '7fffd4', - 'azure': 'f0ffff', - 'beige': 'f5f5dc', - 'bisque': 'ffe4c4', - 'black': '000', - 'blanchedalmond': 'ffebcd', - 'blue': '00f', - 'blueviolet': '8a2be2', - 'brown': 'a52a2a', - 'burlywood': 'deb887', - 'cadetblue': '5f9ea0', - 'chartreuse': '7fff00', - 'chocolate': 'd2691e', - 'coral': 'ff7f50', - 'cornflowerblue': '6495ed', - 'cornsilk': 'fff8dc', - 'crimson': 'dc143c', - 'cyan': '0ff', - 'darkblue': '00008b', - 'darkcyan': '008b8b', - 'darkgoldenrod': 'b8860b', - 'darkgray': 'a9a9a9', - 'darkgrey': 'a9a9a9', - 'darkgreen': '006400', - 'darkkhaki': 'bdb76b', - 'darkmagenta': '8b008b', - 'darkolivegreen': '556b2f', - 'darkorange': 'ff8c00', - 'darkorchid': '9932cc', - 'darkred': '8b0000', - 'darksalmon': 'e9967a', - 'darkseagreen': '8fbc8f', - 'darkslateblue': '483d8b', - 'darkslategray': '2f4f4f', - 'darkslategrey': '2f4f4f', - 'darkturquoise': '00ced1', - 'darkviolet': '9400d3', - 'deeppink': 'ff1493', - 'deepskyblue': '00bfff', - 'dimgray': '696969', - 'dimgrey': '696969', - 'dodgerblue': '1e90ff', - 'firebrick': 'b22222', - 'floralwhite': 'fffaf0', - 'forestgreen': '228b22', - 'fuchsia': 'f0f', - 'gainsboro': 'dcdcdc', - 'ghostwhite': 'f8f8ff', - 'gold': 'ffd700', - 'goldenrod': 'daa520', - 'gray': '808080', - 'grey': '808080', - 'green': '008000', - 'greenyellow': 'adff2f', - 'honeydew': 'f0fff0', - 'hotpink': 'ff69b4', - 'indianred': 'cd5c5c', - 'indigo': '4b0082', - 'ivory': 'fffff0', - 'khaki': 'f0e68c', - 'lavender': 'e6e6fa', - 'lavenderblush': 'fff0f5', - 'lawngreen': '7cfc00', - 'lemonchiffon': 'fffacd', - 'lightblue': 'add8e6', - 'lightcoral': 'f08080', - 'lightcyan': 'e0ffff', - 'lightgoldenrodyellow': 'fafad2', - 'lightgray': 'd3d3d3', - 'lightgrey': 'd3d3d3', - 'lightgreen': '90ee90', - 'lightpink': 'ffb6c1', - 'lightsalmon': 'ffa07a', - 'lightseagreen': '20b2aa', - 'lightskyblue': '87cefa', - 'lightslategray': '789', - 'lightslategrey': '789', - 'lightsteelblue': 'b0c4de', - 'lightyellow': 'ffffe0', - 'lime': '0f0', - 'limegreen': '32cd32', - 'linen': 'faf0e6', - 'magenta': 'f0f', - 'maroon': '800000', - 'mediumaquamarine': '66cdaa', - 'mediumblue': '0000cd', - 'mediumorchid': 'ba55d3', - 'mediumpurple': '9370db', - 'mediumseagreen': '3cb371', - 'mediumslateblue': '7b68ee', - 'mediumspringgreen': '00fa9a', - 'mediumturquoise': '48d1cc', - 'mediumvioletred': 'c71585', - 'midnightblue': '191970', - 'mintcream': 'f5fffa', - 'mistyrose': 'ffe4e1', - 'moccasin': 'ffe4b5', - 'navajowhite': 'ffdead', - 'navy': '000080', - 'oldlace': 'fdf5e6', - 'olive': '808000', - 'olivedrab': '6b8e23', - 'orange': 'ffa500', - 'orangered': 'ff4500', - 'orchid': 'da70d6', - 'palegoldenrod': 'eee8aa', - 'palegreen': '98fb98', - 'paleturquoise': 'afeeee', - 'palevioletred': 'db7093', - 'papayawhip': 'ffefd5', - 'peachpuff': 'ffdab9', - 'peru': 'cd853f', - 'pink': 'ffc0cb', - 'plum': 'dda0dd', - 'powderblue': 'b0e0e6', - 'purple': '800080', - 'rebeccapurple': '639', - 'red': 'f00', - 'rosybrown': 'bc8f8f', - 'royalblue': '4169e1', - 'saddlebrown': '8b4513', - 'salmon': 'fa8072', - 'sandybrown': 'f4a460', - 'seagreen': '2e8b57', - 'seashell': 'fff5ee', - 'sienna': 'a0522d', - 'silver': 'c0c0c0', - 'skyblue': '87ceeb', - 'slateblue': '6a5acd', - 'slategray': '708090', - 'slategrey': '708090', - 'snow': 'fffafa', - 'springgreen': '00ff7f', - 'steelblue': '4682b4', - 'tan': 'd2b48c', - 'teal': '008080', - 'thistle': 'd8bfd8', - 'tomato': 'ff6347', - 'turquoise': '40e0d0', - 'violet': 'ee82ee', - 'wheat': 'f5deb3', - 'white': 'fff', - 'whitesmoke': 'f5f5f5', - 'yellow': 'ff0', - 'yellowgreen': '9acd32' -}; - -const HEX_TO_NAME = { - '800000': 'maroon', - '800080': 'purple', - '808000': 'olive', - '808080': 'gray', - '00ffff': 'cyan', - 'f0ffff': 'azure', - 'f5f5dc': 'beige', - 'ffe4c4': 'bisque', - '000000': 'black', - '0000ff': 'blue', - 'a52a2a': 'brown', - 'ff7f50': 'coral', - 'ffd700': 'gold', - '008000': 'green', - '4b0082': 'indigo', - 'fffff0': 'ivory', - 'f0e68c': 'khaki', - '00ff00': 'lime', - 'faf0e6': 'linen', - '000080': 'navy', - 'ffa500': 'orange', - 'da70d6': 'orchid', - 'cd853f': 'peru', - 'ffc0cb': 'pink', - 'dda0dd': 'plum', - 'f00': 'red', - 'ff0000': 'red', - 'fa8072': 'salmon', - 'a0522d': 'sienna', - 'c0c0c0': 'silver', - 'fffafa': 'snow', - 'd2b48c': 'tan', - '008080': 'teal', - 'ff6347': 'tomato', - 'ee82ee': 'violet', - 'f5deb3': 'wheat', - 'ffffff': 'white', - 'ffff00': 'yellow' -}; - -function hueToRgb(p, q, t) { - if (t < 0) { - t += 1; - } - if (t > 1) { - t -= 1; - } - if (t < 1 / 6) { - return p + (q - p) * 6 * t; - } - if (t < 1 / 2) { - return q; - } - if (t < 2 / 3) { - return p + (q - p) * (2 / 3 - t) * 6; - } - return p; -} - -function hslToRgb(h, s, l, a) { - let r; - let g; - let b; - - if (s === 0) { - r = g = b = l; // achromatic - } else { - const q = l < 0.5 ? l * (1 + s) : l + s - l * s; - const p = 2 * l - q; - - r = hueToRgb(p, q, h + 1 / 3); - g = hueToRgb(p, q, h); - b = hueToRgb(p, q, h - 1 / 3); - } - - return [ - Math.round(r * 255), - Math.round(g * 255), - Math.round(b * 255), - a - ]; -} - -function toHex(value) { - value = value.toString(16); - - return value.length === 1 ? '0' + value : value; -} - -function parseFunctionArgs(functionArgs, count, rgb) { - let cursor = functionArgs.head; - let args = []; - let wasValue = false; - - while (cursor !== null) { - const { type, value } = cursor.data; - - switch (type) { - case 'Number': - case 'Percentage': - if (wasValue) { - return; - } - - wasValue = true; - args.push({ - type, - value: Number(value) - }); - - break; - - case 'Operator': - if (value === ',') { - if (!wasValue) { - return; - } - wasValue = false; - } else if (wasValue || value !== '+') { - return; - } - - break; - - default: - // something we couldn't understand - return; - } - - cursor = cursor.next; - } - - if (args.length !== count) { - // invalid arguments count - // TODO: remove those tokens - return; - } - - if (args.length === 4) { - if (args[3].type !== 'Number') { - // 4th argument should be a number - // TODO: remove those tokens - return; - } - - args[3].type = 'Alpha'; - } - - if (rgb) { - if (args[0].type !== args[1].type || args[0].type !== args[2].type) { - // invalid color, numbers and percentage shouldn't be mixed - // TODO: remove those tokens - return; - } - } else { - if (args[0].type !== 'Number' || - args[1].type !== 'Percentage' || - args[2].type !== 'Percentage') { - // invalid color, for hsl values should be: number, percentage, percentage - // TODO: remove those tokens - return; - } - - args[0].type = 'Angle'; - } - - return args.map(function(arg) { - let value = Math.max(0, arg.value); - - switch (arg.type) { - case 'Number': - // fit value to [0..255] range - value = Math.min(value, 255); - break; - - case 'Percentage': - // convert 0..100% to value in [0..255] range - value = Math.min(value, 100) / 100; - - if (!rgb) { - return value; - } - - value = 255 * value; - break; - - case 'Angle': - // fit value to (-360..360) range - return (((value % 360) + 360) % 360) / 360; - - case 'Alpha': - // fit value to [0..1] range - return Math.min(value, 1); - } - - return Math.round(value); - }); -} - -export function compressFunction(node, item) { - let functionName = node.name; - let args; - - if (functionName === 'rgba' || functionName === 'hsla') { - args = parseFunctionArgs(node.children, 4, functionName === 'rgba'); - - if (!args) { - // something went wrong - return; - } - - if (functionName === 'hsla') { - args = hslToRgb(...args); - node.name = 'rgba'; - } - - if (args[3] === 0) { - // try to replace `rgba(x, x, x, 0)` to `transparent` - // always replace `rgba(0, 0, 0, 0)` to `transparent` - // otherwise avoid replacement in gradients since it may break color transition - // http://stackoverflow.com/questions/11829410/css3-gradient-rendering-issues-from-transparent-to-white - const scopeFunctionName = this.function && this.function.name; - - if ((args[0] === 0 && args[1] === 0 && args[2] === 0) || - !/^(?:to|from|color-stop)$|gradient$/i.test(scopeFunctionName)) { - - item.data = { - type: 'Identifier', - loc: node.loc, - name: 'transparent' - }; - - return; - } - } - - if (args[3] !== 1) { - // replace argument values for normalized/interpolated - node.children.forEach((node, item, list) => { - if (node.type === 'Operator') { - if (node.value !== ',') { - list.remove(item); - } - return; - } - - item.data = { - type: 'Number', - loc: node.loc, - value: packNumber(args.shift()) - }; - }); - - return; - } - - // otherwise convert to rgb, i.e. rgba(255, 0, 0, 1) -> rgb(255, 0, 0) - functionName = 'rgb'; - } - - if (functionName === 'hsl') { - args = args || parseFunctionArgs(node.children, 3, false); - - if (!args) { - // something went wrong - return; - } - - // convert to rgb - args = hslToRgb(...args); - functionName = 'rgb'; - } - - if (functionName === 'rgb') { - args = args || parseFunctionArgs(node.children, 3, true); - - if (!args) { - // something went wrong - return; - } - - item.data = { - type: 'Hash', - loc: node.loc, - value: toHex(args[0]) + toHex(args[1]) + toHex(args[2]) - }; - - compressHex(item.data, item); - } -} - -export function compressIdent(node, item) { - if (this.declaration === null) { - return; - } - - let color = node.name.toLowerCase(); - - if (NAME_TO_HEX.hasOwnProperty(color) && - lexer.matchDeclaration(this.declaration).isType(node, 'color')) { - const hex = NAME_TO_HEX[color]; - - if (hex.length + 1 <= color.length) { - // replace for shorter hex value - item.data = { - type: 'Hash', - loc: node.loc, - value: hex - }; - } else { - // special case for consistent colors - if (color === 'grey') { - color = 'gray'; - } - - // just replace value for lower cased name - node.name = color; - } - } -} - -export function compressHex(node, item) { - let color = node.value.toLowerCase(); - - // #112233 -> #123 - if (color.length === 6 && - color[0] === color[1] && - color[2] === color[3] && - color[4] === color[5]) { - color = color[0] + color[2] + color[4]; - } - - if (HEX_TO_NAME[color]) { - item.data = { - type: 'Identifier', - loc: node.loc, - name: HEX_TO_NAME[color] - }; - } else { - node.value = color; - } -} diff --git a/node_modules/csso/lib/replace/index.js b/node_modules/csso/lib/replace/index.js deleted file mode 100644 index de90ee46..00000000 --- a/node_modules/csso/lib/replace/index.js +++ /dev/null @@ -1,32 +0,0 @@ -import { walk } from 'css-tree'; -import Atrule from './Atrule.js'; -import AttributeSelector from './AttributeSelector.js'; -import Value from './Value.js'; -import Dimension from './Dimension.js'; -import Percentage from './Percentage.js'; -import { Number } from './Number.js'; -import Url from './Url.js'; -import { compressHex, compressIdent, compressFunction } from './color.js'; - -const handlers = { - Atrule, - AttributeSelector, - Value, - Dimension, - Percentage, - Number, - Url, - Hash: compressHex, - Identifier: compressIdent, - Function: compressFunction -}; - -export default function(ast) { - walk(ast, { - leave(node, item, list) { - if (handlers.hasOwnProperty(node.type)) { - handlers[node.type].call(this, node, item, list); - } - } - }); -}; diff --git a/node_modules/csso/lib/replace/property/background.js b/node_modules/csso/lib/replace/property/background.js deleted file mode 100644 index 847a8cff..00000000 --- a/node_modules/csso/lib/replace/property/background.js +++ /dev/null @@ -1,50 +0,0 @@ -import { List } from 'css-tree'; - -export default function compressBackground(node) { - function flush() { - if (!buffer.length) { - buffer.unshift( - { - type: 'Number', - loc: null, - value: '0' - }, - { - type: 'Number', - loc: null, - value: '0' - } - ); - } - - newValue.push.apply(newValue, buffer); - - buffer = []; - } - - let newValue = []; - let buffer = []; - - node.children.forEach((node) => { - if (node.type === 'Operator' && node.value === ',') { - flush(); - newValue.push(node); - return; - } - - // remove defaults - if (node.type === 'Identifier') { - if (node.name === 'transparent' || - node.name === 'none' || - node.name === 'repeat' || - node.name === 'scroll') { - return; - } - } - - buffer.push(node); - }); - - flush(); - node.children = new List().fromArray(newValue); -}; diff --git a/node_modules/csso/lib/replace/property/border.js b/node_modules/csso/lib/replace/property/border.js deleted file mode 100644 index c470b66f..00000000 --- a/node_modules/csso/lib/replace/property/border.js +++ /dev/null @@ -1,16 +0,0 @@ -export default function compressBorder(node) { - node.children.forEach((node, item, list) => { - if (node.type === 'Identifier' && node.name.toLowerCase() === 'none') { - if (list.head === list.tail) { - // replace `none` for zero when `none` is a single term - item.data = { - type: 'Number', - loc: node.loc, - value: '0' - }; - } else { - list.remove(item); - } - } - }); -}; diff --git a/node_modules/csso/lib/replace/property/font-weight.js b/node_modules/csso/lib/replace/property/font-weight.js deleted file mode 100644 index 3b901d33..00000000 --- a/node_modules/csso/lib/replace/property/font-weight.js +++ /dev/null @@ -1,22 +0,0 @@ -export default function compressFontWeight(node) { - const value = node.children.head.data; - - if (value.type === 'Identifier') { - switch (value.name) { - case 'normal': - node.children.head.data = { - type: 'Number', - loc: value.loc, - value: '400' - }; - break; - case 'bold': - node.children.head.data = { - type: 'Number', - loc: value.loc, - value: '700' - }; - break; - } - } -}; diff --git a/node_modules/csso/lib/replace/property/font.js b/node_modules/csso/lib/replace/property/font.js deleted file mode 100644 index 38e903a2..00000000 --- a/node_modules/csso/lib/replace/property/font.js +++ /dev/null @@ -1,30 +0,0 @@ -export default function compressFont(node) { - const list = node.children; - - list.forEachRight(function(node, item) { - if (node.type === 'Identifier') { - if (node.name === 'bold') { - item.data = { - type: 'Number', - loc: node.loc, - value: '700' - }; - } else if (node.name === 'normal') { - const prev = item.prev; - - if (prev && prev.data.type === 'Operator' && prev.data.value === '/') { - this.remove(prev); - } - - this.remove(item); - } - } - }); - - if (list.isEmpty) { - list.insert(list.createItem({ - type: 'Identifier', - name: 'normal' - })); - } -}; diff --git a/node_modules/csso/lib/restructure/1-mergeAtrule.js b/node_modules/csso/lib/restructure/1-mergeAtrule.js deleted file mode 100644 index e00e4d32..00000000 --- a/node_modules/csso/lib/restructure/1-mergeAtrule.js +++ /dev/null @@ -1,106 +0,0 @@ -import { List, walk, keyword as resolveKeyword } from 'css-tree'; - -const { hasOwnProperty } = Object.prototype; - -function addRuleToMap(map, item, list, single) { - const node = item.data; - const name = resolveKeyword(node.name).basename; - const id = node.name.toLowerCase() + '/' + (node.prelude ? node.prelude.id : null); - - if (!hasOwnProperty.call(map, name)) { - map[name] = Object.create(null); - } - - if (single) { - delete map[name][id]; - } - - if (!hasOwnProperty.call(map[name], id)) { - map[name][id] = new List(); - } - - map[name][id].append(list.remove(item)); -} - -function relocateAtrules(ast, options) { - const collected = Object.create(null); - let topInjectPoint = null; - - ast.children.forEach(function(node, item, list) { - if (node.type === 'Atrule') { - const name = resolveKeyword(node.name).basename; - - switch (name) { - case 'keyframes': - addRuleToMap(collected, item, list, true); - return; - - case 'media': - if (options.forceMediaMerge) { - addRuleToMap(collected, item, list, false); - return; - } - break; - } - - if (topInjectPoint === null && - name !== 'charset' && - name !== 'import') { - topInjectPoint = item; - } - } else { - if (topInjectPoint === null) { - topInjectPoint = item; - } - } - }); - - for (const atrule in collected) { - for (const id in collected[atrule]) { - ast.children.insertList( - collected[atrule][id], - atrule === 'media' ? null : topInjectPoint - ); - } - } -}; - -function isMediaRule(node) { - return node.type === 'Atrule' && node.name === 'media'; -} - -function processAtrule(node, item, list) { - if (!isMediaRule(node)) { - return; - } - - const prev = item.prev && item.prev.data; - - if (!prev || !isMediaRule(prev)) { - return; - } - - // merge @media with same query - if (node.prelude && - prev.prelude && - node.prelude.id === prev.prelude.id) { - prev.block.children.appendList(node.block.children); - list.remove(item); - - // TODO: use it when we can refer to several points in source - // prev.loc = { - // primary: prev.loc, - // merged: node.loc - // }; - } -} - -export default function rejoinAtrule(ast, options) { - relocateAtrules(ast, options); - - walk(ast, { - visit: 'Atrule', - reverse: true, - enter: processAtrule - }); -}; diff --git a/node_modules/csso/lib/restructure/2-initialMergeRuleset.js b/node_modules/csso/lib/restructure/2-initialMergeRuleset.js deleted file mode 100644 index c49abaa0..00000000 --- a/node_modules/csso/lib/restructure/2-initialMergeRuleset.js +++ /dev/null @@ -1,53 +0,0 @@ -import { walk } from 'css-tree'; -import { - unsafeToSkipNode, - isEqualSelectors, - isEqualDeclarations, - addSelectors, - hasSimilarSelectors -} from './utils.js'; - -function processRule(node, item, list) { - const selectors = node.prelude.children; - const declarations = node.block.children; - - list.prevUntil(item.prev, function(prev) { - // skip non-ruleset node if safe - if (prev.type !== 'Rule') { - return unsafeToSkipNode.call(selectors, prev); - } - - const prevSelectors = prev.prelude.children; - const prevDeclarations = prev.block.children; - - // try to join rulesets with equal pseudo signature - if (node.pseudoSignature === prev.pseudoSignature) { - // try to join by selectors - if (isEqualSelectors(prevSelectors, selectors)) { - prevDeclarations.appendList(declarations); - list.remove(item); - return true; - } - - // try to join by declarations - if (isEqualDeclarations(declarations, prevDeclarations)) { - addSelectors(prevSelectors, selectors); - list.remove(item); - return true; - } - } - - // go to prev ruleset if has no selector similarities - return hasSimilarSelectors(selectors, prevSelectors); - }); -} - -// NOTE: direction should be left to right, since rulesets merge to left -// ruleset. When direction right to left unmerged rulesets may prevent lookup -// TODO: remove initial merge -export default function initialMergeRule(ast) { - walk(ast, { - visit: 'Rule', - enter: processRule - }); -}; diff --git a/node_modules/csso/lib/restructure/3-disjoinRuleset.js b/node_modules/csso/lib/restructure/3-disjoinRuleset.js deleted file mode 100644 index 02ec5e1f..00000000 --- a/node_modules/csso/lib/restructure/3-disjoinRuleset.js +++ /dev/null @@ -1,42 +0,0 @@ -import { List, walk } from 'css-tree'; - -function processRule(node, item, list) { - const selectors = node.prelude.children; - - // generate new rule sets: - // .a, .b { color: red; } - // -> - // .a { color: red; } - // .b { color: red; } - - // while there are more than 1 simple selector split for rulesets - while (selectors.head !== selectors.tail) { - const newSelectors = new List(); - - newSelectors.insert(selectors.remove(selectors.head)); - - list.insert(list.createItem({ - type: 'Rule', - loc: node.loc, - prelude: { - type: 'SelectorList', - loc: node.prelude.loc, - children: newSelectors - }, - block: { - type: 'Block', - loc: node.block.loc, - children: node.block.children.copy() - }, - pseudoSignature: node.pseudoSignature - }), item); - } -} - -export default function disjoinRule(ast) { - walk(ast, { - visit: 'Rule', - reverse: true, - enter: processRule - }); -}; diff --git a/node_modules/csso/lib/restructure/4-restructShorthand.js b/node_modules/csso/lib/restructure/4-restructShorthand.js deleted file mode 100644 index 41acb515..00000000 --- a/node_modules/csso/lib/restructure/4-restructShorthand.js +++ /dev/null @@ -1,425 +0,0 @@ -import { List, generate, walk } from 'css-tree'; - -const REPLACE = 1; -const REMOVE = 2; -const TOP = 0; -const RIGHT = 1; -const BOTTOM = 2; -const LEFT = 3; -const SIDES = ['top', 'right', 'bottom', 'left']; -const SIDE = { - 'margin-top': 'top', - 'margin-right': 'right', - 'margin-bottom': 'bottom', - 'margin-left': 'left', - - 'padding-top': 'top', - 'padding-right': 'right', - 'padding-bottom': 'bottom', - 'padding-left': 'left', - - 'border-top-color': 'top', - 'border-right-color': 'right', - 'border-bottom-color': 'bottom', - 'border-left-color': 'left', - 'border-top-width': 'top', - 'border-right-width': 'right', - 'border-bottom-width': 'bottom', - 'border-left-width': 'left', - 'border-top-style': 'top', - 'border-right-style': 'right', - 'border-bottom-style': 'bottom', - 'border-left-style': 'left' -}; -const MAIN_PROPERTY = { - 'margin': 'margin', - 'margin-top': 'margin', - 'margin-right': 'margin', - 'margin-bottom': 'margin', - 'margin-left': 'margin', - - 'padding': 'padding', - 'padding-top': 'padding', - 'padding-right': 'padding', - 'padding-bottom': 'padding', - 'padding-left': 'padding', - - 'border-color': 'border-color', - 'border-top-color': 'border-color', - 'border-right-color': 'border-color', - 'border-bottom-color': 'border-color', - 'border-left-color': 'border-color', - 'border-width': 'border-width', - 'border-top-width': 'border-width', - 'border-right-width': 'border-width', - 'border-bottom-width': 'border-width', - 'border-left-width': 'border-width', - 'border-style': 'border-style', - 'border-top-style': 'border-style', - 'border-right-style': 'border-style', - 'border-bottom-style': 'border-style', - 'border-left-style': 'border-style' -}; - -class TRBL { - constructor(name) { - this.name = name; - this.loc = null; - this.iehack = undefined; - this.sides = { - 'top': null, - 'right': null, - 'bottom': null, - 'left': null - }; - } - - getValueSequence(declaration, count) { - const values = []; - let iehack = ''; - const hasBadValues = declaration.value.type !== 'Value' || declaration.value.children.some(function(child) { - let special = false; - - switch (child.type) { - case 'Identifier': - switch (child.name) { - case '\\0': - case '\\9': - iehack = child.name; - return; - - case 'inherit': - case 'initial': - case 'unset': - case 'revert': - special = child.name; - break; - } - break; - - case 'Dimension': - switch (child.unit) { - // is not supported until IE11 - case 'rem': - - // v* units is too buggy across browsers and better - // don't merge values with those units - case 'vw': - case 'vh': - case 'vmin': - case 'vmax': - case 'vm': // IE9 supporting "vm" instead of "vmin". - special = child.unit; - break; - } - break; - - case 'Hash': // color - case 'Number': - case 'Percentage': - break; - - case 'Function': - if (child.name === 'var') { - return true; - } - - special = child.name; - break; - - default: - return true; // bad value - } - - values.push({ - node: child, - special, - important: declaration.important - }); - }); - - if (hasBadValues || values.length > count) { - return false; - } - - if (typeof this.iehack === 'string' && this.iehack !== iehack) { - return false; - } - - this.iehack = iehack; // move outside - - return values; - } - - canOverride(side, value) { - const currentValue = this.sides[side]; - - return !currentValue || (value.important && !currentValue.important); - } - - add(name, declaration) { - function attemptToAdd() { - const sides = this.sides; - const side = SIDE[name]; - - if (side) { - if (side in sides === false) { - return false; - } - - const values = this.getValueSequence(declaration, 1); - - if (!values || !values.length) { - return false; - } - - // can mix only if specials are equal - for (const key in sides) { - if (sides[key] !== null && sides[key].special !== values[0].special) { - return false; - } - } - - if (!this.canOverride(side, values[0])) { - return true; - } - - sides[side] = values[0]; - - return true; - } else if (name === this.name) { - const values = this.getValueSequence(declaration, 4); - - if (!values || !values.length) { - return false; - } - - switch (values.length) { - case 1: - values[RIGHT] = values[TOP]; - values[BOTTOM] = values[TOP]; - values[LEFT] = values[TOP]; - break; - - case 2: - values[BOTTOM] = values[TOP]; - values[LEFT] = values[RIGHT]; - break; - - case 3: - values[LEFT] = values[RIGHT]; - break; - } - - // can mix only if specials are equal - for (let i = 0; i < 4; i++) { - for (const key in sides) { - if (sides[key] !== null && sides[key].special !== values[i].special) { - return false; - } - } - } - - for (let i = 0; i < 4; i++) { - if (this.canOverride(SIDES[i], values[i])) { - sides[SIDES[i]] = values[i]; - } - } - - return true; - } - } - - if (!attemptToAdd.call(this)) { - return false; - } - - // TODO: use it when we can refer to several points in source - // if (this.loc) { - // this.loc = { - // primary: this.loc, - // merged: declaration.loc - // }; - // } else { - // this.loc = declaration.loc; - // } - if (!this.loc) { - this.loc = declaration.loc; - } - - return true; - } - - isOkToMinimize() { - const top = this.sides.top; - const right = this.sides.right; - const bottom = this.sides.bottom; - const left = this.sides.left; - - if (top && right && bottom && left) { - const important = - top.important + - right.important + - bottom.important + - left.important; - - return important === 0 || important === 4; - } - - return false; - } - - getValue() { - const result = new List(); - const sides = this.sides; - const values = [ - sides.top, - sides.right, - sides.bottom, - sides.left - ]; - const stringValues = [ - generate(sides.top.node), - generate(sides.right.node), - generate(sides.bottom.node), - generate(sides.left.node) - ]; - - if (stringValues[LEFT] === stringValues[RIGHT]) { - values.pop(); - if (stringValues[BOTTOM] === stringValues[TOP]) { - values.pop(); - if (stringValues[RIGHT] === stringValues[TOP]) { - values.pop(); - } - } - } - - for (let i = 0; i < values.length; i++) { - result.appendData(values[i].node); - } - - if (this.iehack) { - result.appendData({ - type: 'Identifier', - loc: null, - name: this.iehack - }); - } - - return { - type: 'Value', - loc: null, - children: result - }; - } - - getDeclaration() { - return { - type: 'Declaration', - loc: this.loc, - important: this.sides.top.important, - property: this.name, - value: this.getValue() - }; - } -} - -function processRule(rule, shorts, shortDeclarations, lastShortSelector) { - const declarations = rule.block.children; - const selector = rule.prelude.children.first.id; - - rule.block.children.forEachRight(function(declaration, item) { - const property = declaration.property; - - if (!MAIN_PROPERTY.hasOwnProperty(property)) { - return; - } - - const key = MAIN_PROPERTY[property]; - let shorthand; - let operation; - - if (!lastShortSelector || selector === lastShortSelector) { - if (key in shorts) { - operation = REMOVE; - shorthand = shorts[key]; - } - } - - if (!shorthand || !shorthand.add(property, declaration)) { - operation = REPLACE; - shorthand = new TRBL(key); - - // if can't parse value ignore it and break shorthand children - if (!shorthand.add(property, declaration)) { - lastShortSelector = null; - return; - } - } - - shorts[key] = shorthand; - shortDeclarations.push({ - operation, - block: declarations, - item, - shorthand - }); - - lastShortSelector = selector; - }); - - return lastShortSelector; -} - -function processShorthands(shortDeclarations, markDeclaration) { - shortDeclarations.forEach(function(item) { - const shorthand = item.shorthand; - - if (!shorthand.isOkToMinimize()) { - return; - } - - if (item.operation === REPLACE) { - item.item.data = markDeclaration(shorthand.getDeclaration()); - } else { - item.block.remove(item.item); - } - }); -} - -export default function restructBlock(ast, indexer) { - const stylesheetMap = {}; - const shortDeclarations = []; - - walk(ast, { - visit: 'Rule', - reverse: true, - enter(node) { - const stylesheet = this.block || this.stylesheet; - const ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first.id; - let ruleMap; - let shorts; - - if (!stylesheetMap.hasOwnProperty(stylesheet.id)) { - ruleMap = { - lastShortSelector: null - }; - stylesheetMap[stylesheet.id] = ruleMap; - } else { - ruleMap = stylesheetMap[stylesheet.id]; - } - - if (ruleMap.hasOwnProperty(ruleId)) { - shorts = ruleMap[ruleId]; - } else { - shorts = {}; - ruleMap[ruleId] = shorts; - } - - ruleMap.lastShortSelector = processRule.call(this, node, shorts, shortDeclarations, ruleMap.lastShortSelector); - } - }); - - processShorthands(shortDeclarations, indexer.declaration); -}; diff --git a/node_modules/csso/lib/restructure/6-restructBlock.js b/node_modules/csso/lib/restructure/6-restructBlock.js deleted file mode 100644 index 7d5e8572..00000000 --- a/node_modules/csso/lib/restructure/6-restructBlock.js +++ /dev/null @@ -1,308 +0,0 @@ -import { - walk, - generate, - property as resolveProperty, - keyword as resolveKeyword -} from 'css-tree'; - -let fingerprintId = 1; -const dontRestructure = new Set([ - 'src' // https://github.com/afelix/csso/issues/50 -]); - -const DONT_MIX_VALUE = { - // https://developer.mozilla.org/en-US/docs/Web/CSS/display#Browser_compatibility - 'display': /table|ruby|flex|-(flex)?box$|grid|contents|run-in/i, - // https://developer.mozilla.org/en/docs/Web/CSS/text-align - 'text-align': /^(start|end|match-parent|justify-all)$/i -}; - -const SAFE_VALUES = { - cursor: [ - 'auto', 'crosshair', 'default', 'move', 'text', 'wait', 'help', - 'n-resize', 'e-resize', 's-resize', 'w-resize', - 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', - 'pointer', 'progress', 'not-allowed', 'no-drop', 'vertical-text', 'all-scroll', - 'col-resize', 'row-resize' - ], - overflow: [ - 'hidden', 'visible', 'scroll', 'auto' - ], - position: [ - 'static', 'relative', 'absolute', 'fixed' - ] -}; - -const NEEDLESS_TABLE = { - 'border-width': ['border'], - 'border-style': ['border'], - 'border-color': ['border'], - 'border-top': ['border'], - 'border-right': ['border'], - 'border-bottom': ['border'], - 'border-left': ['border'], - 'border-top-width': ['border-top', 'border-width', 'border'], - 'border-right-width': ['border-right', 'border-width', 'border'], - 'border-bottom-width': ['border-bottom', 'border-width', 'border'], - 'border-left-width': ['border-left', 'border-width', 'border'], - 'border-top-style': ['border-top', 'border-style', 'border'], - 'border-right-style': ['border-right', 'border-style', 'border'], - 'border-bottom-style': ['border-bottom', 'border-style', 'border'], - 'border-left-style': ['border-left', 'border-style', 'border'], - 'border-top-color': ['border-top', 'border-color', 'border'], - 'border-right-color': ['border-right', 'border-color', 'border'], - 'border-bottom-color': ['border-bottom', 'border-color', 'border'], - 'border-left-color': ['border-left', 'border-color', 'border'], - 'margin-top': ['margin'], - 'margin-right': ['margin'], - 'margin-bottom': ['margin'], - 'margin-left': ['margin'], - 'padding-top': ['padding'], - 'padding-right': ['padding'], - 'padding-bottom': ['padding'], - 'padding-left': ['padding'], - 'font-style': ['font'], - 'font-variant': ['font'], - 'font-weight': ['font'], - 'font-size': ['font'], - 'font-family': ['font'], - 'list-style-type': ['list-style'], - 'list-style-position': ['list-style'], - 'list-style-image': ['list-style'] -}; - -function getPropertyFingerprint(propertyName, declaration, fingerprints) { - const realName = resolveProperty(propertyName).basename; - - if (realName === 'background') { - return propertyName + ':' + generate(declaration.value); - } - - const declarationId = declaration.id; - let fingerprint = fingerprints[declarationId]; - - if (!fingerprint) { - switch (declaration.value.type) { - case 'Value': - const special = {}; - let vendorId = ''; - let iehack = ''; - let raw = false; - - declaration.value.children.forEach(function walk(node) { - switch (node.type) { - case 'Value': - case 'Brackets': - case 'Parentheses': - node.children.forEach(walk); - break; - - case 'Raw': - raw = true; - break; - - case 'Identifier': { - const { name } = node; - - if (!vendorId) { - vendorId = resolveKeyword(name).vendor; - } - - if (/\\[09]/.test(name)) { - iehack = RegExp.lastMatch; - } - - if (SAFE_VALUES.hasOwnProperty(realName)) { - if (SAFE_VALUES[realName].indexOf(name) === -1) { - special[name] = true; - } - } else if (DONT_MIX_VALUE.hasOwnProperty(realName)) { - if (DONT_MIX_VALUE[realName].test(name)) { - special[name] = true; - } - } - - break; - } - - case 'Function': { - let { name } = node; - - if (!vendorId) { - vendorId = resolveKeyword(name).vendor; - } - - if (name === 'rect') { - // there are 2 forms of rect: - // rect(<top>, <right>, <bottom>, <left>) - standart - // rect(<top> <right> <bottom> <left>) – backwards compatible syntax - // only the same form values can be merged - const hasComma = node.children.some((node) => - node.type === 'Operator' && node.value === ',' - ); - - if (!hasComma) { - name = 'rect-backward'; - } - } - - special[name + '()'] = true; - - // check nested tokens too - node.children.forEach(walk); - - break; - } - - case 'Dimension': { - const { unit } = node; - - if (/\\[09]/.test(unit)) { - iehack = RegExp.lastMatch; - } - - switch (unit) { - // is not supported until IE11 - case 'rem': - - // v* units is too buggy across browsers and better - // don't merge values with those units - case 'vw': - case 'vh': - case 'vmin': - case 'vmax': - case 'vm': // IE9 supporting "vm" instead of "vmin". - special[unit] = true; - break; - } - - break; - } - } - }); - - fingerprint = raw - ? '!' + fingerprintId++ - : '!' + Object.keys(special).sort() + '|' + iehack + vendorId; - break; - - case 'Raw': - fingerprint = '!' + declaration.value.value; - break; - - default: - fingerprint = generate(declaration.value); - } - - fingerprints[declarationId] = fingerprint; - } - - return propertyName + fingerprint; -} - -function needless(props, declaration, fingerprints) { - const property = resolveProperty(declaration.property); - - if (NEEDLESS_TABLE.hasOwnProperty(property.basename)) { - const table = NEEDLESS_TABLE[property.basename]; - - for (const entry of table) { - const ppre = getPropertyFingerprint(property.prefix + entry, declaration, fingerprints); - const prev = props.hasOwnProperty(ppre) ? props[ppre] : null; - - if (prev && (!declaration.important || prev.item.data.important)) { - return prev; - } - } - } -} - -function processRule(rule, item, list, props, fingerprints) { - const declarations = rule.block.children; - - declarations.forEachRight(function(declaration, declarationItem) { - const { property } = declaration; - const fingerprint = getPropertyFingerprint(property, declaration, fingerprints); - const prev = props[fingerprint]; - - if (prev && !dontRestructure.has(property)) { - if (declaration.important && !prev.item.data.important) { - props[fingerprint] = { - block: declarations, - item: declarationItem - }; - - prev.block.remove(prev.item); - - // TODO: use it when we can refer to several points in source - // declaration.loc = { - // primary: declaration.loc, - // merged: prev.item.data.loc - // }; - } else { - declarations.remove(declarationItem); - - // TODO: use it when we can refer to several points in source - // prev.item.data.loc = { - // primary: prev.item.data.loc, - // merged: declaration.loc - // }; - } - } else { - const prev = needless(props, declaration, fingerprints); - - if (prev) { - declarations.remove(declarationItem); - - // TODO: use it when we can refer to several points in source - // prev.item.data.loc = { - // primary: prev.item.data.loc, - // merged: declaration.loc - // }; - } else { - declaration.fingerprint = fingerprint; - - props[fingerprint] = { - block: declarations, - item: declarationItem - }; - } - } - }); - - if (declarations.isEmpty) { - list.remove(item); - } -} - -export default function restructBlock(ast) { - const stylesheetMap = {}; - const fingerprints = Object.create(null); - - walk(ast, { - visit: 'Rule', - reverse: true, - enter(node, item, list) { - const stylesheet = this.block || this.stylesheet; - const ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first.id; - let ruleMap; - let props; - - if (!stylesheetMap.hasOwnProperty(stylesheet.id)) { - ruleMap = {}; - stylesheetMap[stylesheet.id] = ruleMap; - } else { - ruleMap = stylesheetMap[stylesheet.id]; - } - - if (ruleMap.hasOwnProperty(ruleId)) { - props = ruleMap[ruleId]; - } else { - props = {}; - ruleMap[ruleId] = props; - } - - processRule.call(this, node, item, list, props, fingerprints); - } - }); -}; diff --git a/node_modules/csso/lib/restructure/7-mergeRuleset.js b/node_modules/csso/lib/restructure/7-mergeRuleset.js deleted file mode 100644 index 8a4d5438..00000000 --- a/node_modules/csso/lib/restructure/7-mergeRuleset.js +++ /dev/null @@ -1,86 +0,0 @@ -import { walk } from 'css-tree'; -import { unsafeToSkipNode, isEqualDeclarations} from './utils.js'; - -/* - At this step all rules has single simple selector. We try to join by equal - declaration blocks to first rule, e.g. - - .a { color: red } - b { ... } - .b { color: red } - -> - .a, .b { color: red } - b { ... } -*/ - -function processRule(node, item, list) { - const selectors = node.prelude.children; - const declarations = node.block.children; - const nodeCompareMarker = selectors.first.compareMarker; - const skippedCompareMarkers = {}; - - list.nextUntil(item.next, function(next, nextItem) { - // skip non-ruleset node if safe - if (next.type !== 'Rule') { - return unsafeToSkipNode.call(selectors, next); - } - - if (node.pseudoSignature !== next.pseudoSignature) { - return true; - } - - const nextFirstSelector = next.prelude.children.head; - const nextDeclarations = next.block.children; - const nextCompareMarker = nextFirstSelector.data.compareMarker; - - // if next ruleset has same marked as one of skipped then stop joining - if (nextCompareMarker in skippedCompareMarkers) { - return true; - } - - // try to join by selectors - if (selectors.head === selectors.tail) { - if (selectors.first.id === nextFirstSelector.data.id) { - declarations.appendList(nextDeclarations); - list.remove(nextItem); - return; - } - } - - // try to join by properties - if (isEqualDeclarations(declarations, nextDeclarations)) { - const nextStr = nextFirstSelector.data.id; - - selectors.some((data, item) => { - const curStr = data.id; - - if (nextStr < curStr) { - selectors.insert(nextFirstSelector, item); - return true; - } - - if (!item.next) { - selectors.insert(nextFirstSelector); - return true; - } - }); - - list.remove(nextItem); - return; - } - - // go to next ruleset if current one can be skipped (has no equal specificity nor element selector) - if (nextCompareMarker === nodeCompareMarker) { - return true; - } - - skippedCompareMarkers[nextCompareMarker] = true; - }); -} - -export default function mergeRule(ast) { - walk(ast, { - visit: 'Rule', - enter: processRule - }); -}; diff --git a/node_modules/csso/lib/restructure/8-restructRuleset.js b/node_modules/csso/lib/restructure/8-restructRuleset.js deleted file mode 100644 index c9cbf094..00000000 --- a/node_modules/csso/lib/restructure/8-restructRuleset.js +++ /dev/null @@ -1,176 +0,0 @@ -import { List, walk } from 'css-tree'; -import { - unsafeToSkipNode, - isEqualSelectors, - compareDeclarations, - addSelectors -} from './utils.js'; - -function calcSelectorLength(list) { - return list.reduce((res, data) => res + data.id.length + 1, 0) - 1; -} - -function calcDeclarationsLength(tokens) { - let length = 0; - - for (const token of tokens) { - length += token.length; - } - - return ( - length + // declarations - tokens.length - 1 // delimeters - ); -} - -function processRule(node, item, list) { - const avoidRulesMerge = this.block !== null ? this.block.avoidRulesMerge : false; - const selectors = node.prelude.children; - const block = node.block; - const disallowDownMarkers = Object.create(null); - let allowMergeUp = true; - let allowMergeDown = true; - - list.prevUntil(item.prev, function(prev, prevItem) { - const prevBlock = prev.block; - const prevType = prev.type; - - if (prevType !== 'Rule') { - const unsafe = unsafeToSkipNode.call(selectors, prev); - - if (!unsafe && prevType === 'Atrule' && prevBlock) { - walk(prevBlock, { - visit: 'Rule', - enter(node) { - node.prelude.children.forEach((data) => { - disallowDownMarkers[data.compareMarker] = true; - }); - } - }); - } - - return unsafe; - } - - if (node.pseudoSignature !== prev.pseudoSignature) { - return true; - } - - const prevSelectors = prev.prelude.children; - - allowMergeDown = !prevSelectors.some((selector) => - selector.compareMarker in disallowDownMarkers - ); - - // try prev ruleset if simpleselectors has no equal specifity and element selector - if (!allowMergeDown && !allowMergeUp) { - return true; - } - - // try to join by selectors - if (allowMergeUp && isEqualSelectors(prevSelectors, selectors)) { - prevBlock.children.appendList(block.children); - list.remove(item); - - return true; - } - - // try to join by properties - const diff = compareDeclarations(block.children, prevBlock.children); - - // console.log(diff.eq, diff.ne1, diff.ne2); - - if (diff.eq.length) { - if (!diff.ne1.length && !diff.ne2.length) { - // equal blocks - if (allowMergeDown) { - addSelectors(selectors, prevSelectors); - list.remove(prevItem); - } - - return true; - } else if (!avoidRulesMerge) { /* probably we don't need to prevent those merges for @keyframes - TODO: need to be checked */ - - if (diff.ne1.length && !diff.ne2.length) { - // prevBlock is subset block - const selectorLength = calcSelectorLength(selectors); - const blockLength = calcDeclarationsLength(diff.eq); // declarations length - - if (allowMergeUp && selectorLength < blockLength) { - addSelectors(prevSelectors, selectors); - block.children.fromArray(diff.ne1); - } - } else if (!diff.ne1.length && diff.ne2.length) { - // node is subset of prevBlock - const selectorLength = calcSelectorLength(prevSelectors); - const blockLength = calcDeclarationsLength(diff.eq); // declarations length - - if (allowMergeDown && selectorLength < blockLength) { - addSelectors(selectors, prevSelectors); - prevBlock.children.fromArray(diff.ne2); - } - } else { - // diff.ne1.length && diff.ne2.length - // extract equal block - const newSelector = { - type: 'SelectorList', - loc: null, - children: addSelectors(prevSelectors.copy(), selectors) - }; - const newBlockLength = calcSelectorLength(newSelector.children) + 2; // selectors length + curly braces length - const blockLength = calcDeclarationsLength(diff.eq); // declarations length - - // create new ruleset if declarations length greater than - // ruleset description overhead - if (blockLength >= newBlockLength) { - const newItem = list.createItem({ - type: 'Rule', - loc: null, - prelude: newSelector, - block: { - type: 'Block', - loc: null, - children: new List().fromArray(diff.eq) - }, - pseudoSignature: node.pseudoSignature - }); - - block.children.fromArray(diff.ne1); - prevBlock.children.fromArray(diff.ne2overrided); - - if (allowMergeUp) { - list.insert(newItem, prevItem); - } else { - list.insert(newItem, item); - } - - return true; - } - } - } - } - - if (allowMergeUp) { - // TODO: disallow up merge only if any property interception only (i.e. diff.ne2overrided.length > 0); - // await property families to find property interception correctly - allowMergeUp = !prevSelectors.some((prevSelector) => - selectors.some((selector) => - selector.compareMarker === prevSelector.compareMarker - ) - ); - } - - prevSelectors.forEach((data) => { - disallowDownMarkers[data.compareMarker] = true; - }); - }); -} - -export default function restructRule(ast) { - walk(ast, { - visit: 'Rule', - reverse: true, - enter: processRule - }); -}; diff --git a/node_modules/csso/lib/restructure/index.js b/node_modules/csso/lib/restructure/index.js deleted file mode 100644 index 62c93528..00000000 --- a/node_modules/csso/lib/restructure/index.js +++ /dev/null @@ -1,35 +0,0 @@ -import prepare from './prepare/index.js'; -import mergeAtrule from './1-mergeAtrule.js'; -import initialMergeRuleset from './2-initialMergeRuleset.js'; -import disjoinRuleset from './3-disjoinRuleset.js'; -import restructShorthand from './4-restructShorthand.js'; -import restructBlock from './6-restructBlock.js'; -import mergeRuleset from './7-mergeRuleset.js'; -import restructRuleset from './8-restructRuleset.js'; - -export default function(ast, options) { - // prepare ast for restructing - const indexer = prepare(ast, options); - options.logger('prepare', ast); - - mergeAtrule(ast, options); - options.logger('mergeAtrule', ast); - - initialMergeRuleset(ast); - options.logger('initialMergeRuleset', ast); - - disjoinRuleset(ast); - options.logger('disjoinRuleset', ast); - - restructShorthand(ast, indexer); - options.logger('restructShorthand', ast); - - restructBlock(ast); - options.logger('restructBlock', ast); - - mergeRuleset(ast); - options.logger('mergeRuleset', ast); - - restructRuleset(ast); - options.logger('restructRuleset', ast); -}; diff --git a/node_modules/csso/lib/restructure/prepare/createDeclarationIndexer.js b/node_modules/csso/lib/restructure/prepare/createDeclarationIndexer.js deleted file mode 100644 index 227f8abf..00000000 --- a/node_modules/csso/lib/restructure/prepare/createDeclarationIndexer.js +++ /dev/null @@ -1,31 +0,0 @@ -import { generate } from 'css-tree'; - -class Index { - constructor() { - this.map = new Map(); - } - resolve(str) { - let index = this.map.get(str); - - if (index === undefined) { - index = this.map.size + 1; - this.map.set(str, index); - } - - return index; - } -}; - -export default function createDeclarationIndexer() { - const ids = new Index(); - - return function markDeclaration(node) { - const id = generate(node); - - node.id = ids.resolve(id); - node.length = id.length; - node.fingerprint = null; - - return node; - }; -}; diff --git a/node_modules/csso/lib/restructure/prepare/index.js b/node_modules/csso/lib/restructure/prepare/index.js deleted file mode 100644 index fc08082e..00000000 --- a/node_modules/csso/lib/restructure/prepare/index.js +++ /dev/null @@ -1,41 +0,0 @@ -import { walk, generate, keyword as resolveKeyword } from 'css-tree'; -import createDeclarationIndexer from './createDeclarationIndexer.js'; -import processSelector from './processSelector.js'; - -export default function prepare(ast, options) { - const markDeclaration = createDeclarationIndexer(); - - walk(ast, { - visit: 'Rule', - enter(node) { - node.block.children.forEach(markDeclaration); - processSelector(node, options.usage); - } - }); - - walk(ast, { - visit: 'Atrule', - enter(node) { - if (node.prelude) { - node.prelude.id = null; // pre-init property to avoid multiple hidden class for generate - node.prelude.id = generate(node.prelude); - } - - // compare keyframe selectors by its values - // NOTE: still no clarification about problems with keyframes selector grouping (issue #197) - if (resolveKeyword(node.name).basename === 'keyframes') { - node.block.avoidRulesMerge = true; /* probably we don't need to prevent those merges for @keyframes - TODO: need to be checked */ - node.block.children.forEach(function(rule) { - rule.prelude.children.forEach(function(simpleselector) { - simpleselector.compareMarker = simpleselector.id; - }); - }); - } - } - }); - - return { - declaration: markDeclaration - }; -}; diff --git a/node_modules/csso/lib/restructure/prepare/processSelector.js b/node_modules/csso/lib/restructure/prepare/processSelector.js deleted file mode 100644 index 55a4fed8..00000000 --- a/node_modules/csso/lib/restructure/prepare/processSelector.js +++ /dev/null @@ -1,97 +0,0 @@ -import { generate } from 'css-tree'; -import specificity from './specificity.js'; - -const nonFreezePseudoElements = new Set([ - 'first-letter', - 'first-line', - 'after', - 'before' -]); -const nonFreezePseudoClasses = new Set([ - 'link', - 'visited', - 'hover', - 'active', - 'first-letter', - 'first-line', - 'after', - 'before' -]); - -export default function processSelector(node, usageData) { - const pseudos = new Set(); - - node.prelude.children.forEach(function(simpleSelector) { - let tagName = '*'; - let scope = 0; - - simpleSelector.children.forEach(function(node) { - switch (node.type) { - case 'ClassSelector': - if (usageData && usageData.scopes) { - const classScope = usageData.scopes[node.name] || 0; - - if (scope !== 0 && classScope !== scope) { - throw new Error('Selector can\'t has classes from different scopes: ' + generate(simpleSelector)); - } - - scope = classScope; - } - - break; - - case 'PseudoClassSelector': { - const name = node.name.toLowerCase(); - - if (!nonFreezePseudoClasses.has(name)) { - pseudos.add(`:${name}`); - } - - break; - } - - case 'PseudoElementSelector': { - const name = node.name.toLowerCase(); - - if (!nonFreezePseudoElements.has(name)) { - pseudos.add(`::${name}`); - } - - break; - } - - case 'TypeSelector': - tagName = node.name.toLowerCase(); - break; - - case 'AttributeSelector': - if (node.flags) { - pseudos.add(`[${node.flags.toLowerCase()}]`); - } - - break; - - case 'Combinator': - tagName = '*'; - break; - } - }); - - simpleSelector.compareMarker = specificity(simpleSelector).toString(); - simpleSelector.id = null; // pre-init property to avoid multiple hidden class - simpleSelector.id = generate(simpleSelector); - - if (scope) { - simpleSelector.compareMarker += ':' + scope; - } - - if (tagName !== '*') { - simpleSelector.compareMarker += ',' + tagName; - } - }); - - // add property to all rule nodes to avoid multiple hidden class - node.pseudoSignature = pseudos.size > 0 - ? [...pseudos].sort().join(',') - : false; -}; diff --git a/node_modules/csso/lib/restructure/prepare/specificity.js b/node_modules/csso/lib/restructure/prepare/specificity.js deleted file mode 100644 index 6fa4e5ab..00000000 --- a/node_modules/csso/lib/restructure/prepare/specificity.js +++ /dev/null @@ -1,131 +0,0 @@ -import { parse } from 'css-tree'; - -function ensureSelectorList(node) { - if (node.type === 'Raw') { - return parse(node.value, { context: 'selectorList' }); - } - - return node; -} - -function maxSpecificity(a, b) { - for (let i = 0; i < 3; i++) { - if (a[i] !== b[i]) { - return a[i] > b[i] ? a : b; - } - } - - return a; -} - -function maxSelectorListSpecificity(selectorList) { - return ensureSelectorList(selectorList).children.reduce( - (result, node) => maxSpecificity(specificity(node), result), - [0, 0, 0] - ); -} - -// §16. Calculating a selector’s specificity -// https://www.w3.org/TR/selectors-4/#specificity-rules -function specificity(simpleSelector) { - let A = 0; - let B = 0; - let C = 0; - - // A selector’s specificity is calculated for a given element as follows: - simpleSelector.children.forEach((node) => { - switch (node.type) { - // count the number of ID selectors in the selector (= A) - case 'IdSelector': - A++; - break; - - // count the number of class selectors, attributes selectors, ... - case 'ClassSelector': - case 'AttributeSelector': - B++; - break; - - // ... and pseudo-classes in the selector (= B) - case 'PseudoClassSelector': - switch (node.name.toLowerCase()) { - // The specificity of an :is(), :not(), or :has() pseudo-class is replaced - // by the specificity of the most specific complex selector in its selector list argument. - case 'not': - case 'has': - case 'is': - // :matches() is used before it was renamed to :is() - // https://github.com/w3c/csswg-drafts/issues/3258 - case 'matches': - // Older browsers support :is() functionality as prefixed pseudo-class :any() - // https://developer.mozilla.org/en-US/docs/Web/CSS/:is - case '-webkit-any': - case '-moz-any': { - const [a, b, c] = maxSelectorListSpecificity(node.children.first); - - A += a; - B += b; - C += c; - - break; - } - - // Analogously, the specificity of an :nth-child() or :nth-last-child() selector - // is the specificity of the pseudo class itself (counting as one pseudo-class selector) - // plus the specificity of the most specific complex selector in its selector list argument (if any). - case 'nth-child': - case 'nth-last-child': { - const arg = node.children.first; - - if (arg.type === 'Nth' && arg.selector) { - const [a, b, c] = maxSelectorListSpecificity(arg.selector); - - A += a; - B += b + 1; - C += c; - } else { - B++; - } - - break; - } - - // The specificity of a :where() pseudo-class is replaced by zero. - case 'where': - break; - - // The four Level 2 pseudo-elements (::before, ::after, ::first-line, and ::first-letter) may, - // for legacy reasons, be represented using the <pseudo-class-selector> grammar, - // with only a single ":" character at their start. - // https://www.w3.org/TR/selectors-4/#single-colon-pseudos - case 'before': - case 'after': - case 'first-line': - case 'first-letter': - C++; - break; - - default: - B++; - } - break; - - // count the number of type selectors ... - case 'TypeSelector': - // ignore the universal selector - if (!node.name.endsWith('*')) { - C++; - } - break; - - // ... and pseudo-elements in the selector (= C) - case 'PseudoElementSelector': - C++; - break; - } - }); - - return [A, B, C]; -}; - -export default specificity; diff --git a/node_modules/csso/lib/restructure/utils.js b/node_modules/csso/lib/restructure/utils.js deleted file mode 100644 index 792cc59b..00000000 --- a/node_modules/csso/lib/restructure/utils.js +++ /dev/null @@ -1,142 +0,0 @@ -const { hasOwnProperty } = Object.prototype; - -export function isEqualSelectors(a, b) { - let cursor1 = a.head; - let cursor2 = b.head; - - while (cursor1 !== null && cursor2 !== null && cursor1.data.id === cursor2.data.id) { - cursor1 = cursor1.next; - cursor2 = cursor2.next; - } - - return cursor1 === null && cursor2 === null; -} - -export function isEqualDeclarations(a, b) { - let cursor1 = a.head; - let cursor2 = b.head; - - while (cursor1 !== null && cursor2 !== null && cursor1.data.id === cursor2.data.id) { - cursor1 = cursor1.next; - cursor2 = cursor2.next; - } - - return cursor1 === null && cursor2 === null; -} - -export function compareDeclarations(declarations1, declarations2) { - const result = { - eq: [], - ne1: [], - ne2: [], - ne2overrided: [] - }; - - const fingerprints = Object.create(null); - const declarations2hash = Object.create(null); - - for (let cursor = declarations2.head; cursor; cursor = cursor.next) { - declarations2hash[cursor.data.id] = true; - } - - for (let cursor = declarations1.head; cursor; cursor = cursor.next) { - const data = cursor.data; - - if (data.fingerprint) { - fingerprints[data.fingerprint] = data.important; - } - - if (declarations2hash[data.id]) { - declarations2hash[data.id] = false; - result.eq.push(data); - } else { - result.ne1.push(data); - } - } - - for (let cursor = declarations2.head; cursor; cursor = cursor.next) { - const data = cursor.data; - - if (declarations2hash[data.id]) { - // when declarations1 has an overriding declaration, this is not a difference - // unless no !important is used on prev and !important is used on the following - if (!hasOwnProperty.call(fingerprints, data.fingerprint) || - (!fingerprints[data.fingerprint] && data.important)) { - result.ne2.push(data); - } - - result.ne2overrided.push(data); - } - } - - return result; -} - -export function addSelectors(dest, source) { - source.forEach((sourceData) => { - const newStr = sourceData.id; - let cursor = dest.head; - - while (cursor) { - const nextStr = cursor.data.id; - - if (nextStr === newStr) { - return; - } - - if (nextStr > newStr) { - break; - } - - cursor = cursor.next; - } - - dest.insert(dest.createItem(sourceData), cursor); - }); - - return dest; -} - -// check if simpleselectors has no equal specificity and element selector -export function hasSimilarSelectors(selectors1, selectors2) { - let cursor1 = selectors1.head; - - while (cursor1 !== null) { - let cursor2 = selectors2.head; - - while (cursor2 !== null) { - if (cursor1.data.compareMarker === cursor2.data.compareMarker) { - return true; - } - - cursor2 = cursor2.next; - } - - cursor1 = cursor1.next; - } - - return false; -} - -// test node can't to be skipped -export function unsafeToSkipNode(node) { - switch (node.type) { - case 'Rule': - // unsafe skip ruleset with selector similarities - return hasSimilarSelectors(node.prelude.children, this); - - case 'Atrule': - // can skip at-rules with blocks - if (node.block) { - // unsafe skip at-rule if block contains something unsafe to skip - return node.block.children.some(unsafeToSkipNode, this); - } - break; - - case 'Declaration': - return false; - } - - // unsafe by default - return true; -} diff --git a/node_modules/csso/lib/syntax.js b/node_modules/csso/lib/syntax.js deleted file mode 100644 index 724bd0fb..00000000 --- a/node_modules/csso/lib/syntax.js +++ /dev/null @@ -1,60 +0,0 @@ -import { fork, string, url, tokenTypes as TYPE } from 'css-tree'; -import compress from './compress.js'; -import specificity from './restructure/prepare/specificity.js'; - -function encodeString(value) { - const stringApostrophe = string.encode(value, true); - const stringQuote = string.encode(value); - - return stringApostrophe.length < stringQuote.length - ? stringApostrophe - : stringQuote; -} - -const { - lexer, - tokenize, - parse, - generate, - walk, - find, - findLast, - findAll, - fromPlainObject, - toPlainObject -} = fork({ - node: { - String: { - generate(node) { - this.token(TYPE.String, encodeString(node.value)); - } - }, - Url: { - generate(node) { - const encodedUrl = url.encode(node.value); - const string = encodeString(node.value); - - this.token(TYPE.Url, - encodedUrl.length <= string.length + 5 /* "url()".length */ - ? encodedUrl - : 'url(' + string + ')' - ); - } - } - } -}); - -export { - lexer, - tokenize, - parse, - generate, - walk, - find, - findLast, - findAll, - fromPlainObject, - toPlainObject, - specificity, - compress -}; diff --git a/node_modules/csso/lib/usage.js b/node_modules/csso/lib/usage.js deleted file mode 100644 index 1618e931..00000000 --- a/node_modules/csso/lib/usage.js +++ /dev/null @@ -1,71 +0,0 @@ -const { hasOwnProperty } = Object.prototype; - -function buildMap(list, caseInsensitive) { - const map = Object.create(null); - - if (!Array.isArray(list)) { - return null; - } - - for (let name of list) { - if (caseInsensitive) { - name = name.toLowerCase(); - } - - map[name] = true; - } - - return map; -} - -function buildList(data) { - if (!data) { - return null; - } - - const tags = buildMap(data.tags, true); - const ids = buildMap(data.ids); - const classes = buildMap(data.classes); - - if (tags === null && - ids === null && - classes === null) { - return null; - } - - return { - tags, - ids, - classes - }; -} - -export function buildIndex(data) { - let scopes = false; - - if (data.scopes && Array.isArray(data.scopes)) { - scopes = Object.create(null); - - for (let i = 0; i < data.scopes.length; i++) { - const list = data.scopes[i]; - - if (!list || !Array.isArray(list)) { - throw new Error('Wrong usage format'); - } - - for (const name of list) { - if (hasOwnProperty.call(scopes, name)) { - throw new Error(`Class can't be used for several scopes: ${name}`); - } - - scopes[name] = i + 1; - } - } - } - - return { - whitelist: buildList(data), - blacklist: buildList(data.blacklist), - scopes - }; -} diff --git a/node_modules/csso/lib/utils.js b/node_modules/csso/lib/utils.js deleted file mode 100644 index d41b7756..00000000 --- a/node_modules/csso/lib/utils.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as processSelector } from './restructure/prepare/processSelector.js'; -export * from './restructure/utils.js'; diff --git a/node_modules/csso/lib/version.js b/node_modules/csso/lib/version.js deleted file mode 100644 index dde3a83f..00000000 --- a/node_modules/csso/lib/version.js +++ /dev/null @@ -1,5 +0,0 @@ -import { createRequire } from 'module'; - -const require = createRequire(import.meta.url); - -export const { version } = require('../package.json'); diff --git a/node_modules/csso/node_modules/css-tree/LICENSE b/node_modules/csso/node_modules/css-tree/LICENSE deleted file mode 100644 index b46f3c4a..00000000 --- a/node_modules/csso/node_modules/css-tree/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2016-2022 by Roman Dvornov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/csso/node_modules/css-tree/README.md b/node_modules/csso/node_modules/css-tree/README.md deleted file mode 100644 index df8f2cea..00000000 --- a/node_modules/csso/node_modules/css-tree/README.md +++ /dev/null @@ -1,193 +0,0 @@ -<img align="right" width="111" height="111" - alt="CSSTree logo" - src="https://cloud.githubusercontent.com/assets/270491/19243723/6f9136c6-8f21-11e6-82ac-eeeee4c6c452.png"/> - -# CSSTree - -[](https://www.npmjs.com/package/css-tree) -[](https://github.com/csstree/csstree/actions/workflows/build.yml) -[](https://coveralls.io/github/csstree/csstree?branch=master) -[](https://www.npmjs.com/package/css-tree) -[](https://twitter.com/csstree) - -CSSTree is a tool set for CSS: [fast](https://github.com/postcss/benchmark) detailed parser (CSS → AST), walker (AST traversal), generator (AST → CSS) and lexer (validation and matching) based on specs and browser implementations. The main goal is to be efficient and W3C spec compliant, with focus on CSS analyzing and source-to-source transforming tasks. - -## Features - -- **Detailed parsing with an adjustable level of detail** - - By default CSSTree parses CSS as detailed as possible, i.e. each single logical part is representing with its own AST node (see [AST format](docs/ast.md) for all possible node types). The parsing detail level can be changed through [parser options](docs/parsing.md#parsesource-options), for example, you can disable parsing of selectors or declaration values for component parts. - -- **Tolerant to errors by design** - - Parser behaves as [spec says](https://www.w3.org/TR/css-syntax-3/#error-handling): "When errors occur in CSS, the parser attempts to recover gracefully, throwing away only the minimum amount of content before returning to parsing as normal". The only thing the parser departs from the specification is that it doesn't throw away bad content, but wraps it in a special node type (`Raw`) that allows processing it later. - -- **Fast and efficient** - - CSSTree is created with focus on performance and effective memory consumption. Therefore it's [one of the fastest CSS parsers](https://github.com/postcss/benchmark) at the moment. - -- **Syntax validation** - - The build-in lexer can test CSS against syntaxes defined by W3C. CSSTree uses [mdn/data](https://github.com/mdn/data/) as a basis for lexer's dictionaries and extends it with vendor specific and legacy syntaxes. Lexer can only check the declaration values currently, but this feature will be extended to other parts of the CSS in the future. - -## Projects using CSSTree - -- [Svelte](https://github.com/sveltejs/svelte) – Cybernetically enhanced web apps -- [SVGO](https://github.com/svg/svgo) – Node.js tool for optimizing SVG files -- [CSSO](https://github.com/css/csso) – CSS minifier with structural optimizations -- [NativeScript](https://github.com/NativeScript/NativeScript) – NativeScript empowers you to access native APIs from JavaScript directly -- [react-native-svg](https://github.com/react-native-svg/react-native-svg) – SVG library for React Native, React Native Web, and plain React web projects -- [penthouse](https://github.com/pocketjoso/penthouse) – Critical Path CSS Generator -- [Bit](https://github.com/teambit/bit) – Bit is the platform for collaborating on components -- and more... - -## Documentation - -- [AST format](docs/ast.md) -- [Parsing CSS → AST](docs/parsing.md) - - [parse(source[, options])](docs/parsing.md#parsesource-options) -- [Serialization AST → CSS](docs/generate.md) - - [generate(ast[, options])](docs/generate.md#generateast-options) -- [AST traversal](docs/traversal.md) - - [walk(ast, options)](docs/traversal.md#walkast-options) - - [find(ast, fn)](docs/traversal.md#findast-fn) - - [findLast(ast, fn)](docs/traversal.md#findlastast-fn) - - [findAll(ast, fn)](docs/traversal.md#findallast-fn) -- [Util functions](docs/utils.md) - - Value encoding & decoding - - [property(name)](docs/utils.md#propertyname) - - [keyword(name)](docs/utils.md#keywordname) - - [ident](docs/utils.md#ident) - - [string](docs/utils.md#string) - - [url](docs/utils.md#url) - - AST transforming - - [clone(ast)](docs/utils.md#cloneast) - - [fromPlainObject(object)](docs/utils.md#fromplainobjectobject) - - [toPlainObject(ast)](docs/utils.md#toplainobjectast) -- [Value Definition Syntax](docs/definition-syntax.md) - - [parse(source)](docs/definition-syntax.md#parsesource) - - [walk(node, options, context)](docs/definition-syntax.md#walknode-options-context) - - [generate(node, options)](docs/definition-syntax.md#generatenode-options) - - [AST format](docs/definition-syntax.md#ast-format) - -## Tools - -* [AST Explorer](https://astexplorer.net/#/gist/244e2fb4da940df52bf0f4b94277db44/e79aff44611020b22cfd9708f3a99ce09b7d67a8) – explore CSSTree AST format with zero setup -* [CSS syntax reference](https://csstree.github.io/docs/syntax.html) -* [CSS syntax validator](https://csstree.github.io/docs/validator.html) - -## Related projects - -* [csstree-validator](https://github.com/csstree/validator) – NPM package to validate CSS -* [stylelint-csstree-validator](https://github.com/csstree/stylelint-validator) – plugin for stylelint to validate CSS -* [Grunt plugin](https://github.com/sergejmueller/grunt-csstree-validator) -* [Gulp plugin](https://github.com/csstree/gulp-csstree) -* [Sublime plugin](https://github.com/csstree/SublimeLinter-contrib-csstree) -* [VS Code plugin](https://github.com/csstree/vscode-plugin) -* [Atom plugin](https://github.com/csstree/atom-plugin) - -## Usage - -Install with npm: - -``` -npm install css-tree -``` - -Basic usage: - -```js -import * as csstree from 'css-tree'; - -// parse CSS to AST -const ast = csstree.parse('.example { world: "!" }'); - -// traverse AST and modify it -csstree.walk(ast, (node) => { - if (node.type === 'ClassSelector' && node.name === 'example') { - node.name = 'hello'; - } -}); - -// generate CSS from AST -console.log(csstree.generate(ast)); -// .hello{world:"!"} -``` - -Syntax matching: - -```js -// parse CSS to AST as a declaration value -const ast = csstree.parse('red 1px solid', { context: 'value' }); - -// match to syntax of `border` property -const matchResult = csstree.lexer.matchProperty('border', ast); - -// check first value node is a <color> -console.log(matchResult.isType(ast.children.first, 'color')); -// true - -// get a type list matched to a node -console.log(matchResult.getTrace(ast.children.first)); -// [ { type: 'Property', name: 'border' }, -// { type: 'Type', name: 'color' }, -// { type: 'Type', name: 'named-color' }, -// { type: 'Keyword', name: 'red' } ] -``` - -### Exports - -Is it possible to import just a needed part of library like a parser or a walker. That's might useful for loading time or bundle size optimisations. - -```js -import * as tokenizer from 'css-tree/tokenizer'; -import * as parser from 'css-tree/parser'; -import * as walker from 'css-tree/walker'; -import * as lexer from 'css-tree/lexer'; -import * as definitionSyntax from 'css-tree/definition-syntax'; -import * as data from 'css-tree/definition-syntax-data'; -import * as dataPatch from 'css-tree/definition-syntax-data-patch'; -import * as utils from 'css-tree/utils'; -``` - -### Using in a browser - -Bundles are available for use in a browser: - -- `dist/csstree.js` – minified IIFE with `csstree` as global -```html -<script src="node_modules/css-tree/dist/csstree.js"></script> -<script> - csstree.parse('.example { color: green }'); -</script> -``` - -- `dist/csstree.esm.js` – minified ES module -```html -<script type="module"> - import { parse } from 'node_modules/css-tree/dist/csstree.esm.js' - parse('.example { color: green }'); -</script> -``` - -One of CDN services like `unpkg` or `jsDelivr` can be used. By default (for short path) a ESM version is exposing. For IIFE version a full path to a bundle should be specified: - -```html -<!-- ESM --> -<script type="module"> - import * as csstree from 'https://cdn.jsdelivr.net/npm/css-tree'; - import * as csstree from 'https://unpkg.com/css-tree'; -</script> - -<!-- IIFE with an export to global --> -<script src="https://cdn.jsdelivr.net/npm/css-tree/dist/csstree.js"></script> -<script src="https://unpkg.com/css-tree/dist/csstree.js"></script> -``` - -## Top level API - - - -## License - -MIT diff --git a/node_modules/csso/node_modules/css-tree/cjs/convertor/create.cjs b/node_modules/csso/node_modules/css-tree/cjs/convertor/create.cjs deleted file mode 100644 index 55c655b2..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/convertor/create.cjs +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -const List = require('../utils/List.cjs'); - -function createConvertor(walk) { - return { - fromPlainObject(ast) { - walk(ast, { - enter(node) { - if (node.children && node.children instanceof List.List === false) { - node.children = new List.List().fromArray(node.children); - } - } - }); - - return ast; - }, - toPlainObject(ast) { - walk(ast, { - leave(node) { - if (node.children && node.children instanceof List.List) { - node.children = node.children.toArray(); - } - } - }); - - return ast; - } - }; -} - -exports.createConvertor = createConvertor; diff --git a/node_modules/csso/node_modules/css-tree/cjs/convertor/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/convertor/index.cjs deleted file mode 100644 index 66542785..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/convertor/index.cjs +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -const create = require('./create.cjs'); -const index$1 = require('../walker/index.cjs'); - -const index = create.createConvertor(index$1); - -module.exports = index; diff --git a/node_modules/csso/node_modules/css-tree/cjs/data-patch.cjs b/node_modules/csso/node_modules/css-tree/cjs/data-patch.cjs deleted file mode 100644 index 9103ea4c..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/data-patch.cjs +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -const patch = require('../data/patch.json'); - -const patch$1 = patch; - -module.exports = patch$1; diff --git a/node_modules/csso/node_modules/css-tree/cjs/data.cjs b/node_modules/csso/node_modules/css-tree/cjs/data.cjs deleted file mode 100644 index e4a96670..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/data.cjs +++ /dev/null @@ -1,97 +0,0 @@ -'use strict'; - -const dataPatch = require('./data-patch.cjs'); - -const mdnAtrules = require('mdn-data/css/at-rules.json'); -const mdnProperties = require('mdn-data/css/properties.json'); -const mdnSyntaxes = require('mdn-data/css/syntaxes.json'); - -const extendSyntax = /^\s*\|\s*/; - -function preprocessAtrules(dict) { - const result = Object.create(null); - - for (const atruleName in dict) { - const atrule = dict[atruleName]; - let descriptors = null; - - if (atrule.descriptors) { - descriptors = Object.create(null); - - for (const descriptor in atrule.descriptors) { - descriptors[descriptor] = atrule.descriptors[descriptor].syntax; - } - } - - result[atruleName.substr(1)] = { - prelude: atrule.syntax.trim().replace(/\{(.|\s)+\}/, '').match(/^@\S+\s+([^;\{]*)/)[1].trim() || null, - descriptors - }; - } - - return result; -} - -function patchDictionary(dict, patchDict) { - const result = {}; - - // copy all syntaxes for an original dict - for (const key in dict) { - result[key] = dict[key].syntax || dict[key]; - } - - // apply a patch - for (const key in patchDict) { - if (key in dict) { - if (patchDict[key].syntax) { - result[key] = extendSyntax.test(patchDict[key].syntax) - ? result[key] + ' ' + patchDict[key].syntax.trim() - : patchDict[key].syntax; - } else { - delete result[key]; - } - } else { - if (patchDict[key].syntax) { - result[key] = patchDict[key].syntax.replace(extendSyntax, ''); - } - } - } - - return result; -} - -function patchAtrules(dict, patchDict) { - const result = {}; - - // copy all syntaxes for an original dict - for (const key in dict) { - const patchDescriptors = (patchDict[key] && patchDict[key].descriptors) || null; - - result[key] = { - prelude: key in patchDict && 'prelude' in patchDict[key] - ? patchDict[key].prelude - : dict[key].prelude || null, - descriptors: patchDictionary(dict[key].descriptors || {}, patchDescriptors || {}) - }; - } - - // apply a patch - for (const key in patchDict) { - if (!hasOwnProperty.call(dict, key)) { - result[key] = { - prelude: patchDict[key].prelude || null, - descriptors: patchDict[key].descriptors && patchDictionary({}, patchDict[key].descriptors) - }; - } - } - - return result; -} - -const definitions = { - types: patchDictionary(mdnSyntaxes, dataPatch.types), - atrules: patchAtrules(preprocessAtrules(mdnAtrules), dataPatch.atrules), - properties: patchDictionary(mdnProperties, dataPatch.properties) -}; - -module.exports = definitions; diff --git a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs b/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs deleted file mode 100644 index d24e7ced..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -const createCustomError = require('../utils/create-custom-error.cjs'); - -function SyntaxError(message, input, offset) { - return Object.assign(createCustomError.createCustomError('SyntaxError', message), { - input, - offset, - rawMessage: message, - message: message + '\n' + - ' ' + input + '\n' + - '--' + new Array((offset || input.length) + 1).join('-') + '^' - }); -} - -exports.SyntaxError = SyntaxError; diff --git a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/generate.cjs b/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/generate.cjs deleted file mode 100644 index 785af062..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/generate.cjs +++ /dev/null @@ -1,135 +0,0 @@ -'use strict'; - -function noop(value) { - return value; -} - -function generateMultiplier(multiplier) { - const { min, max, comma } = multiplier; - - if (min === 0 && max === 0) { - return comma ? '#?' : '*'; - } - - if (min === 0 && max === 1) { - return '?'; - } - - if (min === 1 && max === 0) { - return comma ? '#' : '+'; - } - - if (min === 1 && max === 1) { - return ''; - } - - return ( - (comma ? '#' : '') + - (min === max - ? '{' + min + '}' - : '{' + min + ',' + (max !== 0 ? max : '') + '}' - ) - ); -} - -function generateTypeOpts(node) { - switch (node.type) { - case 'Range': - return ( - ' [' + - (node.min === null ? '-∞' : node.min) + - ',' + - (node.max === null ? '∞' : node.max) + - ']' - ); - - default: - throw new Error('Unknown node type `' + node.type + '`'); - } -} - -function generateSequence(node, decorate, forceBraces, compact) { - const combinator = node.combinator === ' ' || compact ? node.combinator : ' ' + node.combinator + ' '; - const result = node.terms - .map(term => internalGenerate(term, decorate, forceBraces, compact)) - .join(combinator); - - if (node.explicit || forceBraces) { - return (compact || result[0] === ',' ? '[' : '[ ') + result + (compact ? ']' : ' ]'); - } - - return result; -} - -function internalGenerate(node, decorate, forceBraces, compact) { - let result; - - switch (node.type) { - case 'Group': - result = - generateSequence(node, decorate, forceBraces, compact) + - (node.disallowEmpty ? '!' : ''); - break; - - case 'Multiplier': - // return since node is a composition - return ( - internalGenerate(node.term, decorate, forceBraces, compact) + - decorate(generateMultiplier(node), node) - ); - - case 'Type': - result = '<' + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : '') + '>'; - break; - - case 'Property': - result = '<\'' + node.name + '\'>'; - break; - - case 'Keyword': - result = node.name; - break; - - case 'AtKeyword': - result = '@' + node.name; - break; - - case 'Function': - result = node.name + '('; - break; - - case 'String': - case 'Token': - result = node.value; - break; - - case 'Comma': - result = ','; - break; - - default: - throw new Error('Unknown node type `' + node.type + '`'); - } - - return decorate(result, node); -} - -function generate(node, options) { - let decorate = noop; - let forceBraces = false; - let compact = false; - - if (typeof options === 'function') { - decorate = options; - } else if (options) { - forceBraces = Boolean(options.forceBraces); - compact = Boolean(options.compact); - if (typeof options.decorate === 'function') { - decorate = options.decorate; - } - } - - return internalGenerate(node, decorate, forceBraces, compact); -} - -exports.generate = generate; diff --git a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/index.cjs deleted file mode 100644 index 0afb505c..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/index.cjs +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -const SyntaxError = require('./SyntaxError.cjs'); -const generate = require('./generate.cjs'); -const parse = require('./parse.cjs'); -const walk = require('./walk.cjs'); - - - -exports.SyntaxError = SyntaxError.SyntaxError; -exports.generate = generate.generate; -exports.parse = parse.parse; -exports.walk = walk.walk; diff --git a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/parse.cjs b/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/parse.cjs deleted file mode 100644 index 53eee015..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/parse.cjs +++ /dev/null @@ -1,588 +0,0 @@ -'use strict'; - -const tokenizer = require('./tokenizer.cjs'); - -const TAB = 9; -const N = 10; -const F = 12; -const R = 13; -const SPACE = 32; -const EXCLAMATIONMARK = 33; // ! -const NUMBERSIGN = 35; // # -const AMPERSAND = 38; // & -const APOSTROPHE = 39; // ' -const LEFTPARENTHESIS = 40; // ( -const RIGHTPARENTHESIS = 41; // ) -const ASTERISK = 42; // * -const PLUSSIGN = 43; // + -const COMMA = 44; // , -const HYPERMINUS = 45; // - -const LESSTHANSIGN = 60; // < -const GREATERTHANSIGN = 62; // > -const QUESTIONMARK = 63; // ? -const COMMERCIALAT = 64; // @ -const LEFTSQUAREBRACKET = 91; // [ -const RIGHTSQUAREBRACKET = 93; // ] -const LEFTCURLYBRACKET = 123; // { -const VERTICALLINE = 124; // | -const RIGHTCURLYBRACKET = 125; // } -const INFINITY = 8734; // ∞ -const NAME_CHAR = new Uint8Array(128).map((_, idx) => - /[a-zA-Z0-9\-]/.test(String.fromCharCode(idx)) ? 1 : 0 -); -const COMBINATOR_PRECEDENCE = { - ' ': 1, - '&&': 2, - '||': 3, - '|': 4 -}; - -function scanSpaces(tokenizer) { - return tokenizer.substringToPos( - tokenizer.findWsEnd(tokenizer.pos) - ); -} - -function scanWord(tokenizer) { - let end = tokenizer.pos; - - for (; end < tokenizer.str.length; end++) { - const code = tokenizer.str.charCodeAt(end); - if (code >= 128 || NAME_CHAR[code] === 0) { - break; - } - } - - if (tokenizer.pos === end) { - tokenizer.error('Expect a keyword'); - } - - return tokenizer.substringToPos(end); -} - -function scanNumber(tokenizer) { - let end = tokenizer.pos; - - for (; end < tokenizer.str.length; end++) { - const code = tokenizer.str.charCodeAt(end); - if (code < 48 || code > 57) { - break; - } - } - - if (tokenizer.pos === end) { - tokenizer.error('Expect a number'); - } - - return tokenizer.substringToPos(end); -} - -function scanString(tokenizer) { - const end = tokenizer.str.indexOf('\'', tokenizer.pos + 1); - - if (end === -1) { - tokenizer.pos = tokenizer.str.length; - tokenizer.error('Expect an apostrophe'); - } - - return tokenizer.substringToPos(end + 1); -} - -function readMultiplierRange(tokenizer) { - let min = null; - let max = null; - - tokenizer.eat(LEFTCURLYBRACKET); - - min = scanNumber(tokenizer); - - if (tokenizer.charCode() === COMMA) { - tokenizer.pos++; - if (tokenizer.charCode() !== RIGHTCURLYBRACKET) { - max = scanNumber(tokenizer); - } - } else { - max = min; - } - - tokenizer.eat(RIGHTCURLYBRACKET); - - return { - min: Number(min), - max: max ? Number(max) : 0 - }; -} - -function readMultiplier(tokenizer) { - let range = null; - let comma = false; - - switch (tokenizer.charCode()) { - case ASTERISK: - tokenizer.pos++; - - range = { - min: 0, - max: 0 - }; - - break; - - case PLUSSIGN: - tokenizer.pos++; - - range = { - min: 1, - max: 0 - }; - - break; - - case QUESTIONMARK: - tokenizer.pos++; - - range = { - min: 0, - max: 1 - }; - - break; - - case NUMBERSIGN: - tokenizer.pos++; - - comma = true; - - if (tokenizer.charCode() === LEFTCURLYBRACKET) { - range = readMultiplierRange(tokenizer); - } else if (tokenizer.charCode() === QUESTIONMARK) { - // https://www.w3.org/TR/css-values-4/#component-multipliers - // > the # and ? multipliers may be stacked as #? - // In this case just treat "#?" as a single multiplier - // { min: 0, max: 0, comma: true } - tokenizer.pos++; - range = { - min: 0, - max: 0 - }; - } else { - range = { - min: 1, - max: 0 - }; - } - - break; - - case LEFTCURLYBRACKET: - range = readMultiplierRange(tokenizer); - break; - - default: - return null; - } - - return { - type: 'Multiplier', - comma, - min: range.min, - max: range.max, - term: null - }; -} - -function maybeMultiplied(tokenizer, node) { - const multiplier = readMultiplier(tokenizer); - - if (multiplier !== null) { - multiplier.term = node; - - // https://www.w3.org/TR/css-values-4/#component-multipliers - // > The + and # multipliers may be stacked as +#; - // Represent "+#" as nested multipliers: - // { ...<multiplier #>, - // term: { - // ...<multipler +>, - // term: node - // } - // } - if (tokenizer.charCode() === NUMBERSIGN && - tokenizer.charCodeAt(tokenizer.pos - 1) === PLUSSIGN) { - return maybeMultiplied(tokenizer, multiplier); - } - - return multiplier; - } - - return node; -} - -function maybeToken(tokenizer) { - const ch = tokenizer.peek(); - - if (ch === '') { - return null; - } - - return { - type: 'Token', - value: ch - }; -} - -function readProperty(tokenizer) { - let name; - - tokenizer.eat(LESSTHANSIGN); - tokenizer.eat(APOSTROPHE); - - name = scanWord(tokenizer); - - tokenizer.eat(APOSTROPHE); - tokenizer.eat(GREATERTHANSIGN); - - return maybeMultiplied(tokenizer, { - type: 'Property', - name - }); -} - -// https://drafts.csswg.org/css-values-3/#numeric-ranges -// 4.1. Range Restrictions and Range Definition Notation -// -// Range restrictions can be annotated in the numeric type notation using CSS bracketed -// range notation—[min,max]—within the angle brackets, after the identifying keyword, -// indicating a closed range between (and including) min and max. -// For example, <integer [0, 10]> indicates an integer between 0 and 10, inclusive. -function readTypeRange(tokenizer) { - // use null for Infinity to make AST format JSON serializable/deserializable - let min = null; // -Infinity - let max = null; // Infinity - let sign = 1; - - tokenizer.eat(LEFTSQUAREBRACKET); - - if (tokenizer.charCode() === HYPERMINUS) { - tokenizer.peek(); - sign = -1; - } - - if (sign == -1 && tokenizer.charCode() === INFINITY) { - tokenizer.peek(); - } else { - min = sign * Number(scanNumber(tokenizer)); - - if (NAME_CHAR[tokenizer.charCode()] !== 0) { - min += scanWord(tokenizer); - } - } - - scanSpaces(tokenizer); - tokenizer.eat(COMMA); - scanSpaces(tokenizer); - - if (tokenizer.charCode() === INFINITY) { - tokenizer.peek(); - } else { - sign = 1; - - if (tokenizer.charCode() === HYPERMINUS) { - tokenizer.peek(); - sign = -1; - } - - max = sign * Number(scanNumber(tokenizer)); - - if (NAME_CHAR[tokenizer.charCode()] !== 0) { - max += scanWord(tokenizer); - } - } - - tokenizer.eat(RIGHTSQUAREBRACKET); - - return { - type: 'Range', - min, - max - }; -} - -function readType(tokenizer) { - let name; - let opts = null; - - tokenizer.eat(LESSTHANSIGN); - name = scanWord(tokenizer); - - if (tokenizer.charCode() === LEFTPARENTHESIS && - tokenizer.nextCharCode() === RIGHTPARENTHESIS) { - tokenizer.pos += 2; - name += '()'; - } - - if (tokenizer.charCodeAt(tokenizer.findWsEnd(tokenizer.pos)) === LEFTSQUAREBRACKET) { - scanSpaces(tokenizer); - opts = readTypeRange(tokenizer); - } - - tokenizer.eat(GREATERTHANSIGN); - - return maybeMultiplied(tokenizer, { - type: 'Type', - name, - opts - }); -} - -function readKeywordOrFunction(tokenizer) { - const name = scanWord(tokenizer); - - if (tokenizer.charCode() === LEFTPARENTHESIS) { - tokenizer.pos++; - - return { - type: 'Function', - name - }; - } - - return maybeMultiplied(tokenizer, { - type: 'Keyword', - name - }); -} - -function regroupTerms(terms, combinators) { - function createGroup(terms, combinator) { - return { - type: 'Group', - terms, - combinator, - disallowEmpty: false, - explicit: false - }; - } - - let combinator; - - combinators = Object.keys(combinators) - .sort((a, b) => COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]); - - while (combinators.length > 0) { - combinator = combinators.shift(); - - let i = 0; - let subgroupStart = 0; - - for (; i < terms.length; i++) { - const term = terms[i]; - - if (term.type === 'Combinator') { - if (term.value === combinator) { - if (subgroupStart === -1) { - subgroupStart = i - 1; - } - terms.splice(i, 1); - i--; - } else { - if (subgroupStart !== -1 && i - subgroupStart > 1) { - terms.splice( - subgroupStart, - i - subgroupStart, - createGroup(terms.slice(subgroupStart, i), combinator) - ); - i = subgroupStart + 1; - } - subgroupStart = -1; - } - } - } - - if (subgroupStart !== -1 && combinators.length) { - terms.splice( - subgroupStart, - i - subgroupStart, - createGroup(terms.slice(subgroupStart, i), combinator) - ); - } - } - - return combinator; -} - -function readImplicitGroup(tokenizer) { - const terms = []; - const combinators = {}; - let token; - let prevToken = null; - let prevTokenPos = tokenizer.pos; - - while (token = peek(tokenizer)) { - if (token.type !== 'Spaces') { - if (token.type === 'Combinator') { - // check for combinator in group beginning and double combinator sequence - if (prevToken === null || prevToken.type === 'Combinator') { - tokenizer.pos = prevTokenPos; - tokenizer.error('Unexpected combinator'); - } - - combinators[token.value] = true; - } else if (prevToken !== null && prevToken.type !== 'Combinator') { - combinators[' '] = true; // a b - terms.push({ - type: 'Combinator', - value: ' ' - }); - } - - terms.push(token); - prevToken = token; - prevTokenPos = tokenizer.pos; - } - } - - // check for combinator in group ending - if (prevToken !== null && prevToken.type === 'Combinator') { - tokenizer.pos -= prevTokenPos; - tokenizer.error('Unexpected combinator'); - } - - return { - type: 'Group', - terms, - combinator: regroupTerms(terms, combinators) || ' ', - disallowEmpty: false, - explicit: false - }; -} - -function readGroup(tokenizer) { - let result; - - tokenizer.eat(LEFTSQUAREBRACKET); - result = readImplicitGroup(tokenizer); - tokenizer.eat(RIGHTSQUAREBRACKET); - - result.explicit = true; - - if (tokenizer.charCode() === EXCLAMATIONMARK) { - tokenizer.pos++; - result.disallowEmpty = true; - } - - return result; -} - -function peek(tokenizer) { - let code = tokenizer.charCode(); - - if (code < 128 && NAME_CHAR[code] === 1) { - return readKeywordOrFunction(tokenizer); - } - - switch (code) { - case RIGHTSQUAREBRACKET: - // don't eat, stop scan a group - break; - - case LEFTSQUAREBRACKET: - return maybeMultiplied(tokenizer, readGroup(tokenizer)); - - case LESSTHANSIGN: - return tokenizer.nextCharCode() === APOSTROPHE - ? readProperty(tokenizer) - : readType(tokenizer); - - case VERTICALLINE: - return { - type: 'Combinator', - value: tokenizer.substringToPos( - tokenizer.pos + (tokenizer.nextCharCode() === VERTICALLINE ? 2 : 1) - ) - }; - - case AMPERSAND: - tokenizer.pos++; - tokenizer.eat(AMPERSAND); - - return { - type: 'Combinator', - value: '&&' - }; - - case COMMA: - tokenizer.pos++; - return { - type: 'Comma' - }; - - case APOSTROPHE: - return maybeMultiplied(tokenizer, { - type: 'String', - value: scanString(tokenizer) - }); - - case SPACE: - case TAB: - case N: - case R: - case F: - return { - type: 'Spaces', - value: scanSpaces(tokenizer) - }; - - case COMMERCIALAT: - code = tokenizer.nextCharCode(); - - if (code < 128 && NAME_CHAR[code] === 1) { - tokenizer.pos++; - return { - type: 'AtKeyword', - name: scanWord(tokenizer) - }; - } - - return maybeToken(tokenizer); - - case ASTERISK: - case PLUSSIGN: - case QUESTIONMARK: - case NUMBERSIGN: - case EXCLAMATIONMARK: - // prohibited tokens (used as a multiplier start) - break; - - case LEFTCURLYBRACKET: - // LEFTCURLYBRACKET is allowed since mdn/data uses it w/o quoting - // check next char isn't a number, because it's likely a disjoined multiplier - code = tokenizer.nextCharCode(); - - if (code < 48 || code > 57) { - return maybeToken(tokenizer); - } - - break; - - default: - return maybeToken(tokenizer); - } -} - -function parse(source) { - const tokenizer$1 = new tokenizer.Tokenizer(source); - const result = readImplicitGroup(tokenizer$1); - - if (tokenizer$1.pos !== source.length) { - tokenizer$1.error('Unexpected input'); - } - - // reduce redundant groups with single group term - if (result.terms.length === 1 && result.terms[0].type === 'Group') { - return result.terms[0]; - } - - return result; -} - -exports.parse = parse; diff --git a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs b/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs deleted file mode 100644 index 6ab5ece2..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -const SyntaxError = require('./SyntaxError.cjs'); - -const TAB = 9; -const N = 10; -const F = 12; -const R = 13; -const SPACE = 32; - -class Tokenizer { - constructor(str) { - this.str = str; - this.pos = 0; - } - charCodeAt(pos) { - return pos < this.str.length ? this.str.charCodeAt(pos) : 0; - } - charCode() { - return this.charCodeAt(this.pos); - } - nextCharCode() { - return this.charCodeAt(this.pos + 1); - } - nextNonWsCode(pos) { - return this.charCodeAt(this.findWsEnd(pos)); - } - findWsEnd(pos) { - for (; pos < this.str.length; pos++) { - const code = this.str.charCodeAt(pos); - if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) { - break; - } - } - - return pos; - } - substringToPos(end) { - return this.str.substring(this.pos, this.pos = end); - } - eat(code) { - if (this.charCode() !== code) { - this.error('Expect `' + String.fromCharCode(code) + '`'); - } - - this.pos++; - } - peek() { - return this.pos < this.str.length ? this.str.charAt(this.pos++) : ''; - } - error(message) { - throw new SyntaxError.SyntaxError(message, this.str, this.pos); - } -} - -exports.Tokenizer = Tokenizer; diff --git a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/walk.cjs b/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/walk.cjs deleted file mode 100644 index 728a446d..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/definition-syntax/walk.cjs +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -const noop = function() {}; - -function ensureFunction(value) { - return typeof value === 'function' ? value : noop; -} - -function walk(node, options, context) { - function walk(node) { - enter.call(context, node); - - switch (node.type) { - case 'Group': - node.terms.forEach(walk); - break; - - case 'Multiplier': - walk(node.term); - break; - - case 'Type': - case 'Property': - case 'Keyword': - case 'AtKeyword': - case 'Function': - case 'String': - case 'Token': - case 'Comma': - break; - - default: - throw new Error('Unknown type: ' + node.type); - } - - leave.call(context, node); - } - - let enter = noop; - let leave = noop; - - if (typeof options === 'function') { - enter = options; - } else if (options) { - enter = ensureFunction(options.enter); - leave = ensureFunction(options.leave); - } - - if (enter === noop && leave === noop) { - throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\'t a function'); - } - - walk(node); -} - -exports.walk = walk; diff --git a/node_modules/csso/node_modules/css-tree/cjs/generator/create.cjs b/node_modules/csso/node_modules/css-tree/cjs/generator/create.cjs deleted file mode 100644 index ab80f3ac..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/generator/create.cjs +++ /dev/null @@ -1,103 +0,0 @@ -'use strict'; - -const index = require('../tokenizer/index.cjs'); -const sourceMap = require('./sourceMap.cjs'); -const tokenBefore = require('./token-before.cjs'); -const types = require('../tokenizer/types.cjs'); - -const REVERSESOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\) - -function processChildren(node, delimeter) { - if (typeof delimeter === 'function') { - let prev = null; - - node.children.forEach(node => { - if (prev !== null) { - delimeter.call(this, prev); - } - - this.node(node); - prev = node; - }); - - return; - } - - node.children.forEach(this.node, this); -} - -function processChunk(chunk) { - index.tokenize(chunk, (type, start, end) => { - this.token(type, chunk.slice(start, end)); - }); -} - -function createGenerator(config) { - const types$1 = new Map(); - - for (let name in config.node) { - const item = config.node[name]; - const fn = item.generate || item; - - if (typeof fn === 'function') { - types$1.set(name, item.generate || item); - } - } - - return function(node, options) { - let buffer = ''; - let prevCode = 0; - let handlers = { - node(node) { - if (types$1.has(node.type)) { - types$1.get(node.type).call(publicApi, node); - } else { - throw new Error('Unknown node type: ' + node.type); - } - }, - tokenBefore: tokenBefore.safe, - token(type, value) { - prevCode = this.tokenBefore(prevCode, type, value); - - this.emit(value, type, false); - - if (type === types.Delim && value.charCodeAt(0) === REVERSESOLIDUS) { - this.emit('\n', types.WhiteSpace, true); - } - }, - emit(value) { - buffer += value; - }, - result() { - return buffer; - } - }; - - if (options) { - if (typeof options.decorator === 'function') { - handlers = options.decorator(handlers); - } - - if (options.sourceMap) { - handlers = sourceMap.generateSourceMap(handlers); - } - - if (options.mode in tokenBefore) { - handlers.tokenBefore = tokenBefore[options.mode]; - } - } - - const publicApi = { - node: (node) => handlers.node(node), - children: processChildren, - token: (type, value) => handlers.token(type, value), - tokenize: processChunk - }; - - handlers.node(node); - - return handlers.result(); - }; -} - -exports.createGenerator = createGenerator; diff --git a/node_modules/csso/node_modules/css-tree/cjs/generator/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/generator/index.cjs deleted file mode 100644 index 5c87cd34..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/generator/index.cjs +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -const create = require('./create.cjs'); -const generator = require('../syntax/config/generator.cjs'); - -const index = create.createGenerator(generator); - -module.exports = index; diff --git a/node_modules/csso/node_modules/css-tree/cjs/generator/sourceMap.cjs b/node_modules/csso/node_modules/css-tree/cjs/generator/sourceMap.cjs deleted file mode 100644 index efbc5b9e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/generator/sourceMap.cjs +++ /dev/null @@ -1,96 +0,0 @@ -'use strict'; - -const sourceMapGenerator_js = require('source-map-js/lib/source-map-generator.js'); - -const trackNodes = new Set(['Atrule', 'Selector', 'Declaration']); - -function generateSourceMap(handlers) { - const map = new sourceMapGenerator_js.SourceMapGenerator(); - const generated = { - line: 1, - column: 0 - }; - const original = { - line: 0, // should be zero to add first mapping - column: 0 - }; - const activatedGenerated = { - line: 1, - column: 0 - }; - const activatedMapping = { - generated: activatedGenerated - }; - let line = 1; - let column = 0; - let sourceMappingActive = false; - - const origHandlersNode = handlers.node; - handlers.node = function(node) { - if (node.loc && node.loc.start && trackNodes.has(node.type)) { - const nodeLine = node.loc.start.line; - const nodeColumn = node.loc.start.column - 1; - - if (original.line !== nodeLine || - original.column !== nodeColumn) { - original.line = nodeLine; - original.column = nodeColumn; - - generated.line = line; - generated.column = column; - - if (sourceMappingActive) { - sourceMappingActive = false; - if (generated.line !== activatedGenerated.line || - generated.column !== activatedGenerated.column) { - map.addMapping(activatedMapping); - } - } - - sourceMappingActive = true; - map.addMapping({ - source: node.loc.source, - original, - generated - }); - } - } - - origHandlersNode.call(this, node); - - if (sourceMappingActive && trackNodes.has(node.type)) { - activatedGenerated.line = line; - activatedGenerated.column = column; - } - }; - - const origHandlersEmit = handlers.emit; - handlers.emit = function(value, type, auto) { - for (let i = 0; i < value.length; i++) { - if (value.charCodeAt(i) === 10) { // \n - line++; - column = 0; - } else { - column++; - } - } - - origHandlersEmit(value, type, auto); - }; - - const origHandlersResult = handlers.result; - handlers.result = function() { - if (sourceMappingActive) { - map.addMapping(activatedMapping); - } - - return { - css: origHandlersResult(), - map - }; - }; - - return handlers; -} - -exports.generateSourceMap = generateSourceMap; diff --git a/node_modules/csso/node_modules/css-tree/cjs/generator/token-before.cjs b/node_modules/csso/node_modules/css-tree/cjs/generator/token-before.cjs deleted file mode 100644 index 87bf4a3e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/generator/token-before.cjs +++ /dev/null @@ -1,170 +0,0 @@ -'use strict'; - -const types = require('../tokenizer/types.cjs'); - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) - -const code = (type, value) => { - if (type === types.Delim) { - type = value; - } - - if (typeof type === 'string') { - const charCode = type.charCodeAt(0); - return charCode > 0x7F ? 0x8000 : charCode << 8; - } - - return type; -}; - -// https://www.w3.org/TR/css-syntax-3/#serialization -// The only requirement for serialization is that it must "round-trip" with parsing, -// that is, parsing the stylesheet must produce the same data structures as parsing, -// serializing, and parsing again, except for consecutive <whitespace-token>s, -// which may be collapsed into a single token. - -const specPairs = [ - [types.Ident, types.Ident], - [types.Ident, types.Function], - [types.Ident, types.Url], - [types.Ident, types.BadUrl], - [types.Ident, '-'], - [types.Ident, types.Number], - [types.Ident, types.Percentage], - [types.Ident, types.Dimension], - [types.Ident, types.CDC], - [types.Ident, types.LeftParenthesis], - - [types.AtKeyword, types.Ident], - [types.AtKeyword, types.Function], - [types.AtKeyword, types.Url], - [types.AtKeyword, types.BadUrl], - [types.AtKeyword, '-'], - [types.AtKeyword, types.Number], - [types.AtKeyword, types.Percentage], - [types.AtKeyword, types.Dimension], - [types.AtKeyword, types.CDC], - - [types.Hash, types.Ident], - [types.Hash, types.Function], - [types.Hash, types.Url], - [types.Hash, types.BadUrl], - [types.Hash, '-'], - [types.Hash, types.Number], - [types.Hash, types.Percentage], - [types.Hash, types.Dimension], - [types.Hash, types.CDC], - - [types.Dimension, types.Ident], - [types.Dimension, types.Function], - [types.Dimension, types.Url], - [types.Dimension, types.BadUrl], - [types.Dimension, '-'], - [types.Dimension, types.Number], - [types.Dimension, types.Percentage], - [types.Dimension, types.Dimension], - [types.Dimension, types.CDC], - - ['#', types.Ident], - ['#', types.Function], - ['#', types.Url], - ['#', types.BadUrl], - ['#', '-'], - ['#', types.Number], - ['#', types.Percentage], - ['#', types.Dimension], - ['#', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874 - - ['-', types.Ident], - ['-', types.Function], - ['-', types.Url], - ['-', types.BadUrl], - ['-', '-'], - ['-', types.Number], - ['-', types.Percentage], - ['-', types.Dimension], - ['-', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874 - - [types.Number, types.Ident], - [types.Number, types.Function], - [types.Number, types.Url], - [types.Number, types.BadUrl], - [types.Number, types.Number], - [types.Number, types.Percentage], - [types.Number, types.Dimension], - [types.Number, '%'], - [types.Number, types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874 - - ['@', types.Ident], - ['@', types.Function], - ['@', types.Url], - ['@', types.BadUrl], - ['@', '-'], - ['@', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874 - - ['.', types.Number], - ['.', types.Percentage], - ['.', types.Dimension], - - ['+', types.Number], - ['+', types.Percentage], - ['+', types.Dimension], - - ['/', '*'] -]; -// validate with scripts/generate-safe -const safePairs = specPairs.concat([ - [types.Ident, types.Hash], - - [types.Dimension, types.Hash], - - [types.Hash, types.Hash], - - [types.AtKeyword, types.LeftParenthesis], - [types.AtKeyword, types.String], - [types.AtKeyword, types.Colon], - - [types.Percentage, types.Percentage], - [types.Percentage, types.Dimension], - [types.Percentage, types.Function], - [types.Percentage, '-'], - - [types.RightParenthesis, types.Ident], - [types.RightParenthesis, types.Function], - [types.RightParenthesis, types.Percentage], - [types.RightParenthesis, types.Dimension], - [types.RightParenthesis, types.Hash], - [types.RightParenthesis, '-'] -]); - -function createMap(pairs) { - const isWhiteSpaceRequired = new Set( - pairs.map(([prev, next]) => (code(prev) << 16 | code(next))) - ); - - return function(prevCode, type, value) { - const nextCode = code(type, value); - const nextCharCode = value.charCodeAt(0); - const emitWs = - (nextCharCode === HYPHENMINUS && - type !== types.Ident && - type !== types.Function && - type !== types.CDC) || - (nextCharCode === PLUSSIGN) - ? isWhiteSpaceRequired.has(prevCode << 16 | nextCharCode << 8) - : isWhiteSpaceRequired.has(prevCode << 16 | nextCode); - - if (emitWs) { - this.emit(' ', types.WhiteSpace, true); - } - - return nextCode; - }; -} - -const spec = createMap(specPairs); -const safe = createMap(safePairs); - -exports.safe = safe; -exports.spec = spec; diff --git a/node_modules/csso/node_modules/css-tree/cjs/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/index.cjs deleted file mode 100644 index b781d15b..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/index.cjs +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; - -const index$1 = require('./syntax/index.cjs'); -const version = require('./version.cjs'); -const create = require('./syntax/create.cjs'); -const List = require('./utils/List.cjs'); -const Lexer = require('./lexer/Lexer.cjs'); -const index = require('./definition-syntax/index.cjs'); -const clone = require('./utils/clone.cjs'); -const names$1 = require('./utils/names.cjs'); -const ident = require('./utils/ident.cjs'); -const string = require('./utils/string.cjs'); -const url = require('./utils/url.cjs'); -const types = require('./tokenizer/types.cjs'); -const names = require('./tokenizer/names.cjs'); -const TokenStream = require('./tokenizer/TokenStream.cjs'); - -const { - tokenize, - parse, - generate, - lexer, - createLexer, - - walk, - find, - findLast, - findAll, - - toPlainObject, - fromPlainObject, - - fork -} = index$1; - -exports.version = version.version; -exports.createSyntax = create; -exports.List = List.List; -exports.Lexer = Lexer.Lexer; -exports.definitionSyntax = index; -exports.clone = clone.clone; -exports.isCustomProperty = names$1.isCustomProperty; -exports.keyword = names$1.keyword; -exports.property = names$1.property; -exports.vendorPrefix = names$1.vendorPrefix; -exports.ident = ident; -exports.string = string; -exports.url = url; -exports.tokenTypes = types; -exports.tokenNames = names; -exports.TokenStream = TokenStream.TokenStream; -exports.createLexer = createLexer; -exports.find = find; -exports.findAll = findAll; -exports.findLast = findLast; -exports.fork = fork; -exports.fromPlainObject = fromPlainObject; -exports.generate = generate; -exports.lexer = lexer; -exports.parse = parse; -exports.toPlainObject = toPlainObject; -exports.tokenize = tokenize; -exports.walk = walk; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/Lexer.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/Lexer.cjs deleted file mode 100644 index 35f8e906..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/Lexer.cjs +++ /dev/null @@ -1,459 +0,0 @@ -'use strict'; - -const error = require('./error.cjs'); -const names = require('../utils/names.cjs'); -const genericConst = require('./generic-const.cjs'); -const generic = require('./generic.cjs'); -const prepareTokens = require('./prepare-tokens.cjs'); -const matchGraph = require('./match-graph.cjs'); -const match = require('./match.cjs'); -const trace = require('./trace.cjs'); -const search = require('./search.cjs'); -const structure = require('./structure.cjs'); -const parse = require('../definition-syntax/parse.cjs'); -const generate = require('../definition-syntax/generate.cjs'); -const walk = require('../definition-syntax/walk.cjs'); - -const cssWideKeywordsSyntax = matchGraph.buildMatchGraph(genericConst.cssWideKeywords.join(' | ')); - -function dumpMapSyntax(map, compact, syntaxAsAst) { - const result = {}; - - for (const name in map) { - if (map[name].syntax) { - result[name] = syntaxAsAst - ? map[name].syntax - : generate.generate(map[name].syntax, { compact }); - } - } - - return result; -} - -function dumpAtruleMapSyntax(map, compact, syntaxAsAst) { - const result = {}; - - for (const [name, atrule] of Object.entries(map)) { - result[name] = { - prelude: atrule.prelude && ( - syntaxAsAst - ? atrule.prelude.syntax - : generate.generate(atrule.prelude.syntax, { compact }) - ), - descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst) - }; - } - - return result; -} - -function valueHasVar(tokens) { - for (let i = 0; i < tokens.length; i++) { - if (tokens[i].value.toLowerCase() === 'var(') { - return true; - } - } - - return false; -} - -function buildMatchResult(matched, error, iterations) { - return { - matched, - iterations, - error, - ...trace - }; -} - -function matchSyntax(lexer, syntax, value, useCssWideKeywords) { - const tokens = prepareTokens(value, lexer.syntax); - let result; - - if (valueHasVar(tokens)) { - return buildMatchResult(null, new Error('Matching for a tree with var() is not supported')); - } - - if (useCssWideKeywords) { - result = match.matchAsTree(tokens, lexer.cssWideKeywordsSyntax, lexer); - } - - if (!useCssWideKeywords || !result.match) { - result = match.matchAsTree(tokens, syntax.match, lexer); - if (!result.match) { - return buildMatchResult( - null, - new error.SyntaxMatchError(result.reason, syntax.syntax, value, result), - result.iterations - ); - } - } - - return buildMatchResult(result.match, null, result.iterations); -} - -class Lexer { - constructor(config, syntax, structure$1) { - this.cssWideKeywordsSyntax = cssWideKeywordsSyntax; - this.syntax = syntax; - this.generic = false; - this.atrules = Object.create(null); - this.properties = Object.create(null); - this.types = Object.create(null); - this.structure = structure$1 || structure.getStructureFromConfig(config); - - if (config) { - if (config.types) { - for (const name in config.types) { - this.addType_(name, config.types[name]); - } - } - - if (config.generic) { - this.generic = true; - for (const name in generic) { - this.addType_(name, generic[name]); - } - } - - if (config.atrules) { - for (const name in config.atrules) { - this.addAtrule_(name, config.atrules[name]); - } - } - - if (config.properties) { - for (const name in config.properties) { - this.addProperty_(name, config.properties[name]); - } - } - } - } - - checkStructure(ast) { - function collectWarning(node, message) { - warns.push({ node, message }); - } - - const structure = this.structure; - const warns = []; - - this.syntax.walk(ast, function(node) { - if (structure.hasOwnProperty(node.type)) { - structure[node.type].check(node, collectWarning); - } else { - collectWarning(node, 'Unknown node type `' + node.type + '`'); - } - }); - - return warns.length ? warns : false; - } - - createDescriptor(syntax, type, name, parent = null) { - const ref = { - type, - name - }; - const descriptor = { - type, - name, - parent, - serializable: typeof syntax === 'string' || (syntax && typeof syntax.type === 'string'), - syntax: null, - match: null - }; - - if (typeof syntax === 'function') { - descriptor.match = matchGraph.buildMatchGraph(syntax, ref); - } else { - if (typeof syntax === 'string') { - // lazy parsing on first access - Object.defineProperty(descriptor, 'syntax', { - get() { - Object.defineProperty(descriptor, 'syntax', { - value: parse.parse(syntax) - }); - - return descriptor.syntax; - } - }); - } else { - descriptor.syntax = syntax; - } - - // lazy graph build on first access - Object.defineProperty(descriptor, 'match', { - get() { - Object.defineProperty(descriptor, 'match', { - value: matchGraph.buildMatchGraph(descriptor.syntax, ref) - }); - - return descriptor.match; - } - }); - } - - return descriptor; - } - addAtrule_(name, syntax) { - if (!syntax) { - return; - } - - this.atrules[name] = { - type: 'Atrule', - name: name, - prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, 'AtrulePrelude', name) : null, - descriptors: syntax.descriptors - ? Object.keys(syntax.descriptors).reduce( - (map, descName) => { - map[descName] = this.createDescriptor(syntax.descriptors[descName], 'AtruleDescriptor', descName, name); - return map; - }, - Object.create(null) - ) - : null - }; - } - addProperty_(name, syntax) { - if (!syntax) { - return; - } - - this.properties[name] = this.createDescriptor(syntax, 'Property', name); - } - addType_(name, syntax) { - if (!syntax) { - return; - } - - this.types[name] = this.createDescriptor(syntax, 'Type', name); - } - - checkAtruleName(atruleName) { - if (!this.getAtrule(atruleName)) { - return new error.SyntaxReferenceError('Unknown at-rule', '@' + atruleName); - } - } - checkAtrulePrelude(atruleName, prelude) { - const error = this.checkAtruleName(atruleName); - - if (error) { - return error; - } - - const atrule = this.getAtrule(atruleName); - - if (!atrule.prelude && prelude) { - return new SyntaxError('At-rule `@' + atruleName + '` should not contain a prelude'); - } - - if (atrule.prelude && !prelude) { - if (!matchSyntax(this, atrule.prelude, '', false).matched) { - return new SyntaxError('At-rule `@' + atruleName + '` should contain a prelude'); - } - } - } - checkAtruleDescriptorName(atruleName, descriptorName) { - const error$1 = this.checkAtruleName(atruleName); - - if (error$1) { - return error$1; - } - - const atrule = this.getAtrule(atruleName); - const descriptor = names.keyword(descriptorName); - - if (!atrule.descriptors) { - return new SyntaxError('At-rule `@' + atruleName + '` has no known descriptors'); - } - - if (!atrule.descriptors[descriptor.name] && - !atrule.descriptors[descriptor.basename]) { - return new error.SyntaxReferenceError('Unknown at-rule descriptor', descriptorName); - } - } - checkPropertyName(propertyName) { - if (!this.getProperty(propertyName)) { - return new error.SyntaxReferenceError('Unknown property', propertyName); - } - } - - matchAtrulePrelude(atruleName, prelude) { - const error = this.checkAtrulePrelude(atruleName, prelude); - - if (error) { - return buildMatchResult(null, error); - } - - const atrule = this.getAtrule(atruleName); - - if (!atrule.prelude) { - return buildMatchResult(null, null); - } - - return matchSyntax(this, atrule.prelude, prelude || '', false); - } - matchAtruleDescriptor(atruleName, descriptorName, value) { - const error = this.checkAtruleDescriptorName(atruleName, descriptorName); - - if (error) { - return buildMatchResult(null, error); - } - - const atrule = this.getAtrule(atruleName); - const descriptor = names.keyword(descriptorName); - - return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false); - } - matchDeclaration(node) { - if (node.type !== 'Declaration') { - return buildMatchResult(null, new Error('Not a Declaration node')); - } - - return this.matchProperty(node.property, node.value); - } - matchProperty(propertyName, value) { - // don't match syntax for a custom property at the moment - if (names.property(propertyName).custom) { - return buildMatchResult(null, new Error('Lexer matching doesn\'t applicable for custom properties')); - } - - const error = this.checkPropertyName(propertyName); - - if (error) { - return buildMatchResult(null, error); - } - - return matchSyntax(this, this.getProperty(propertyName), value, true); - } - matchType(typeName, value) { - const typeSyntax = this.getType(typeName); - - if (!typeSyntax) { - return buildMatchResult(null, new error.SyntaxReferenceError('Unknown type', typeName)); - } - - return matchSyntax(this, typeSyntax, value, false); - } - match(syntax, value) { - if (typeof syntax !== 'string' && (!syntax || !syntax.type)) { - return buildMatchResult(null, new error.SyntaxReferenceError('Bad syntax')); - } - - if (typeof syntax === 'string' || !syntax.match) { - syntax = this.createDescriptor(syntax, 'Type', 'anonymous'); - } - - return matchSyntax(this, syntax, value, false); - } - - findValueFragments(propertyName, value, type, name) { - return search.matchFragments(this, value, this.matchProperty(propertyName, value), type, name); - } - findDeclarationValueFragments(declaration, type, name) { - return search.matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name); - } - findAllFragments(ast, type, name) { - const result = []; - - this.syntax.walk(ast, { - visit: 'Declaration', - enter: (declaration) => { - result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name)); - } - }); - - return result; - } - - getAtrule(atruleName, fallbackBasename = true) { - const atrule = names.keyword(atruleName); - const atruleEntry = atrule.vendor && fallbackBasename - ? this.atrules[atrule.name] || this.atrules[atrule.basename] - : this.atrules[atrule.name]; - - return atruleEntry || null; - } - getAtrulePrelude(atruleName, fallbackBasename = true) { - const atrule = this.getAtrule(atruleName, fallbackBasename); - - return atrule && atrule.prelude || null; - } - getAtruleDescriptor(atruleName, name) { - return this.atrules.hasOwnProperty(atruleName) && this.atrules.declarators - ? this.atrules[atruleName].declarators[name] || null - : null; - } - getProperty(propertyName, fallbackBasename = true) { - const property = names.property(propertyName); - const propertyEntry = property.vendor && fallbackBasename - ? this.properties[property.name] || this.properties[property.basename] - : this.properties[property.name]; - - return propertyEntry || null; - } - getType(name) { - return hasOwnProperty.call(this.types, name) ? this.types[name] : null; - } - - validate() { - function validate(syntax, name, broken, descriptor) { - if (broken.has(name)) { - return broken.get(name); - } - - broken.set(name, false); - if (descriptor.syntax !== null) { - walk.walk(descriptor.syntax, function(node) { - if (node.type !== 'Type' && node.type !== 'Property') { - return; - } - - const map = node.type === 'Type' ? syntax.types : syntax.properties; - const brokenMap = node.type === 'Type' ? brokenTypes : brokenProperties; - - if (!hasOwnProperty.call(map, node.name) || validate(syntax, node.name, brokenMap, map[node.name])) { - broken.set(name, true); - } - }, this); - } - } - - let brokenTypes = new Map(); - let brokenProperties = new Map(); - - for (const key in this.types) { - validate(this, key, brokenTypes, this.types[key]); - } - - for (const key in this.properties) { - validate(this, key, brokenProperties, this.properties[key]); - } - - brokenTypes = [...brokenTypes.keys()].filter(name => brokenTypes.get(name)); - brokenProperties = [...brokenProperties.keys()].filter(name => brokenProperties.get(name)); - - if (brokenTypes.length || brokenProperties.length) { - return { - types: brokenTypes, - properties: brokenProperties - }; - } - - return null; - } - dump(syntaxAsAst, pretty) { - return { - generic: this.generic, - types: dumpMapSyntax(this.types, !pretty, syntaxAsAst), - properties: dumpMapSyntax(this.properties, !pretty, syntaxAsAst), - atrules: dumpAtruleMapSyntax(this.atrules, !pretty, syntaxAsAst) - }; - } - toString() { - return JSON.stringify(this.dump()); - } -} - -exports.Lexer = Lexer; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/error.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/error.cjs deleted file mode 100644 index 8d252eeb..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/error.cjs +++ /dev/null @@ -1,128 +0,0 @@ -'use strict'; - -const createCustomError = require('../utils/create-custom-error.cjs'); -const generate = require('../definition-syntax/generate.cjs'); - -const defaultLoc = { offset: 0, line: 1, column: 1 }; - -function locateMismatch(matchResult, node) { - const tokens = matchResult.tokens; - const longestMatch = matchResult.longestMatch; - const mismatchNode = longestMatch < tokens.length ? tokens[longestMatch].node || null : null; - const badNode = mismatchNode !== node ? mismatchNode : null; - let mismatchOffset = 0; - let mismatchLength = 0; - let entries = 0; - let css = ''; - let start; - let end; - - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i].value; - - if (i === longestMatch) { - mismatchLength = token.length; - mismatchOffset = css.length; - } - - if (badNode !== null && tokens[i].node === badNode) { - if (i <= longestMatch) { - entries++; - } else { - entries = 0; - } - } - - css += token; - } - - if (longestMatch === tokens.length || entries > 1) { // last - start = fromLoc(badNode || node, 'end') || buildLoc(defaultLoc, css); - end = buildLoc(start); - } else { - start = fromLoc(badNode, 'start') || - buildLoc(fromLoc(node, 'start') || defaultLoc, css.slice(0, mismatchOffset)); - end = fromLoc(badNode, 'end') || - buildLoc(start, css.substr(mismatchOffset, mismatchLength)); - } - - return { - css, - mismatchOffset, - mismatchLength, - start, - end - }; -} - -function fromLoc(node, point) { - const value = node && node.loc && node.loc[point]; - - if (value) { - return 'line' in value ? buildLoc(value) : value; - } - - return null; -} - -function buildLoc({ offset, line, column }, extra) { - const loc = { - offset, - line, - column - }; - - if (extra) { - const lines = extra.split(/\n|\r\n?|\f/); - - loc.offset += extra.length; - loc.line += lines.length - 1; - loc.column = lines.length === 1 ? loc.column + extra.length : lines.pop().length + 1; - } - - return loc; -} - -const SyntaxReferenceError = function(type, referenceName) { - const error = createCustomError.createCustomError( - 'SyntaxReferenceError', - type + (referenceName ? ' `' + referenceName + '`' : '') - ); - - error.reference = referenceName; - - return error; -}; - -const SyntaxMatchError = function(message, syntax, node, matchResult) { - const error = createCustomError.createCustomError('SyntaxMatchError', message); - const { - css, - mismatchOffset, - mismatchLength, - start, - end - } = locateMismatch(matchResult, node); - - error.rawMessage = message; - error.syntax = syntax ? generate.generate(syntax) : '<generic>'; - error.css = css; - error.mismatchOffset = mismatchOffset; - error.mismatchLength = mismatchLength; - error.message = message + '\n' + - ' syntax: ' + error.syntax + '\n' + - ' value: ' + (css || '<empty string>') + '\n' + - ' --------' + new Array(error.mismatchOffset + 1).join('-') + '^'; - - Object.assign(error, start); - error.loc = { - source: (node && node.loc && node.loc.source) || '<unknown>', - start, - end - }; - - return error; -}; - -exports.SyntaxMatchError = SyntaxMatchError; -exports.SyntaxReferenceError = SyntaxReferenceError; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs deleted file mode 100644 index a5dfba3e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs +++ /dev/null @@ -1,235 +0,0 @@ -'use strict'; - -const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs'); -const types = require('../tokenizer/types.cjs'); -const utils = require('../tokenizer/utils.cjs'); - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const N = 0x006E; // U+006E LATIN SMALL LETTER N (n) -const DISALLOW_SIGN = true; -const ALLOW_SIGN = false; - -function isDelim(token, code) { - return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code; -} - -function skipSC(token, offset, getNextToken) { - while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment)) { - token = getNextToken(++offset); - } - - return offset; -} - -function checkInteger(token, valueOffset, disallowSign, offset) { - if (!token) { - return 0; - } - - const code = token.value.charCodeAt(valueOffset); - - if (code === PLUSSIGN || code === HYPHENMINUS) { - if (disallowSign) { - // Number sign is not allowed - return 0; - } - valueOffset++; - } - - for (; valueOffset < token.value.length; valueOffset++) { - if (!charCodeDefinitions.isDigit(token.value.charCodeAt(valueOffset))) { - // Integer is expected - return 0; - } - } - - return offset + 1; -} - -// ... <signed-integer> -// ... ['+' | '-'] <signless-integer> -function consumeB(token, offset_, getNextToken) { - let sign = false; - let offset = skipSC(token, offset_, getNextToken); - - token = getNextToken(offset); - - if (token === null) { - return offset_; - } - - if (token.type !== types.Number) { - if (isDelim(token, PLUSSIGN) || isDelim(token, HYPHENMINUS)) { - sign = true; - offset = skipSC(getNextToken(++offset), offset, getNextToken); - token = getNextToken(offset); - - if (token === null || token.type !== types.Number) { - return 0; - } - } else { - return offset_; - } - } - - if (!sign) { - const code = token.value.charCodeAt(0); - if (code !== PLUSSIGN && code !== HYPHENMINUS) { - // Number sign is expected - return 0; - } - } - - return checkInteger(token, sign ? 0 : 1, sign, offset); -} - -// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb -function anPlusB(token, getNextToken) { - /* eslint-disable brace-style*/ - let offset = 0; - - if (!token) { - return 0; - } - - // <integer> - if (token.type === types.Number) { - return checkInteger(token, 0, ALLOW_SIGN, offset); // b - } - - // -n - // -n <signed-integer> - // -n ['+' | '-'] <signless-integer> - // -n- <signless-integer> - // <dashndashdigit-ident> - else if (token.type === types.Ident && token.value.charCodeAt(0) === HYPHENMINUS) { - // expect 1st char is N - if (!utils.cmpChar(token.value, 1, N)) { - return 0; - } - - switch (token.value.length) { - // -n - // -n <signed-integer> - // -n ['+' | '-'] <signless-integer> - case 2: - return consumeB(getNextToken(++offset), offset, getNextToken); - - // -n- <signless-integer> - case 3: - if (token.value.charCodeAt(2) !== HYPHENMINUS) { - return 0; - } - - offset = skipSC(getNextToken(++offset), offset, getNextToken); - token = getNextToken(offset); - - return checkInteger(token, 0, DISALLOW_SIGN, offset); - - // <dashndashdigit-ident> - default: - if (token.value.charCodeAt(2) !== HYPHENMINUS) { - return 0; - } - - return checkInteger(token, 3, DISALLOW_SIGN, offset); - } - } - - // '+'? n - // '+'? n <signed-integer> - // '+'? n ['+' | '-'] <signless-integer> - // '+'? n- <signless-integer> - // '+'? <ndashdigit-ident> - else if (token.type === types.Ident || (isDelim(token, PLUSSIGN) && getNextToken(offset + 1).type === types.Ident)) { - // just ignore a plus - if (token.type !== types.Ident) { - token = getNextToken(++offset); - } - - if (token === null || !utils.cmpChar(token.value, 0, N)) { - return 0; - } - - switch (token.value.length) { - // '+'? n - // '+'? n <signed-integer> - // '+'? n ['+' | '-'] <signless-integer> - case 1: - return consumeB(getNextToken(++offset), offset, getNextToken); - - // '+'? n- <signless-integer> - case 2: - if (token.value.charCodeAt(1) !== HYPHENMINUS) { - return 0; - } - - offset = skipSC(getNextToken(++offset), offset, getNextToken); - token = getNextToken(offset); - - return checkInteger(token, 0, DISALLOW_SIGN, offset); - - // '+'? <ndashdigit-ident> - default: - if (token.value.charCodeAt(1) !== HYPHENMINUS) { - return 0; - } - - return checkInteger(token, 2, DISALLOW_SIGN, offset); - } - } - - // <ndashdigit-dimension> - // <ndash-dimension> <signless-integer> - // <n-dimension> - // <n-dimension> <signed-integer> - // <n-dimension> ['+' | '-'] <signless-integer> - else if (token.type === types.Dimension) { - let code = token.value.charCodeAt(0); - let sign = code === PLUSSIGN || code === HYPHENMINUS ? 1 : 0; - let i = sign; - - for (; i < token.value.length; i++) { - if (!charCodeDefinitions.isDigit(token.value.charCodeAt(i))) { - break; - } - } - - if (i === sign) { - // Integer is expected - return 0; - } - - if (!utils.cmpChar(token.value, i, N)) { - return 0; - } - - // <n-dimension> - // <n-dimension> <signed-integer> - // <n-dimension> ['+' | '-'] <signless-integer> - if (i + 1 === token.value.length) { - return consumeB(getNextToken(++offset), offset, getNextToken); - } else { - if (token.value.charCodeAt(i + 1) !== HYPHENMINUS) { - return 0; - } - - // <ndash-dimension> <signless-integer> - if (i + 2 === token.value.length) { - offset = skipSC(getNextToken(++offset), offset, getNextToken); - token = getNextToken(offset); - - return checkInteger(token, 0, DISALLOW_SIGN, offset); - } - // <ndashdigit-dimension> - else { - return checkInteger(token, i + 2, DISALLOW_SIGN, offset); - } - } - } - - return 0; -} - -module.exports = anPlusB; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/generic-const.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/generic-const.cjs deleted file mode 100644 index 9b9f6157..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/generic-const.cjs +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -// https://drafts.csswg.org/css-cascade-5/ -const cssWideKeywords = [ - 'initial', - 'inherit', - 'unset', - 'revert', - 'revert-layer' -]; - -exports.cssWideKeywords = cssWideKeywords; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/generic-urange.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/generic-urange.cjs deleted file mode 100644 index ce167bb1..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/generic-urange.cjs +++ /dev/null @@ -1,149 +0,0 @@ -'use strict'; - -const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs'); -const types = require('../tokenizer/types.cjs'); -const utils = require('../tokenizer/utils.cjs'); - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?) -const U = 0x0075; // U+0075 LATIN SMALL LETTER U (u) - -function isDelim(token, code) { - return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code; -} - -function startsWith(token, code) { - return token.value.charCodeAt(0) === code; -} - -function hexSequence(token, offset, allowDash) { - let hexlen = 0; - - for (let pos = offset; pos < token.value.length; pos++) { - const code = token.value.charCodeAt(pos); - - if (code === HYPHENMINUS && allowDash && hexlen !== 0) { - hexSequence(token, offset + hexlen + 1, false); - return 6; // dissallow following question marks - } - - if (!charCodeDefinitions.isHexDigit(code)) { - return 0; // not a hex digit - } - - if (++hexlen > 6) { - return 0; // too many hex digits - } } - - return hexlen; -} - -function withQuestionMarkSequence(consumed, length, getNextToken) { - if (!consumed) { - return 0; // nothing consumed - } - - while (isDelim(getNextToken(length), QUESTIONMARK)) { - if (++consumed > 6) { - return 0; // too many question marks - } - - length++; - } - - return length; -} - -// https://drafts.csswg.org/css-syntax/#urange -// Informally, the <urange> production has three forms: -// U+0001 -// Defines a range consisting of a single code point, in this case the code point "1". -// U+0001-00ff -// Defines a range of codepoints between the first and the second value, in this case -// the range between "1" and "ff" (255 in decimal) inclusive. -// U+00?? -// Defines a range of codepoints where the "?" characters range over all hex digits, -// in this case defining the same as the value U+0000-00ff. -// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat "?" as a hexadecimal digit). -// -// <urange> = -// u '+' <ident-token> '?'* | -// u <dimension-token> '?'* | -// u <number-token> '?'* | -// u <number-token> <dimension-token> | -// u <number-token> <number-token> | -// u '+' '?'+ -function urange(token, getNextToken) { - let length = 0; - - // should start with `u` or `U` - if (token === null || token.type !== types.Ident || !utils.cmpChar(token.value, 0, U)) { - return 0; - } - - token = getNextToken(++length); - if (token === null) { - return 0; - } - - // u '+' <ident-token> '?'* - // u '+' '?'+ - if (isDelim(token, PLUSSIGN)) { - token = getNextToken(++length); - if (token === null) { - return 0; - } - - if (token.type === types.Ident) { - // u '+' <ident-token> '?'* - return withQuestionMarkSequence(hexSequence(token, 0, true), ++length, getNextToken); - } - - if (isDelim(token, QUESTIONMARK)) { - // u '+' '?'+ - return withQuestionMarkSequence(1, ++length, getNextToken); - } - - // Hex digit or question mark is expected - return 0; - } - - // u <number-token> '?'* - // u <number-token> <dimension-token> - // u <number-token> <number-token> - if (token.type === types.Number) { - const consumedHexLength = hexSequence(token, 1, true); - if (consumedHexLength === 0) { - return 0; - } - - token = getNextToken(++length); - if (token === null) { - // u <number-token> <eof> - return length; - } - - if (token.type === types.Dimension || token.type === types.Number) { - // u <number-token> <dimension-token> - // u <number-token> <number-token> - if (!startsWith(token, HYPHENMINUS) || !hexSequence(token, 1, false)) { - return 0; - } - - return length + 1; - } - - // u <number-token> '?'* - return withQuestionMarkSequence(consumedHexLength, length, getNextToken); - } - - // u <dimension-token> '?'* - if (token.type === types.Dimension) { - return withQuestionMarkSequence(hexSequence(token, 1, true), ++length, getNextToken); - } - - return 0; -} - -module.exports = urange; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/generic.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/generic.cjs deleted file mode 100644 index 2a603bcd..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/generic.cjs +++ /dev/null @@ -1,573 +0,0 @@ -'use strict'; - -const genericConst = require('./generic-const.cjs'); -const genericAnPlusB = require('./generic-an-plus-b.cjs'); -const genericUrange = require('./generic-urange.cjs'); -const types = require('../tokenizer/types.cjs'); -const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs'); -const utils = require('../tokenizer/utils.cjs'); - -const calcFunctionNames = ['calc(', '-moz-calc(', '-webkit-calc(']; -const balancePair = new Map([ - [types.Function, types.RightParenthesis], - [types.LeftParenthesis, types.RightParenthesis], - [types.LeftSquareBracket, types.RightSquareBracket], - [types.LeftCurlyBracket, types.RightCurlyBracket] -]); - -// units -const LENGTH = [ - // absolute length units https://www.w3.org/TR/css-values-3/#lengths - 'cm', 'mm', 'q', 'in', 'pt', 'pc', 'px', - // font-relative length units https://drafts.csswg.org/css-values-4/#font-relative-lengths - 'em', 'rem', - 'ex', 'rex', - 'cap', 'rcap', - 'ch', 'rch', - 'ic', 'ric', - 'lh', 'rlh', - // viewport-percentage lengths https://drafts.csswg.org/css-values-4/#viewport-relative-lengths - 'vw', 'svw', 'lvw', 'dvw', - 'vh', 'svh', 'lvh', 'dvh', - 'vi', 'svi', 'lvi', 'dvi', - 'vb', 'svb', 'lvb', 'dvb', - 'vmin', 'svmin', 'lvmin', 'dvmin', - 'vmax', 'svmax', 'lvmax', 'dvmax', - // container relative lengths https://drafts.csswg.org/css-contain-3/#container-lengths - 'cqw', 'cqh', 'cqi', 'cqb', 'cqmin', 'cqmax' -]; -const ANGLE = ['deg', 'grad', 'rad', 'turn']; // https://www.w3.org/TR/css-values-3/#angles -const TIME = ['s', 'ms']; // https://www.w3.org/TR/css-values-3/#time -const FREQUENCY = ['hz', 'khz']; // https://www.w3.org/TR/css-values-3/#frequency -const RESOLUTION = ['dpi', 'dpcm', 'dppx', 'x']; // https://www.w3.org/TR/css-values-3/#resolution -const FLEX = ['fr']; // https://drafts.csswg.org/css-grid/#fr-unit -const DECIBEL = ['db']; // https://www.w3.org/TR/css3-speech/#mixing-props-voice-volume -const SEMITONES = ['st']; // https://www.w3.org/TR/css3-speech/#voice-props-voice-pitch - -// safe char code getter -function charCodeAt(str, index) { - return index < str.length ? str.charCodeAt(index) : 0; -} - -function eqStr(actual, expected) { - return utils.cmpStr(actual, 0, actual.length, expected); -} - -function eqStrAny(actual, expected) { - for (let i = 0; i < expected.length; i++) { - if (eqStr(actual, expected[i])) { - return true; - } - } - - return false; -} - -// IE postfix hack, i.e. 123\0 or 123px\9 -function isPostfixIeHack(str, offset) { - if (offset !== str.length - 2) { - return false; - } - - return ( - charCodeAt(str, offset) === 0x005C && // U+005C REVERSE SOLIDUS (\) - charCodeDefinitions.isDigit(charCodeAt(str, offset + 1)) - ); -} - -function outOfRange(opts, value, numEnd) { - if (opts && opts.type === 'Range') { - const num = Number( - numEnd !== undefined && numEnd !== value.length - ? value.substr(0, numEnd) - : value - ); - - if (isNaN(num)) { - return true; - } - - // FIXME: when opts.min is a string it's a dimension, skip a range validation - // for now since it requires a type covertation which is not implmented yet - if (opts.min !== null && num < opts.min && typeof opts.min !== 'string') { - return true; - } - - // FIXME: when opts.max is a string it's a dimension, skip a range validation - // for now since it requires a type covertation which is not implmented yet - if (opts.max !== null && num > opts.max && typeof opts.max !== 'string') { - return true; - } - } - - return false; -} - -function consumeFunction(token, getNextToken) { - let balanceCloseType = 0; - let balanceStash = []; - let length = 0; - - // balanced token consuming - scan: - do { - switch (token.type) { - case types.RightCurlyBracket: - case types.RightParenthesis: - case types.RightSquareBracket: - if (token.type !== balanceCloseType) { - break scan; - } - - balanceCloseType = balanceStash.pop(); - - if (balanceStash.length === 0) { - length++; - break scan; - } - - break; - - case types.Function: - case types.LeftParenthesis: - case types.LeftSquareBracket: - case types.LeftCurlyBracket: - balanceStash.push(balanceCloseType); - balanceCloseType = balancePair.get(token.type); - break; - } - - length++; - } while (token = getNextToken(length)); - - return length; -} - -// TODO: implement -// can be used wherever <length>, <frequency>, <angle>, <time>, <percentage>, <number>, or <integer> values are allowed -// https://drafts.csswg.org/css-values/#calc-notation -function calc(next) { - return function(token, getNextToken, opts) { - if (token === null) { - return 0; - } - - if (token.type === types.Function && eqStrAny(token.value, calcFunctionNames)) { - return consumeFunction(token, getNextToken); - } - - return next(token, getNextToken, opts); - }; -} - -function tokenType(expectedTokenType) { - return function(token) { - if (token === null || token.type !== expectedTokenType) { - return 0; - } - - return 1; - }; -} - -// ========================= -// Complex types -// - -// https://drafts.csswg.org/css-values-4/#custom-idents -// 4.2. Author-defined Identifiers: the <custom-ident> type -// Some properties accept arbitrary author-defined identifiers as a component value. -// This generic data type is denoted by <custom-ident>, and represents any valid CSS identifier -// that would not be misinterpreted as a pre-defined keyword in that property’s value definition. -// -// See also: https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident -function customIdent(token) { - if (token === null || token.type !== types.Ident) { - return 0; - } - - const name = token.value.toLowerCase(); - - // The CSS-wide keywords are not valid <custom-ident>s - if (eqStrAny(name, genericConst.cssWideKeywords)) { - return 0; - } - - // The default keyword is reserved and is also not a valid <custom-ident> - if (eqStr(name, 'default')) { - return 0; - } - - // TODO: ignore property specific keywords (as described https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident) - // Specifications using <custom-ident> must specify clearly what other keywords - // are excluded from <custom-ident>, if any—for example by saying that any pre-defined keywords - // in that property’s value definition are excluded. Excluded keywords are excluded - // in all ASCII case permutations. - - return 1; -} - -// https://drafts.csswg.org/css-variables/#typedef-custom-property-name -// A custom property is any property whose name starts with two dashes (U+002D HYPHEN-MINUS), like --foo. -// The <custom-property-name> production corresponds to this: it’s defined as any valid identifier -// that starts with two dashes, except -- itself, which is reserved for future use by CSS. -// NOTE: Current implementation treat `--` as a valid name since most (all?) major browsers treat it as valid. -function customPropertyName(token) { - // ... defined as any valid identifier - if (token === null || token.type !== types.Ident) { - return 0; - } - - // ... that starts with two dashes (U+002D HYPHEN-MINUS) - if (charCodeAt(token.value, 0) !== 0x002D || charCodeAt(token.value, 1) !== 0x002D) { - return 0; - } - - return 1; -} - -// https://drafts.csswg.org/css-color-4/#hex-notation -// The syntax of a <hex-color> is a <hash-token> token whose value consists of 3, 4, 6, or 8 hexadecimal digits. -// In other words, a hex color is written as a hash character, "#", followed by some number of digits 0-9 or -// letters a-f (the case of the letters doesn’t matter - #00ff00 is identical to #00FF00). -function hexColor(token) { - if (token === null || token.type !== types.Hash) { - return 0; - } - - const length = token.value.length; - - // valid values (length): #rgb (4), #rgba (5), #rrggbb (7), #rrggbbaa (9) - if (length !== 4 && length !== 5 && length !== 7 && length !== 9) { - return 0; - } - - for (let i = 1; i < length; i++) { - if (!charCodeDefinitions.isHexDigit(charCodeAt(token.value, i))) { - return 0; - } - } - - return 1; -} - -function idSelector(token) { - if (token === null || token.type !== types.Hash) { - return 0; - } - - if (!charCodeDefinitions.isIdentifierStart(charCodeAt(token.value, 1), charCodeAt(token.value, 2), charCodeAt(token.value, 3))) { - return 0; - } - - return 1; -} - -// https://drafts.csswg.org/css-syntax/#any-value -// It represents the entirety of what a valid declaration can have as its value. -function declarationValue(token, getNextToken) { - if (!token) { - return 0; - } - - let balanceCloseType = 0; - let balanceStash = []; - let length = 0; - - // The <declaration-value> production matches any sequence of one or more tokens, - // so long as the sequence does not contain ... - scan: - do { - switch (token.type) { - // ... <bad-string-token>, <bad-url-token>, - case types.BadString: - case types.BadUrl: - break scan; - - // ... unmatched <)-token>, <]-token>, or <}-token>, - case types.RightCurlyBracket: - case types.RightParenthesis: - case types.RightSquareBracket: - if (token.type !== balanceCloseType) { - break scan; - } - - balanceCloseType = balanceStash.pop(); - break; - - // ... or top-level <semicolon-token> tokens - case types.Semicolon: - if (balanceCloseType === 0) { - break scan; - } - - break; - - // ... or <delim-token> tokens with a value of "!" - case types.Delim: - if (balanceCloseType === 0 && token.value === '!') { - break scan; - } - - break; - - case types.Function: - case types.LeftParenthesis: - case types.LeftSquareBracket: - case types.LeftCurlyBracket: - balanceStash.push(balanceCloseType); - balanceCloseType = balancePair.get(token.type); - break; - } - - length++; - } while (token = getNextToken(length)); - - return length; -} - -// https://drafts.csswg.org/css-syntax/#any-value -// The <any-value> production is identical to <declaration-value>, but also -// allows top-level <semicolon-token> tokens and <delim-token> tokens -// with a value of "!". It represents the entirety of what valid CSS can be in any context. -function anyValue(token, getNextToken) { - if (!token) { - return 0; - } - - let balanceCloseType = 0; - let balanceStash = []; - let length = 0; - - // The <any-value> production matches any sequence of one or more tokens, - // so long as the sequence ... - scan: - do { - switch (token.type) { - // ... does not contain <bad-string-token>, <bad-url-token>, - case types.BadString: - case types.BadUrl: - break scan; - - // ... unmatched <)-token>, <]-token>, or <}-token>, - case types.RightCurlyBracket: - case types.RightParenthesis: - case types.RightSquareBracket: - if (token.type !== balanceCloseType) { - break scan; - } - - balanceCloseType = balanceStash.pop(); - break; - - case types.Function: - case types.LeftParenthesis: - case types.LeftSquareBracket: - case types.LeftCurlyBracket: - balanceStash.push(balanceCloseType); - balanceCloseType = balancePair.get(token.type); - break; - } - - length++; - } while (token = getNextToken(length)); - - return length; -} - -// ========================= -// Dimensions -// - -function dimension(type) { - if (type) { - type = new Set(type); - } - - return function(token, getNextToken, opts) { - if (token === null || token.type !== types.Dimension) { - return 0; - } - - const numberEnd = utils.consumeNumber(token.value, 0); - - // check unit - if (type !== null) { - // check for IE postfix hack, i.e. 123px\0 or 123px\9 - const reverseSolidusOffset = token.value.indexOf('\\', numberEnd); - const unit = reverseSolidusOffset === -1 || !isPostfixIeHack(token.value, reverseSolidusOffset) - ? token.value.substr(numberEnd) - : token.value.substring(numberEnd, reverseSolidusOffset); - - if (type.has(unit.toLowerCase()) === false) { - return 0; - } - } - - // check range if specified - if (outOfRange(opts, token.value, numberEnd)) { - return 0; - } - - return 1; - }; -} - -// ========================= -// Percentage -// - -// §5.5. Percentages: the <percentage> type -// https://drafts.csswg.org/css-values-4/#percentages -function percentage(token, getNextToken, opts) { - // ... corresponds to the <percentage-token> production - if (token === null || token.type !== types.Percentage) { - return 0; - } - - // check range if specified - if (outOfRange(opts, token.value, token.value.length - 1)) { - return 0; - } - - return 1; -} - -// ========================= -// Numeric -// - -// https://drafts.csswg.org/css-values-4/#numbers -// The value <zero> represents a literal number with the value 0. Expressions that merely -// evaluate to a <number> with the value 0 (for example, calc(0)) do not match <zero>; -// only literal <number-token>s do. -function zero(next) { - if (typeof next !== 'function') { - next = function() { - return 0; - }; - } - - return function(token, getNextToken, opts) { - if (token !== null && token.type === types.Number) { - if (Number(token.value) === 0) { - return 1; - } - } - - return next(token, getNextToken, opts); - }; -} - -// § 5.3. Real Numbers: the <number> type -// https://drafts.csswg.org/css-values-4/#numbers -// Number values are denoted by <number>, and represent real numbers, possibly with a fractional component. -// ... It corresponds to the <number-token> production -function number(token, getNextToken, opts) { - if (token === null) { - return 0; - } - - const numberEnd = utils.consumeNumber(token.value, 0); - const isNumber = numberEnd === token.value.length; - if (!isNumber && !isPostfixIeHack(token.value, numberEnd)) { - return 0; - } - - // check range if specified - if (outOfRange(opts, token.value, numberEnd)) { - return 0; - } - - return 1; -} - -// §5.2. Integers: the <integer> type -// https://drafts.csswg.org/css-values-4/#integers -function integer(token, getNextToken, opts) { - // ... corresponds to a subset of the <number-token> production - if (token === null || token.type !== types.Number) { - return 0; - } - - // The first digit of an integer may be immediately preceded by `-` or `+` to indicate the integer’s sign. - let i = charCodeAt(token.value, 0) === 0x002B || // U+002B PLUS SIGN (+) - charCodeAt(token.value, 0) === 0x002D ? 1 : 0; // U+002D HYPHEN-MINUS (-) - - // When written literally, an integer is one or more decimal digits 0 through 9 ... - for (; i < token.value.length; i++) { - if (!charCodeDefinitions.isDigit(charCodeAt(token.value, i))) { - return 0; - } - } - - // check range if specified - if (outOfRange(opts, token.value, i)) { - return 0; - } - - return 1; -} - -const genericSyntaxes = { - // token types - 'ident-token': tokenType(types.Ident), - 'function-token': tokenType(types.Function), - 'at-keyword-token': tokenType(types.AtKeyword), - 'hash-token': tokenType(types.Hash), - 'string-token': tokenType(types.String), - 'bad-string-token': tokenType(types.BadString), - 'url-token': tokenType(types.Url), - 'bad-url-token': tokenType(types.BadUrl), - 'delim-token': tokenType(types.Delim), - 'number-token': tokenType(types.Number), - 'percentage-token': tokenType(types.Percentage), - 'dimension-token': tokenType(types.Dimension), - 'whitespace-token': tokenType(types.WhiteSpace), - 'CDO-token': tokenType(types.CDO), - 'CDC-token': tokenType(types.CDC), - 'colon-token': tokenType(types.Colon), - 'semicolon-token': tokenType(types.Semicolon), - 'comma-token': tokenType(types.Comma), - '[-token': tokenType(types.LeftSquareBracket), - ']-token': tokenType(types.RightSquareBracket), - '(-token': tokenType(types.LeftParenthesis), - ')-token': tokenType(types.RightParenthesis), - '{-token': tokenType(types.LeftCurlyBracket), - '}-token': tokenType(types.RightCurlyBracket), - - // token type aliases - 'string': tokenType(types.String), - 'ident': tokenType(types.Ident), - - // complex types - 'custom-ident': customIdent, - 'custom-property-name': customPropertyName, - 'hex-color': hexColor, - 'id-selector': idSelector, // element( <id-selector> ) - 'an-plus-b': genericAnPlusB, - 'urange': genericUrange, - 'declaration-value': declarationValue, - 'any-value': anyValue, - - // dimensions - 'dimension': calc(dimension(null)), - 'angle': calc(dimension(ANGLE)), - 'decibel': calc(dimension(DECIBEL)), - 'frequency': calc(dimension(FREQUENCY)), - 'flex': calc(dimension(FLEX)), - 'length': calc(zero(dimension(LENGTH))), - 'resolution': calc(dimension(RESOLUTION)), - 'semitones': calc(dimension(SEMITONES)), - 'time': calc(dimension(TIME)), - - // percentage - 'percentage': calc(percentage), - - // numeric - 'zero': zero(), - 'number': calc(number), - 'integer': calc(integer) -}; - -module.exports = genericSyntaxes; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/index.cjs deleted file mode 100644 index 2e3633ec..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/index.cjs +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -const Lexer = require('./Lexer.cjs'); - - - -exports.Lexer = Lexer.Lexer; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/match-graph.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/match-graph.cjs deleted file mode 100644 index 79c9b66c..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/match-graph.cjs +++ /dev/null @@ -1,459 +0,0 @@ -'use strict'; - -const parse = require('../definition-syntax/parse.cjs'); - -const MATCH = { type: 'Match' }; -const MISMATCH = { type: 'Mismatch' }; -const DISALLOW_EMPTY = { type: 'DisallowEmpty' }; - -const LEFTPARENTHESIS = 40; // ( -const RIGHTPARENTHESIS = 41; // ) - -function createCondition(match, thenBranch, elseBranch) { - // reduce node count - if (thenBranch === MATCH && elseBranch === MISMATCH) { - return match; - } - - if (match === MATCH && thenBranch === MATCH && elseBranch === MATCH) { - return match; - } - - if (match.type === 'If' && match.else === MISMATCH && thenBranch === MATCH) { - thenBranch = match.then; - match = match.match; - } - - return { - type: 'If', - match, - then: thenBranch, - else: elseBranch - }; -} - -function isFunctionType(name) { - return ( - name.length > 2 && - name.charCodeAt(name.length - 2) === LEFTPARENTHESIS && - name.charCodeAt(name.length - 1) === RIGHTPARENTHESIS - ); -} - -function isEnumCapatible(term) { - return ( - term.type === 'Keyword' || - term.type === 'AtKeyword' || - term.type === 'Function' || - term.type === 'Type' && isFunctionType(term.name) - ); -} - -function buildGroupMatchGraph(combinator, terms, atLeastOneTermMatched) { - switch (combinator) { - case ' ': { - // Juxtaposing components means that all of them must occur, in the given order. - // - // a b c - // = - // match a - // then match b - // then match c - // then MATCH - // else MISMATCH - // else MISMATCH - // else MISMATCH - let result = MATCH; - - for (let i = terms.length - 1; i >= 0; i--) { - const term = terms[i]; - - result = createCondition( - term, - result, - MISMATCH - ); - } - return result; - } - - case '|': { - // A bar (|) separates two or more alternatives: exactly one of them must occur. - // - // a | b | c - // = - // match a - // then MATCH - // else match b - // then MATCH - // else match c - // then MATCH - // else MISMATCH - - let result = MISMATCH; - let map = null; - - for (let i = terms.length - 1; i >= 0; i--) { - let term = terms[i]; - - // reduce sequence of keywords into a Enum - if (isEnumCapatible(term)) { - if (map === null && i > 0 && isEnumCapatible(terms[i - 1])) { - map = Object.create(null); - result = createCondition( - { - type: 'Enum', - map - }, - MATCH, - result - ); - } - - if (map !== null) { - const key = (isFunctionType(term.name) ? term.name.slice(0, -1) : term.name).toLowerCase(); - if (key in map === false) { - map[key] = term; - continue; - } - } - } - - map = null; - - // create a new conditonal node - result = createCondition( - term, - MATCH, - result - ); - } - return result; - } - - case '&&': { - // A double ampersand (&&) separates two or more components, - // all of which must occur, in any order. - - // Use MatchOnce for groups with a large number of terms, - // since &&-groups produces at least N!-node trees - if (terms.length > 5) { - return { - type: 'MatchOnce', - terms, - all: true - }; - } - - // Use a combination tree for groups with small number of terms - // - // a && b && c - // = - // match a - // then [b && c] - // else match b - // then [a && c] - // else match c - // then [a && b] - // else MISMATCH - // - // a && b - // = - // match a - // then match b - // then MATCH - // else MISMATCH - // else match b - // then match a - // then MATCH - // else MISMATCH - // else MISMATCH - let result = MISMATCH; - - for (let i = terms.length - 1; i >= 0; i--) { - const term = terms[i]; - let thenClause; - - if (terms.length > 1) { - thenClause = buildGroupMatchGraph( - combinator, - terms.filter(function(newGroupTerm) { - return newGroupTerm !== term; - }), - false - ); - } else { - thenClause = MATCH; - } - - result = createCondition( - term, - thenClause, - result - ); - } - return result; - } - - case '||': { - // A double bar (||) separates two or more options: - // one or more of them must occur, in any order. - - // Use MatchOnce for groups with a large number of terms, - // since ||-groups produces at least N!-node trees - if (terms.length > 5) { - return { - type: 'MatchOnce', - terms, - all: false - }; - } - - // Use a combination tree for groups with small number of terms - // - // a || b || c - // = - // match a - // then [b || c] - // else match b - // then [a || c] - // else match c - // then [a || b] - // else MISMATCH - // - // a || b - // = - // match a - // then match b - // then MATCH - // else MATCH - // else match b - // then match a - // then MATCH - // else MATCH - // else MISMATCH - let result = atLeastOneTermMatched ? MATCH : MISMATCH; - - for (let i = terms.length - 1; i >= 0; i--) { - const term = terms[i]; - let thenClause; - - if (terms.length > 1) { - thenClause = buildGroupMatchGraph( - combinator, - terms.filter(function(newGroupTerm) { - return newGroupTerm !== term; - }), - true - ); - } else { - thenClause = MATCH; - } - - result = createCondition( - term, - thenClause, - result - ); - } - return result; - } - } -} - -function buildMultiplierMatchGraph(node) { - let result = MATCH; - let matchTerm = buildMatchGraphInternal(node.term); - - if (node.max === 0) { - // disable repeating of empty match to prevent infinite loop - matchTerm = createCondition( - matchTerm, - DISALLOW_EMPTY, - MISMATCH - ); - - // an occurrence count is not limited, make a cycle; - // to collect more terms on each following matching mismatch - result = createCondition( - matchTerm, - null, // will be a loop - MISMATCH - ); - - result.then = createCondition( - MATCH, - MATCH, - result // make a loop - ); - - if (node.comma) { - result.then.else = createCondition( - { type: 'Comma', syntax: node }, - result, - MISMATCH - ); - } - } else { - // create a match node chain for [min .. max] interval with optional matches - for (let i = node.min || 1; i <= node.max; i++) { - if (node.comma && result !== MATCH) { - result = createCondition( - { type: 'Comma', syntax: node }, - result, - MISMATCH - ); - } - - result = createCondition( - matchTerm, - createCondition( - MATCH, - MATCH, - result - ), - MISMATCH - ); - } - } - - if (node.min === 0) { - // allow zero match - result = createCondition( - MATCH, - MATCH, - result - ); - } else { - // create a match node chain to collect [0 ... min - 1] required matches - for (let i = 0; i < node.min - 1; i++) { - if (node.comma && result !== MATCH) { - result = createCondition( - { type: 'Comma', syntax: node }, - result, - MISMATCH - ); - } - - result = createCondition( - matchTerm, - result, - MISMATCH - ); - } - } - - return result; -} - -function buildMatchGraphInternal(node) { - if (typeof node === 'function') { - return { - type: 'Generic', - fn: node - }; - } - - switch (node.type) { - case 'Group': { - let result = buildGroupMatchGraph( - node.combinator, - node.terms.map(buildMatchGraphInternal), - false - ); - - if (node.disallowEmpty) { - result = createCondition( - result, - DISALLOW_EMPTY, - MISMATCH - ); - } - - return result; - } - - case 'Multiplier': - return buildMultiplierMatchGraph(node); - - case 'Type': - case 'Property': - return { - type: node.type, - name: node.name, - syntax: node - }; - - case 'Keyword': - return { - type: node.type, - name: node.name.toLowerCase(), - syntax: node - }; - - case 'AtKeyword': - return { - type: node.type, - name: '@' + node.name.toLowerCase(), - syntax: node - }; - - case 'Function': - return { - type: node.type, - name: node.name.toLowerCase() + '(', - syntax: node - }; - - case 'String': - // convert a one char length String to a Token - if (node.value.length === 3) { - return { - type: 'Token', - value: node.value.charAt(1), - syntax: node - }; - } - - // otherwise use it as is - return { - type: node.type, - value: node.value.substr(1, node.value.length - 2).replace(/\\'/g, '\''), - syntax: node - }; - - case 'Token': - return { - type: node.type, - value: node.value, - syntax: node - }; - - case 'Comma': - return { - type: node.type, - syntax: node - }; - - default: - throw new Error('Unknown node type:', node.type); - } -} - -function buildMatchGraph(syntaxTree, ref) { - if (typeof syntaxTree === 'string') { - syntaxTree = parse.parse(syntaxTree); - } - - return { - type: 'MatchGraph', - match: buildMatchGraphInternal(syntaxTree), - syntax: ref || null, - source: syntaxTree - }; -} - -exports.DISALLOW_EMPTY = DISALLOW_EMPTY; -exports.MATCH = MATCH; -exports.MISMATCH = MISMATCH; -exports.buildMatchGraph = buildMatchGraph; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/match.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/match.cjs deleted file mode 100644 index 903720d8..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/match.cjs +++ /dev/null @@ -1,632 +0,0 @@ -'use strict'; - -const matchGraph = require('./match-graph.cjs'); -const types = require('../tokenizer/types.cjs'); - -const { hasOwnProperty } = Object.prototype; -const STUB = 0; -const TOKEN = 1; -const OPEN_SYNTAX = 2; -const CLOSE_SYNTAX = 3; - -const EXIT_REASON_MATCH = 'Match'; -const EXIT_REASON_MISMATCH = 'Mismatch'; -const EXIT_REASON_ITERATION_LIMIT = 'Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)'; - -const ITERATION_LIMIT = 15000; - -function reverseList(list) { - let prev = null; - let next = null; - let item = list; - - while (item !== null) { - next = item.prev; - item.prev = prev; - prev = item; - item = next; - } - - return prev; -} - -function areStringsEqualCaseInsensitive(testStr, referenceStr) { - if (testStr.length !== referenceStr.length) { - return false; - } - - for (let i = 0; i < testStr.length; i++) { - const referenceCode = referenceStr.charCodeAt(i); - let testCode = testStr.charCodeAt(i); - - // testCode.toLowerCase() for U+0041 LATIN CAPITAL LETTER A (A) .. U+005A LATIN CAPITAL LETTER Z (Z). - if (testCode >= 0x0041 && testCode <= 0x005A) { - testCode = testCode | 32; - } - - if (testCode !== referenceCode) { - return false; - } - } - - return true; -} - -function isContextEdgeDelim(token) { - if (token.type !== types.Delim) { - return false; - } - - // Fix matching for unicode-range: U+30??, U+FF00-FF9F - // Probably we need to check out previous match instead - return token.value !== '?'; -} - -function isCommaContextStart(token) { - if (token === null) { - return true; - } - - return ( - token.type === types.Comma || - token.type === types.Function || - token.type === types.LeftParenthesis || - token.type === types.LeftSquareBracket || - token.type === types.LeftCurlyBracket || - isContextEdgeDelim(token) - ); -} - -function isCommaContextEnd(token) { - if (token === null) { - return true; - } - - return ( - token.type === types.RightParenthesis || - token.type === types.RightSquareBracket || - token.type === types.RightCurlyBracket || - (token.type === types.Delim && token.value === '/') - ); -} - -function internalMatch(tokens, state, syntaxes) { - function moveToNextToken() { - do { - tokenIndex++; - token = tokenIndex < tokens.length ? tokens[tokenIndex] : null; - } while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment)); - } - - function getNextToken(offset) { - const nextIndex = tokenIndex + offset; - - return nextIndex < tokens.length ? tokens[nextIndex] : null; - } - - function stateSnapshotFromSyntax(nextState, prev) { - return { - nextState, - matchStack, - syntaxStack, - thenStack, - tokenIndex, - prev - }; - } - - function pushThenStack(nextState) { - thenStack = { - nextState, - matchStack, - syntaxStack, - prev: thenStack - }; - } - - function pushElseStack(nextState) { - elseStack = stateSnapshotFromSyntax(nextState, elseStack); - } - - function addTokenToMatch() { - matchStack = { - type: TOKEN, - syntax: state.syntax, - token, - prev: matchStack - }; - - moveToNextToken(); - syntaxStash = null; - - if (tokenIndex > longestMatch) { - longestMatch = tokenIndex; - } - } - - function openSyntax() { - syntaxStack = { - syntax: state.syntax, - opts: state.syntax.opts || (syntaxStack !== null && syntaxStack.opts) || null, - prev: syntaxStack - }; - - matchStack = { - type: OPEN_SYNTAX, - syntax: state.syntax, - token: matchStack.token, - prev: matchStack - }; - } - - function closeSyntax() { - if (matchStack.type === OPEN_SYNTAX) { - matchStack = matchStack.prev; - } else { - matchStack = { - type: CLOSE_SYNTAX, - syntax: syntaxStack.syntax, - token: matchStack.token, - prev: matchStack - }; - } - - syntaxStack = syntaxStack.prev; - } - - let syntaxStack = null; - let thenStack = null; - let elseStack = null; - - // null – stashing allowed, nothing stashed - // false – stashing disabled, nothing stashed - // anithing else – fail stashable syntaxes, some syntax stashed - let syntaxStash = null; - - let iterationCount = 0; // count iterations and prevent infinite loop - let exitReason = null; - - let token = null; - let tokenIndex = -1; - let longestMatch = 0; - let matchStack = { - type: STUB, - syntax: null, - token: null, - prev: null - }; - - moveToNextToken(); - - while (exitReason === null && ++iterationCount < ITERATION_LIMIT) { - // function mapList(list, fn) { - // const result = []; - // while (list) { - // result.unshift(fn(list)); - // list = list.prev; - // } - // return result; - // } - // console.log('--\n', - // '#' + iterationCount, - // require('util').inspect({ - // match: mapList(matchStack, x => x.type === TOKEN ? x.token && x.token.value : x.syntax ? ({ [OPEN_SYNTAX]: '<', [CLOSE_SYNTAX]: '</' }[x.type] || x.type) + '!' + x.syntax.name : null), - // token: token && token.value, - // tokenIndex, - // syntax: syntax.type + (syntax.id ? ' #' + syntax.id : '') - // }, { depth: null }) - // ); - switch (state.type) { - case 'Match': - if (thenStack === null) { - // turn to MISMATCH when some tokens left unmatched - if (token !== null) { - // doesn't mismatch if just one token left and it's an IE hack - if (tokenIndex !== tokens.length - 1 || (token.value !== '\\0' && token.value !== '\\9')) { - state = matchGraph.MISMATCH; - break; - } - } - - // break the main loop, return a result - MATCH - exitReason = EXIT_REASON_MATCH; - break; - } - - // go to next syntax (`then` branch) - state = thenStack.nextState; - - // check match is not empty - if (state === matchGraph.DISALLOW_EMPTY) { - if (thenStack.matchStack === matchStack) { - state = matchGraph.MISMATCH; - break; - } else { - state = matchGraph.MATCH; - } - } - - // close syntax if needed - while (thenStack.syntaxStack !== syntaxStack) { - closeSyntax(); - } - - // pop stack - thenStack = thenStack.prev; - break; - - case 'Mismatch': - // when some syntax is stashed - if (syntaxStash !== null && syntaxStash !== false) { - // there is no else branches or a branch reduce match stack - if (elseStack === null || tokenIndex > elseStack.tokenIndex) { - // restore state from the stash - elseStack = syntaxStash; - syntaxStash = false; // disable stashing - } - } else if (elseStack === null) { - // no else branches -> break the main loop - // return a result - MISMATCH - exitReason = EXIT_REASON_MISMATCH; - break; - } - - // go to next syntax (`else` branch) - state = elseStack.nextState; - - // restore all the rest stack states - thenStack = elseStack.thenStack; - syntaxStack = elseStack.syntaxStack; - matchStack = elseStack.matchStack; - tokenIndex = elseStack.tokenIndex; - token = tokenIndex < tokens.length ? tokens[tokenIndex] : null; - - // pop stack - elseStack = elseStack.prev; - break; - - case 'MatchGraph': - state = state.match; - break; - - case 'If': - // IMPORTANT: else stack push must go first, - // since it stores the state of thenStack before changes - if (state.else !== matchGraph.MISMATCH) { - pushElseStack(state.else); - } - - if (state.then !== matchGraph.MATCH) { - pushThenStack(state.then); - } - - state = state.match; - break; - - case 'MatchOnce': - state = { - type: 'MatchOnceBuffer', - syntax: state, - index: 0, - mask: 0 - }; - break; - - case 'MatchOnceBuffer': { - const terms = state.syntax.terms; - - if (state.index === terms.length) { - // no matches at all or it's required all terms to be matched - if (state.mask === 0 || state.syntax.all) { - state = matchGraph.MISMATCH; - break; - } - - // a partial match is ok - state = matchGraph.MATCH; - break; - } - - // all terms are matched - if (state.mask === (1 << terms.length) - 1) { - state = matchGraph.MATCH; - break; - } - - for (; state.index < terms.length; state.index++) { - const matchFlag = 1 << state.index; - - if ((state.mask & matchFlag) === 0) { - // IMPORTANT: else stack push must go first, - // since it stores the state of thenStack before changes - pushElseStack(state); - pushThenStack({ - type: 'AddMatchOnce', - syntax: state.syntax, - mask: state.mask | matchFlag - }); - - // match - state = terms[state.index++]; - break; - } - } - break; - } - - case 'AddMatchOnce': - state = { - type: 'MatchOnceBuffer', - syntax: state.syntax, - index: 0, - mask: state.mask - }; - break; - - case 'Enum': - if (token !== null) { - let name = token.value.toLowerCase(); - - // drop \0 and \9 hack from keyword name - if (name.indexOf('\\') !== -1) { - name = name.replace(/\\[09].*$/, ''); - } - - if (hasOwnProperty.call(state.map, name)) { - state = state.map[name]; - break; - } - } - - state = matchGraph.MISMATCH; - break; - - case 'Generic': { - const opts = syntaxStack !== null ? syntaxStack.opts : null; - const lastTokenIndex = tokenIndex + Math.floor(state.fn(token, getNextToken, opts)); - - if (!isNaN(lastTokenIndex) && lastTokenIndex > tokenIndex) { - while (tokenIndex < lastTokenIndex) { - addTokenToMatch(); - } - - state = matchGraph.MATCH; - } else { - state = matchGraph.MISMATCH; - } - - break; - } - - case 'Type': - case 'Property': { - const syntaxDict = state.type === 'Type' ? 'types' : 'properties'; - const dictSyntax = hasOwnProperty.call(syntaxes, syntaxDict) ? syntaxes[syntaxDict][state.name] : null; - - if (!dictSyntax || !dictSyntax.match) { - throw new Error( - 'Bad syntax reference: ' + - (state.type === 'Type' - ? '<' + state.name + '>' - : '<\'' + state.name + '\'>') - ); - } - - // stash a syntax for types with low priority - if (syntaxStash !== false && token !== null && state.type === 'Type') { - const lowPriorityMatching = - // https://drafts.csswg.org/css-values-4/#custom-idents - // When parsing positionally-ambiguous keywords in a property value, a <custom-ident> production - // can only claim the keyword if no other unfulfilled production can claim it. - (state.name === 'custom-ident' && token.type === types.Ident) || - - // https://drafts.csswg.org/css-values-4/#lengths - // ... if a `0` could be parsed as either a <number> or a <length> in a property (such as line-height), - // it must parse as a <number> - (state.name === 'length' && token.value === '0'); - - if (lowPriorityMatching) { - if (syntaxStash === null) { - syntaxStash = stateSnapshotFromSyntax(state, elseStack); - } - - state = matchGraph.MISMATCH; - break; - } - } - - openSyntax(); - state = dictSyntax.match; - break; - } - - case 'Keyword': { - const name = state.name; - - if (token !== null) { - let keywordName = token.value; - - // drop \0 and \9 hack from keyword name - if (keywordName.indexOf('\\') !== -1) { - keywordName = keywordName.replace(/\\[09].*$/, ''); - } - - if (areStringsEqualCaseInsensitive(keywordName, name)) { - addTokenToMatch(); - state = matchGraph.MATCH; - break; - } - } - - state = matchGraph.MISMATCH; - break; - } - - case 'AtKeyword': - case 'Function': - if (token !== null && areStringsEqualCaseInsensitive(token.value, state.name)) { - addTokenToMatch(); - state = matchGraph.MATCH; - break; - } - - state = matchGraph.MISMATCH; - break; - - case 'Token': - if (token !== null && token.value === state.value) { - addTokenToMatch(); - state = matchGraph.MATCH; - break; - } - - state = matchGraph.MISMATCH; - break; - - case 'Comma': - if (token !== null && token.type === types.Comma) { - if (isCommaContextStart(matchStack.token)) { - state = matchGraph.MISMATCH; - } else { - addTokenToMatch(); - state = isCommaContextEnd(token) ? matchGraph.MISMATCH : matchGraph.MATCH; - } - } else { - state = isCommaContextStart(matchStack.token) || isCommaContextEnd(token) ? matchGraph.MATCH : matchGraph.MISMATCH; - } - - break; - - case 'String': - let string = ''; - let lastTokenIndex = tokenIndex; - - for (; lastTokenIndex < tokens.length && string.length < state.value.length; lastTokenIndex++) { - string += tokens[lastTokenIndex].value; - } - - if (areStringsEqualCaseInsensitive(string, state.value)) { - while (tokenIndex < lastTokenIndex) { - addTokenToMatch(); - } - - state = matchGraph.MATCH; - } else { - state = matchGraph.MISMATCH; - } - - break; - - default: - throw new Error('Unknown node type: ' + state.type); - } - } - - switch (exitReason) { - case null: - console.warn('[csstree-match] BREAK after ' + ITERATION_LIMIT + ' iterations'); - exitReason = EXIT_REASON_ITERATION_LIMIT; - matchStack = null; - break; - - case EXIT_REASON_MATCH: - while (syntaxStack !== null) { - closeSyntax(); - } - break; - - default: - matchStack = null; - } - - return { - tokens, - reason: exitReason, - iterations: iterationCount, - match: matchStack, - longestMatch - }; -} - -function matchAsList(tokens, matchGraph, syntaxes) { - const matchResult = internalMatch(tokens, matchGraph, syntaxes || {}); - - if (matchResult.match !== null) { - let item = reverseList(matchResult.match).prev; - - matchResult.match = []; - - while (item !== null) { - switch (item.type) { - case OPEN_SYNTAX: - case CLOSE_SYNTAX: - matchResult.match.push({ - type: item.type, - syntax: item.syntax - }); - break; - - default: - matchResult.match.push({ - token: item.token.value, - node: item.token.node - }); - break; - } - - item = item.prev; - } - } - - return matchResult; -} - -function matchAsTree(tokens, matchGraph, syntaxes) { - const matchResult = internalMatch(tokens, matchGraph, syntaxes || {}); - - if (matchResult.match === null) { - return matchResult; - } - - let item = matchResult.match; - let host = matchResult.match = { - syntax: matchGraph.syntax || null, - match: [] - }; - const hostStack = [host]; - - // revert a list and start with 2nd item since 1st is a stub item - item = reverseList(item).prev; - - // build a tree - while (item !== null) { - switch (item.type) { - case OPEN_SYNTAX: - host.match.push(host = { - syntax: item.syntax, - match: [] - }); - hostStack.push(host); - break; - - case CLOSE_SYNTAX: - hostStack.pop(); - host = hostStack[hostStack.length - 1]; - break; - - default: - host.match.push({ - syntax: item.syntax || null, - token: item.token.value, - node: item.token.node - }); - } - - item = item.prev; - } - - return matchResult; -} - -exports.matchAsList = matchAsList; -exports.matchAsTree = matchAsTree; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs deleted file mode 100644 index 24647a5e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const index = require('../tokenizer/index.cjs'); - -const astToTokens = { - decorator(handlers) { - const tokens = []; - let curNode = null; - - return { - ...handlers, - node(node) { - const tmp = curNode; - curNode = node; - handlers.node.call(this, node); - curNode = tmp; - }, - emit(value, type, auto) { - tokens.push({ - type, - value, - node: auto ? null : curNode - }); - }, - result() { - return tokens; - } - }; - } -}; - -function stringToTokens(str) { - const tokens = []; - - index.tokenize(str, (type, start, end) => - tokens.push({ - type, - value: str.slice(start, end), - node: null - }) - ); - - return tokens; -} - -function prepareTokens(value, syntax) { - if (typeof value === 'string') { - return stringToTokens(value); - } - - return syntax.generate(value, astToTokens); -} - -module.exports = prepareTokens; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/search.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/search.cjs deleted file mode 100644 index 2b1e12c3..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/search.cjs +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -const List = require('../utils/List.cjs'); - -function getFirstMatchNode(matchNode) { - if ('node' in matchNode) { - return matchNode.node; - } - - return getFirstMatchNode(matchNode.match[0]); -} - -function getLastMatchNode(matchNode) { - if ('node' in matchNode) { - return matchNode.node; - } - - return getLastMatchNode(matchNode.match[matchNode.match.length - 1]); -} - -function matchFragments(lexer, ast, match, type, name) { - function findFragments(matchNode) { - if (matchNode.syntax !== null && - matchNode.syntax.type === type && - matchNode.syntax.name === name) { - const start = getFirstMatchNode(matchNode); - const end = getLastMatchNode(matchNode); - - lexer.syntax.walk(ast, function(node, item, list) { - if (node === start) { - const nodes = new List.List(); - - do { - nodes.appendData(item.data); - - if (item.data === end) { - break; - } - - item = item.next; - } while (item !== null); - - fragments.push({ - parent: list, - nodes - }); - } - }); - } - - if (Array.isArray(matchNode.match)) { - matchNode.match.forEach(findFragments); - } - } - - const fragments = []; - - if (match.matched !== null) { - findFragments(match.matched); - } - - return fragments; -} - -exports.matchFragments = matchFragments; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/structure.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/structure.cjs deleted file mode 100644 index 77bdd35a..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/structure.cjs +++ /dev/null @@ -1,168 +0,0 @@ -'use strict'; - -const List = require('../utils/List.cjs'); - -const { hasOwnProperty } = Object.prototype; - -function isValidNumber(value) { - // Number.isInteger(value) && value >= 0 - return ( - typeof value === 'number' && - isFinite(value) && - Math.floor(value) === value && - value >= 0 - ); -} - -function isValidLocation(loc) { - return ( - Boolean(loc) && - isValidNumber(loc.offset) && - isValidNumber(loc.line) && - isValidNumber(loc.column) - ); -} - -function createNodeStructureChecker(type, fields) { - return function checkNode(node, warn) { - if (!node || node.constructor !== Object) { - return warn(node, 'Type of node should be an Object'); - } - - for (let key in node) { - let valid = true; - - if (hasOwnProperty.call(node, key) === false) { - continue; - } - - if (key === 'type') { - if (node.type !== type) { - warn(node, 'Wrong node type `' + node.type + '`, expected `' + type + '`'); - } - } else if (key === 'loc') { - if (node.loc === null) { - continue; - } else if (node.loc && node.loc.constructor === Object) { - if (typeof node.loc.source !== 'string') { - key += '.source'; - } else if (!isValidLocation(node.loc.start)) { - key += '.start'; - } else if (!isValidLocation(node.loc.end)) { - key += '.end'; - } else { - continue; - } - } - - valid = false; - } else if (fields.hasOwnProperty(key)) { - valid = false; - - for (let i = 0; !valid && i < fields[key].length; i++) { - const fieldType = fields[key][i]; - - switch (fieldType) { - case String: - valid = typeof node[key] === 'string'; - break; - - case Boolean: - valid = typeof node[key] === 'boolean'; - break; - - case null: - valid = node[key] === null; - break; - - default: - if (typeof fieldType === 'string') { - valid = node[key] && node[key].type === fieldType; - } else if (Array.isArray(fieldType)) { - valid = node[key] instanceof List.List; - } - } - } - } else { - warn(node, 'Unknown field `' + key + '` for ' + type + ' node type'); - } - - if (!valid) { - warn(node, 'Bad value for `' + type + '.' + key + '`'); - } - } - - for (const key in fields) { - if (hasOwnProperty.call(fields, key) && - hasOwnProperty.call(node, key) === false) { - warn(node, 'Field `' + type + '.' + key + '` is missed'); - } - } - }; -} - -function processStructure(name, nodeType) { - const structure = nodeType.structure; - const fields = { - type: String, - loc: true - }; - const docs = { - type: '"' + name + '"' - }; - - for (const key in structure) { - if (hasOwnProperty.call(structure, key) === false) { - continue; - } - - const docsTypes = []; - const fieldTypes = fields[key] = Array.isArray(structure[key]) - ? structure[key].slice() - : [structure[key]]; - - for (let i = 0; i < fieldTypes.length; i++) { - const fieldType = fieldTypes[i]; - if (fieldType === String || fieldType === Boolean) { - docsTypes.push(fieldType.name); - } else if (fieldType === null) { - docsTypes.push('null'); - } else if (typeof fieldType === 'string') { - docsTypes.push('<' + fieldType + '>'); - } else if (Array.isArray(fieldType)) { - docsTypes.push('List'); // TODO: use type enum - } else { - throw new Error('Wrong value `' + fieldType + '` in `' + name + '.' + key + '` structure definition'); - } - } - - docs[key] = docsTypes.join(' | '); - } - - return { - docs, - check: createNodeStructureChecker(name, fields) - }; -} - -function getStructureFromConfig(config) { - const structure = {}; - - if (config.node) { - for (const name in config.node) { - if (hasOwnProperty.call(config.node, name)) { - const nodeType = config.node[name]; - - if (nodeType.structure) { - structure[name] = processStructure(name, nodeType); - } else { - throw new Error('Missed `structure` field in `' + name + '` node type definition'); - } - } - } - } - - return structure; -} - -exports.getStructureFromConfig = getStructureFromConfig; diff --git a/node_modules/csso/node_modules/css-tree/cjs/lexer/trace.cjs b/node_modules/csso/node_modules/css-tree/cjs/lexer/trace.cjs deleted file mode 100644 index 13753f26..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/lexer/trace.cjs +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -function getTrace(node) { - function shouldPutToTrace(syntax) { - if (syntax === null) { - return false; - } - - return ( - syntax.type === 'Type' || - syntax.type === 'Property' || - syntax.type === 'Keyword' - ); - } - - function hasMatch(matchNode) { - if (Array.isArray(matchNode.match)) { - // use for-loop for better perfomance - for (let i = 0; i < matchNode.match.length; i++) { - if (hasMatch(matchNode.match[i])) { - if (shouldPutToTrace(matchNode.syntax)) { - result.unshift(matchNode.syntax); - } - - return true; - } - } - } else if (matchNode.node === node) { - result = shouldPutToTrace(matchNode.syntax) - ? [matchNode.syntax] - : []; - - return true; - } - - return false; - } - - let result = null; - - if (this.matched !== null) { - hasMatch(this.matched); - } - - return result; -} - -function isType(node, type) { - return testNode(this, node, match => match.type === 'Type' && match.name === type); -} - -function isProperty(node, property) { - return testNode(this, node, match => match.type === 'Property' && match.name === property); -} - -function isKeyword(node) { - return testNode(this, node, match => match.type === 'Keyword'); -} - -function testNode(match, node, fn) { - const trace = getTrace.call(match, node); - - if (trace === null) { - return false; - } - - return trace.some(fn); -} - -exports.getTrace = getTrace; -exports.isKeyword = isKeyword; -exports.isProperty = isProperty; -exports.isType = isType; diff --git a/node_modules/csso/node_modules/css-tree/cjs/parser/SyntaxError.cjs b/node_modules/csso/node_modules/css-tree/cjs/parser/SyntaxError.cjs deleted file mode 100644 index 63dd44b5..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/parser/SyntaxError.cjs +++ /dev/null @@ -1,69 +0,0 @@ -'use strict'; - -const createCustomError = require('../utils/create-custom-error.cjs'); - -const MAX_LINE_LENGTH = 100; -const OFFSET_CORRECTION = 60; -const TAB_REPLACEMENT = ' '; - -function sourceFragment({ source, line, column }, extraLines) { - function processLines(start, end) { - return lines - .slice(start, end) - .map((line, idx) => - String(start + idx + 1).padStart(maxNumLength) + ' |' + line - ).join('\n'); - } - - const lines = source.split(/\r\n?|\n|\f/); - const startLine = Math.max(1, line - extraLines) - 1; - const endLine = Math.min(line + extraLines, lines.length + 1); - const maxNumLength = Math.max(4, String(endLine).length) + 1; - let cutLeft = 0; - - // column correction according to replaced tab before column - column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\t/g) || []).length; - - if (column > MAX_LINE_LENGTH) { - cutLeft = column - OFFSET_CORRECTION + 3; - column = OFFSET_CORRECTION - 2; - } - - for (let i = startLine; i <= endLine; i++) { - if (i >= 0 && i < lines.length) { - lines[i] = lines[i].replace(/\t/g, TAB_REPLACEMENT); - lines[i] = - (cutLeft > 0 && lines[i].length > cutLeft ? '\u2026' : '') + - lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) + - (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? '\u2026' : ''); - } - } - - return [ - processLines(startLine, line), - new Array(column + maxNumLength + 2).join('-') + '^', - processLines(line, endLine) - ].filter(Boolean).join('\n'); -} - -function SyntaxError(message, source, offset, line, column) { - const error = Object.assign(createCustomError.createCustomError('SyntaxError', message), { - source, - offset, - line, - column, - sourceFragment(extraLines) { - return sourceFragment({ source, line, column }, isNaN(extraLines) ? 0 : extraLines); - }, - get formattedMessage() { - return ( - `Parse error: ${message}\n` + - sourceFragment({ source, line, column }, 2) - ); - } - }); - - return error; -} - -exports.SyntaxError = SyntaxError; diff --git a/node_modules/csso/node_modules/css-tree/cjs/parser/create.cjs b/node_modules/csso/node_modules/css-tree/cjs/parser/create.cjs deleted file mode 100644 index f83d3bde..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/parser/create.cjs +++ /dev/null @@ -1,336 +0,0 @@ -'use strict'; - -const List = require('../utils/List.cjs'); -const SyntaxError = require('./SyntaxError.cjs'); -const index = require('../tokenizer/index.cjs'); -const sequence = require('./sequence.cjs'); -const OffsetToLocation = require('../tokenizer/OffsetToLocation.cjs'); -const TokenStream = require('../tokenizer/TokenStream.cjs'); -const utils = require('../tokenizer/utils.cjs'); -const types = require('../tokenizer/types.cjs'); -const names = require('../tokenizer/names.cjs'); - -const NOOP = () => {}; -const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) -const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) -const SEMICOLON = 0x003B; // U+003B SEMICOLON (;) -const LEFTCURLYBRACKET = 0x007B; // U+007B LEFT CURLY BRACKET ({) -const NULL = 0; - -function createParseContext(name) { - return function() { - return this[name](); - }; -} - -function fetchParseValues(dict) { - const result = Object.create(null); - - for (const name in dict) { - const item = dict[name]; - const fn = item.parse || item; - - if (fn) { - result[name] = fn; - } - } - - return result; -} - -function processConfig(config) { - const parseConfig = { - context: Object.create(null), - scope: Object.assign(Object.create(null), config.scope), - atrule: fetchParseValues(config.atrule), - pseudo: fetchParseValues(config.pseudo), - node: fetchParseValues(config.node) - }; - - for (const name in config.parseContext) { - switch (typeof config.parseContext[name]) { - case 'function': - parseConfig.context[name] = config.parseContext[name]; - break; - - case 'string': - parseConfig.context[name] = createParseContext(config.parseContext[name]); - break; - } - } - - return { - config: parseConfig, - ...parseConfig, - ...parseConfig.node - }; -} - -function createParser(config) { - let source = ''; - let filename = '<unknown>'; - let needPositions = false; - let onParseError = NOOP; - let onParseErrorThrow = false; - - const locationMap = new OffsetToLocation.OffsetToLocation(); - const parser = Object.assign(new TokenStream.TokenStream(), processConfig(config || {}), { - parseAtrulePrelude: true, - parseRulePrelude: true, - parseValue: true, - parseCustomProperty: false, - - readSequence: sequence.readSequence, - - consumeUntilBalanceEnd: () => 0, - consumeUntilLeftCurlyBracket(code) { - return code === LEFTCURLYBRACKET ? 1 : 0; - }, - consumeUntilLeftCurlyBracketOrSemicolon(code) { - return code === LEFTCURLYBRACKET || code === SEMICOLON ? 1 : 0; - }, - consumeUntilExclamationMarkOrSemicolon(code) { - return code === EXCLAMATIONMARK || code === SEMICOLON ? 1 : 0; - }, - consumeUntilSemicolonIncluded(code) { - return code === SEMICOLON ? 2 : 0; - }, - - createList() { - return new List.List(); - }, - createSingleNodeList(node) { - return new List.List().appendData(node); - }, - getFirstListNode(list) { - return list && list.first; - }, - getLastListNode(list) { - return list && list.last; - }, - - parseWithFallback(consumer, fallback) { - const startToken = this.tokenIndex; - - try { - return consumer.call(this); - } catch (e) { - if (onParseErrorThrow) { - throw e; - } - - const fallbackNode = fallback.call(this, startToken); - - onParseErrorThrow = true; - onParseError(e, fallbackNode); - onParseErrorThrow = false; - - return fallbackNode; - } - }, - - lookupNonWSType(offset) { - let type; - - do { - type = this.lookupType(offset++); - if (type !== types.WhiteSpace) { - return type; - } - } while (type !== NULL); - - return NULL; - }, - - charCodeAt(offset) { - return offset >= 0 && offset < source.length ? source.charCodeAt(offset) : 0; - }, - substring(offsetStart, offsetEnd) { - return source.substring(offsetStart, offsetEnd); - }, - substrToCursor(start) { - return this.source.substring(start, this.tokenStart); - }, - - cmpChar(offset, charCode) { - return utils.cmpChar(source, offset, charCode); - }, - cmpStr(offsetStart, offsetEnd, str) { - return utils.cmpStr(source, offsetStart, offsetEnd, str); - }, - - consume(tokenType) { - const start = this.tokenStart; - - this.eat(tokenType); - - return this.substrToCursor(start); - }, - consumeFunctionName() { - const name = source.substring(this.tokenStart, this.tokenEnd - 1); - - this.eat(types.Function); - - return name; - }, - consumeNumber(type) { - const number = source.substring(this.tokenStart, utils.consumeNumber(source, this.tokenStart)); - - this.eat(type); - - return number; - }, - - eat(tokenType) { - if (this.tokenType !== tokenType) { - const tokenName = names[tokenType].slice(0, -6).replace(/-/g, ' ').replace(/^./, m => m.toUpperCase()); - let message = `${/[[\](){}]/.test(tokenName) ? `"${tokenName}"` : tokenName} is expected`; - let offset = this.tokenStart; - - // tweak message and offset - switch (tokenType) { - case types.Ident: - // when identifier is expected but there is a function or url - if (this.tokenType === types.Function || this.tokenType === types.Url) { - offset = this.tokenEnd - 1; - message = 'Identifier is expected but function found'; - } else { - message = 'Identifier is expected'; - } - break; - - case types.Hash: - if (this.isDelim(NUMBERSIGN)) { - this.next(); - offset++; - message = 'Name is expected'; - } - break; - - case types.Percentage: - if (this.tokenType === types.Number) { - offset = this.tokenEnd; - message = 'Percent sign is expected'; - } - break; - } - - this.error(message, offset); - } - - this.next(); - }, - eatIdent(name) { - if (this.tokenType !== types.Ident || this.lookupValue(0, name) === false) { - this.error(`Identifier "${name}" is expected`); - } - - this.next(); - }, - eatDelim(code) { - if (!this.isDelim(code)) { - this.error(`Delim "${String.fromCharCode(code)}" is expected`); - } - - this.next(); - }, - - getLocation(start, end) { - if (needPositions) { - return locationMap.getLocationRange( - start, - end, - filename - ); - } - - return null; - }, - getLocationFromList(list) { - if (needPositions) { - const head = this.getFirstListNode(list); - const tail = this.getLastListNode(list); - return locationMap.getLocationRange( - head !== null ? head.loc.start.offset - locationMap.startOffset : this.tokenStart, - tail !== null ? tail.loc.end.offset - locationMap.startOffset : this.tokenStart, - filename - ); - } - - return null; - }, - - error(message, offset) { - const location = typeof offset !== 'undefined' && offset < source.length - ? locationMap.getLocation(offset) - : this.eof - ? locationMap.getLocation(utils.findWhiteSpaceStart(source, source.length - 1)) - : locationMap.getLocation(this.tokenStart); - - throw new SyntaxError.SyntaxError( - message || 'Unexpected input', - source, - location.offset, - location.line, - location.column - ); - } - }); - - const parse = function(source_, options) { - source = source_; - options = options || {}; - - parser.setSource(source, index.tokenize); - locationMap.setSource( - source, - options.offset, - options.line, - options.column - ); - - filename = options.filename || '<unknown>'; - needPositions = Boolean(options.positions); - onParseError = typeof options.onParseError === 'function' ? options.onParseError : NOOP; - onParseErrorThrow = false; - - parser.parseAtrulePrelude = 'parseAtrulePrelude' in options ? Boolean(options.parseAtrulePrelude) : true; - parser.parseRulePrelude = 'parseRulePrelude' in options ? Boolean(options.parseRulePrelude) : true; - parser.parseValue = 'parseValue' in options ? Boolean(options.parseValue) : true; - parser.parseCustomProperty = 'parseCustomProperty' in options ? Boolean(options.parseCustomProperty) : false; - - const { context = 'default', onComment } = options; - - if (context in parser.context === false) { - throw new Error('Unknown context `' + context + '`'); - } - - if (typeof onComment === 'function') { - parser.forEachToken((type, start, end) => { - if (type === types.Comment) { - const loc = parser.getLocation(start, end); - const value = utils.cmpStr(source, end - 2, end, '*/') - ? source.slice(start + 2, end - 2) - : source.slice(start + 2, end); - - onComment(value, loc); - } - }); - } - - const ast = parser.context[context].call(parser, options); - - if (!parser.eof) { - parser.error(); - } - - return ast; - }; - - return Object.assign(parse, { - SyntaxError: SyntaxError.SyntaxError, - config: parser.config - }); -} - -exports.createParser = createParser; diff --git a/node_modules/csso/node_modules/css-tree/cjs/parser/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/parser/index.cjs deleted file mode 100644 index 9450cb04..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/parser/index.cjs +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -const create = require('./create.cjs'); -const parser = require('../syntax/config/parser.cjs'); - -const index = create.createParser(parser); - -module.exports = index; diff --git a/node_modules/csso/node_modules/css-tree/cjs/parser/parse-selector.cjs b/node_modules/csso/node_modules/css-tree/cjs/parser/parse-selector.cjs deleted file mode 100644 index 8ea8d0d9..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/parser/parse-selector.cjs +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -const create = require('./create.cjs'); -const parserSelector = require('../syntax/config/parser-selector.cjs'); - -const parseSelector = create.createParser(parserSelector); - -module.exports = parseSelector; diff --git a/node_modules/csso/node_modules/css-tree/cjs/parser/sequence.cjs b/node_modules/csso/node_modules/css-tree/cjs/parser/sequence.cjs deleted file mode 100644 index b7d7d29b..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/parser/sequence.cjs +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -const types = require('../tokenizer/types.cjs'); - -function readSequence(recognizer) { - const children = this.createList(); - let space = false; - const context = { - recognizer - }; - - while (!this.eof) { - switch (this.tokenType) { - case types.Comment: - this.next(); - continue; - - case types.WhiteSpace: - space = true; - this.next(); - continue; - } - - let child = recognizer.getNode.call(this, context); - - if (child === undefined) { - break; - } - - if (space) { - if (recognizer.onWhiteSpace) { - recognizer.onWhiteSpace.call(this, child, children, context); - } - space = false; - } - - children.push(child); - } - - if (space && recognizer.onWhiteSpace) { - recognizer.onWhiteSpace.call(this, null, children, context); - } - - return children; -} - -exports.readSequence = readSequence; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs deleted file mode 100644 index fc7f64a6..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -const fontFace = { - parse: { - prelude: null, - block() { - return this.Block(true); - } - } -}; - -module.exports = fontFace; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/import.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/import.cjs deleted file mode 100644 index bb4402b4..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/import.cjs +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const importAtrule = { - parse: { - prelude() { - const children = this.createList(); - - this.skipSC(); - - switch (this.tokenType) { - case types.String: - children.push(this.String()); - break; - - case types.Url: - case types.Function: - children.push(this.Url()); - break; - - default: - this.error('String or url() is expected'); - } - - if (this.lookupNonWSType(0) === types.Ident || - this.lookupNonWSType(0) === types.LeftParenthesis) { - children.push(this.MediaQueryList()); - } - - return children; - }, - block: null - } -}; - -module.exports = importAtrule; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/index.cjs deleted file mode 100644 index 1ef60d4a..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/index.cjs +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -const fontFace = require('./font-face.cjs'); -const _import = require('./import.cjs'); -const media = require('./media.cjs'); -const page = require('./page.cjs'); -const supports = require('./supports.cjs'); - -const atrule = { - 'font-face': fontFace, - 'import': _import, - media, - page, - supports -}; - -module.exports = atrule; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/media.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/media.cjs deleted file mode 100644 index 90dd82ba..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/media.cjs +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -const media = { - parse: { - prelude() { - return this.createSingleNodeList( - this.MediaQueryList() - ); - }, - block() { - return this.Block(false); - } - } -}; - -module.exports = media; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/page.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/page.cjs deleted file mode 100644 index ffef0d17..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/page.cjs +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -const page = { - parse: { - prelude() { - return this.createSingleNodeList( - this.SelectorList() - ); - }, - block() { - return this.Block(true); - } - } -}; - -module.exports = page; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/supports.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/supports.cjs deleted file mode 100644 index 09529ab7..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/supports.cjs +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -function consumeRaw() { - return this.createSingleNodeList( - this.Raw(this.tokenIndex, null, false) - ); -} - -function parentheses() { - this.skipSC(); - - if (this.tokenType === types.Ident && - this.lookupNonWSType(1) === types.Colon) { - return this.createSingleNodeList( - this.Declaration() - ); - } - - return readSequence.call(this); -} - -function readSequence() { - const children = this.createList(); - let child; - - this.skipSC(); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case types.Comment: - case types.WhiteSpace: - this.next(); - continue; - - case types.Function: - child = this.Function(consumeRaw, this.scope.AtrulePrelude); - break; - - case types.Ident: - child = this.Identifier(); - break; - - case types.LeftParenthesis: - child = this.Parentheses(parentheses, this.scope.AtrulePrelude); - break; - - default: - break scan; - } - - children.push(child); - } - - return children; -} - -const supports = { - parse: { - prelude() { - const children = readSequence.call(this); - - if (this.getFirstListNode(children) === null) { - this.error('Condition is expected'); - } - - return children; - }, - block() { - return this.Block(false); - } - } -}; - -module.exports = supports; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/generator.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/config/generator.cjs deleted file mode 100644 index c0924580..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/generator.cjs +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const indexGenerate = require('../node/index-generate.cjs'); - -const config = { - node: indexGenerate -}; - -module.exports = config; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/lexer.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/config/lexer.cjs deleted file mode 100644 index 083c74cd..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/lexer.cjs +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -const data = require('../../data.cjs'); -const index = require('../node/index.cjs'); - -const lexerConfig = { - generic: true, - ...data, - node: index -}; - -module.exports = lexerConfig; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/mix.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/config/mix.cjs deleted file mode 100644 index af4ef4e3..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/mix.cjs +++ /dev/null @@ -1,142 +0,0 @@ -'use strict'; - -const { hasOwnProperty } = Object.prototype; -const shape = { - generic: true, - types: appendOrAssign, - atrules: { - prelude: appendOrAssignOrNull, - descriptors: appendOrAssignOrNull - }, - properties: appendOrAssign, - parseContext: assign, - scope: deepAssign, - atrule: ['parse'], - pseudo: ['parse'], - node: ['name', 'structure', 'parse', 'generate', 'walkContext'] -}; - -function isObject(value) { - return value && value.constructor === Object; -} - -function copy(value) { - return isObject(value) - ? { ...value } - : value; -} - -function assign(dest, src) { - return Object.assign(dest, src); -} - -function deepAssign(dest, src) { - for (const key in src) { - if (hasOwnProperty.call(src, key)) { - if (isObject(dest[key])) { - deepAssign(dest[key], src[key]); - } else { - dest[key] = copy(src[key]); - } - } - } - - return dest; -} - -function append(a, b) { - if (typeof b === 'string' && /^\s*\|/.test(b)) { - return typeof a === 'string' - ? a + b - : b.replace(/^\s*\|\s*/, ''); - } - - return b || null; -} - -function appendOrAssign(a, b) { - if (typeof b === 'string') { - return append(a, b); - } - - const result = { ...a }; - for (let key in b) { - if (hasOwnProperty.call(b, key)) { - result[key] = append(hasOwnProperty.call(a, key) ? a[key] : undefined, b[key]); - } - } - - return result; -} - -function appendOrAssignOrNull(a, b) { - const result = appendOrAssign(a, b); - - return !isObject(result) || Object.keys(result).length - ? result - : null; -} - -function mix(dest, src, shape) { - for (const key in shape) { - if (hasOwnProperty.call(shape, key) === false) { - continue; - } - - if (shape[key] === true) { - if (hasOwnProperty.call(src, key)) { - dest[key] = copy(src[key]); - } - } else if (shape[key]) { - if (typeof shape[key] === 'function') { - const fn = shape[key]; - dest[key] = fn({}, dest[key]); - dest[key] = fn(dest[key] || {}, src[key]); - } else if (isObject(shape[key])) { - const result = {}; - - for (let name in dest[key]) { - result[name] = mix({}, dest[key][name], shape[key]); - } - - for (let name in src[key]) { - result[name] = mix(result[name] || {}, src[key][name], shape[key]); - } - - dest[key] = result; - } else if (Array.isArray(shape[key])) { - const res = {}; - const innerShape = shape[key].reduce(function(s, k) { - s[k] = true; - return s; - }, {}); - - for (const [name, value] of Object.entries(dest[key] || {})) { - res[name] = {}; - if (value) { - mix(res[name], value, innerShape); - } - } - - for (const name in src[key]) { - if (hasOwnProperty.call(src[key], name)) { - if (!res[name]) { - res[name] = {}; - } - - if (src[key] && src[key][name]) { - mix(res[name], src[key][name], innerShape); - } - } - } - - dest[key] = res; - } - } - } - return dest; -} - -const mix$1 = (dest, src) => mix(dest, src, shape); - -module.exports = mix$1; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser-selector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser-selector.cjs deleted file mode 100644 index 03b1683b..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser-selector.cjs +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -const index = require('../pseudo/index.cjs'); -const indexParseSelector = require('../node/index-parse-selector.cjs'); -const selector = require('../scope/selector.cjs'); - -const config = { - parseContext: { - default: 'SelectorList', - selectorList: 'SelectorList', - selector: 'Selector' - }, - scope: { Selector: selector }, - atrule: {}, - pseudo: index, - node: indexParseSelector -}; - -module.exports = config; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser.cjs deleted file mode 100644 index af65e801..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser.cjs +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -const index = require('../scope/index.cjs'); -const index$1 = require('../atrule/index.cjs'); -const index$2 = require('../pseudo/index.cjs'); -const indexParse = require('../node/index-parse.cjs'); - -const config = { - parseContext: { - default: 'StyleSheet', - stylesheet: 'StyleSheet', - atrule: 'Atrule', - atrulePrelude(options) { - return this.AtrulePrelude(options.atrule ? String(options.atrule) : null); - }, - mediaQueryList: 'MediaQueryList', - mediaQuery: 'MediaQuery', - rule: 'Rule', - selectorList: 'SelectorList', - selector: 'Selector', - block() { - return this.Block(true); - }, - declarationList: 'DeclarationList', - declaration: 'Declaration', - value: 'Value' - }, - scope: index, - atrule: index$1, - pseudo: index$2, - node: indexParse -}; - -module.exports = config; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/walker.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/config/walker.cjs deleted file mode 100644 index 95c8f7df..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/config/walker.cjs +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const index = require('../node/index.cjs'); - -const config = { - node: index -}; - -module.exports = config; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/create.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/create.cjs deleted file mode 100644 index 1169fa71..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/create.cjs +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -const index = require('../tokenizer/index.cjs'); -const create = require('../parser/create.cjs'); -const create$2 = require('../generator/create.cjs'); -const create$3 = require('../convertor/create.cjs'); -const create$1 = require('../walker/create.cjs'); -const Lexer = require('../lexer/Lexer.cjs'); -const mix = require('./config/mix.cjs'); - -function createSyntax(config) { - const parse = create.createParser(config); - const walk = create$1.createWalker(config); - const generate = create$2.createGenerator(config); - const { fromPlainObject, toPlainObject } = create$3.createConvertor(walk); - - const syntax = { - lexer: null, - createLexer: config => new Lexer.Lexer(config, syntax, syntax.lexer.structure), - - tokenize: index.tokenize, - parse, - generate, - - walk, - find: walk.find, - findLast: walk.findLast, - findAll: walk.findAll, - - fromPlainObject, - toPlainObject, - - fork(extension) { - const base = mix({}, config); // copy of config - - return createSyntax( - typeof extension === 'function' - ? extension(base, Object.assign) - : mix(base, extension) - ); - } - }; - - syntax.lexer = new Lexer.Lexer({ - generic: true, - types: config.types, - atrules: config.atrules, - properties: config.properties, - node: config.node - }, syntax); - - return syntax; -} -const createSyntax$1 = config => createSyntax(mix({}, config)); - -module.exports = createSyntax$1; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/function/expression.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/function/expression.cjs deleted file mode 100644 index 43d81374..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/function/expression.cjs +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -// legacy IE function -// expression( <any-value> ) -function expressionFn() { - return this.createSingleNodeList( - this.Raw(this.tokenIndex, null, false) - ); -} - -module.exports = expressionFn; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/function/var.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/function/var.cjs deleted file mode 100644 index 96729706..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/function/var.cjs +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -// var( <ident> , <value>? ) -function varFn() { - const children = this.createList(); - - this.skipSC(); - - // NOTE: Don't check more than a first argument is an ident, rest checks are for lexer - children.push(this.Identifier()); - - this.skipSC(); - - if (this.tokenType === types.Comma) { - children.push(this.Operator()); - - const startIndex = this.tokenIndex; - const value = this.parseCustomProperty - ? this.Value(null) - : this.Raw(this.tokenIndex, this.consumeUntilExclamationMarkOrSemicolon, false); - - if (value.type === 'Value' && value.children.isEmpty) { - for (let offset = startIndex - this.tokenIndex; offset <= 0; offset++) { - if (this.lookupType(offset) === types.WhiteSpace) { - value.children.appendData({ - type: 'WhiteSpace', - loc: null, - value: ' ' - }); - break; - } - } - } - - children.push(value); - } - - return children; -} - -module.exports = varFn; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/index.cjs deleted file mode 100644 index 24de4957..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/index.cjs +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -const create = require('./create.cjs'); -const lexer = require('./config/lexer.cjs'); -const parser = require('./config/parser.cjs'); -const walker = require('./config/walker.cjs'); - -const syntax = create({ - ...lexer, - ...parser, - ...walker -}); - -module.exports = syntax; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs deleted file mode 100644 index cd59927a..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs +++ /dev/null @@ -1,293 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); -const charCodeDefinitions = require('../../tokenizer/char-code-definitions.cjs'); - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const N = 0x006E; // U+006E LATIN SMALL LETTER N (n) -const DISALLOW_SIGN = true; -const ALLOW_SIGN = false; - -function checkInteger(offset, disallowSign) { - let pos = this.tokenStart + offset; - const code = this.charCodeAt(pos); - - if (code === PLUSSIGN || code === HYPHENMINUS) { - if (disallowSign) { - this.error('Number sign is not allowed'); - } - pos++; - } - - for (; pos < this.tokenEnd; pos++) { - if (!charCodeDefinitions.isDigit(this.charCodeAt(pos))) { - this.error('Integer is expected', pos); - } - } -} - -function checkTokenIsInteger(disallowSign) { - return checkInteger.call(this, 0, disallowSign); -} - -function expectCharCode(offset, code) { - if (!this.cmpChar(this.tokenStart + offset, code)) { - let msg = ''; - - switch (code) { - case N: - msg = 'N is expected'; - break; - case HYPHENMINUS: - msg = 'HyphenMinus is expected'; - break; - } - - this.error(msg, this.tokenStart + offset); - } -} - -// ... <signed-integer> -// ... ['+' | '-'] <signless-integer> -function consumeB() { - let offset = 0; - let sign = 0; - let type = this.tokenType; - - while (type === types.WhiteSpace || type === types.Comment) { - type = this.lookupType(++offset); - } - - if (type !== types.Number) { - if (this.isDelim(PLUSSIGN, offset) || - this.isDelim(HYPHENMINUS, offset)) { - sign = this.isDelim(PLUSSIGN, offset) ? PLUSSIGN : HYPHENMINUS; - - do { - type = this.lookupType(++offset); - } while (type === types.WhiteSpace || type === types.Comment); - - if (type !== types.Number) { - this.skip(offset); - checkTokenIsInteger.call(this, DISALLOW_SIGN); - } - } else { - return null; - } - } - - if (offset > 0) { - this.skip(offset); - } - - if (sign === 0) { - type = this.charCodeAt(this.tokenStart); - if (type !== PLUSSIGN && type !== HYPHENMINUS) { - this.error('Number sign is expected'); - } - } - - checkTokenIsInteger.call(this, sign !== 0); - return sign === HYPHENMINUS ? '-' + this.consume(types.Number) : this.consume(types.Number); -} - -// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb -const name = 'AnPlusB'; -const structure = { - a: [String, null], - b: [String, null] -}; - -function parse() { - /* eslint-disable brace-style*/ - const start = this.tokenStart; - let a = null; - let b = null; - - // <integer> - if (this.tokenType === types.Number) { - checkTokenIsInteger.call(this, ALLOW_SIGN); - b = this.consume(types.Number); - } - - // -n - // -n <signed-integer> - // -n ['+' | '-'] <signless-integer> - // -n- <signless-integer> - // <dashndashdigit-ident> - else if (this.tokenType === types.Ident && this.cmpChar(this.tokenStart, HYPHENMINUS)) { - a = '-1'; - - expectCharCode.call(this, 1, N); - - switch (this.tokenEnd - this.tokenStart) { - // -n - // -n <signed-integer> - // -n ['+' | '-'] <signless-integer> - case 2: - this.next(); - b = consumeB.call(this); - break; - - // -n- <signless-integer> - case 3: - expectCharCode.call(this, 2, HYPHENMINUS); - - this.next(); - this.skipSC(); - - checkTokenIsInteger.call(this, DISALLOW_SIGN); - - b = '-' + this.consume(types.Number); - break; - - // <dashndashdigit-ident> - default: - expectCharCode.call(this, 2, HYPHENMINUS); - checkInteger.call(this, 3, DISALLOW_SIGN); - this.next(); - - b = this.substrToCursor(start + 2); - } - } - - // '+'? n - // '+'? n <signed-integer> - // '+'? n ['+' | '-'] <signless-integer> - // '+'? n- <signless-integer> - // '+'? <ndashdigit-ident> - else if (this.tokenType === types.Ident || (this.isDelim(PLUSSIGN) && this.lookupType(1) === types.Ident)) { - let sign = 0; - a = '1'; - - // just ignore a plus - if (this.isDelim(PLUSSIGN)) { - sign = 1; - this.next(); - } - - expectCharCode.call(this, 0, N); - - switch (this.tokenEnd - this.tokenStart) { - // '+'? n - // '+'? n <signed-integer> - // '+'? n ['+' | '-'] <signless-integer> - case 1: - this.next(); - b = consumeB.call(this); - break; - - // '+'? n- <signless-integer> - case 2: - expectCharCode.call(this, 1, HYPHENMINUS); - - this.next(); - this.skipSC(); - - checkTokenIsInteger.call(this, DISALLOW_SIGN); - - b = '-' + this.consume(types.Number); - break; - - // '+'? <ndashdigit-ident> - default: - expectCharCode.call(this, 1, HYPHENMINUS); - checkInteger.call(this, 2, DISALLOW_SIGN); - this.next(); - - b = this.substrToCursor(start + sign + 1); - } - } - - // <ndashdigit-dimension> - // <ndash-dimension> <signless-integer> - // <n-dimension> - // <n-dimension> <signed-integer> - // <n-dimension> ['+' | '-'] <signless-integer> - else if (this.tokenType === types.Dimension) { - const code = this.charCodeAt(this.tokenStart); - const sign = code === PLUSSIGN || code === HYPHENMINUS; - let i = this.tokenStart + sign; - - for (; i < this.tokenEnd; i++) { - if (!charCodeDefinitions.isDigit(this.charCodeAt(i))) { - break; - } - } - - if (i === this.tokenStart + sign) { - this.error('Integer is expected', this.tokenStart + sign); - } - - expectCharCode.call(this, i - this.tokenStart, N); - a = this.substring(start, i); - - // <n-dimension> - // <n-dimension> <signed-integer> - // <n-dimension> ['+' | '-'] <signless-integer> - if (i + 1 === this.tokenEnd) { - this.next(); - b = consumeB.call(this); - } else { - expectCharCode.call(this, i - this.tokenStart + 1, HYPHENMINUS); - - // <ndash-dimension> <signless-integer> - if (i + 2 === this.tokenEnd) { - this.next(); - this.skipSC(); - checkTokenIsInteger.call(this, DISALLOW_SIGN); - b = '-' + this.consume(types.Number); - } - // <ndashdigit-dimension> - else { - checkInteger.call(this, i - this.tokenStart + 2, DISALLOW_SIGN); - this.next(); - b = this.substrToCursor(i + 1); - } - } - } else { - this.error(); - } - - if (a !== null && a.charCodeAt(0) === PLUSSIGN) { - a = a.substr(1); - } - - if (b !== null && b.charCodeAt(0) === PLUSSIGN) { - b = b.substr(1); - } - - return { - type: 'AnPlusB', - loc: this.getLocation(start, this.tokenStart), - a, - b - }; -} - -function generate(node) { - if (node.a) { - const a = - node.a === '+1' && 'n' || - node.a === '1' && 'n' || - node.a === '-1' && '-n' || - node.a + 'n'; - - if (node.b) { - const b = node.b[0] === '-' || node.b[0] === '+' - ? node.b - : '+' + node.b; - this.tokenize(a + b); - } else { - this.tokenize(a); - } - } else { - this.tokenize(node.b); - } -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Atrule.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Atrule.cjs deleted file mode 100644 index 266e50fc..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Atrule.cjs +++ /dev/null @@ -1,103 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -function consumeRaw(startToken) { - return this.Raw(startToken, this.consumeUntilLeftCurlyBracketOrSemicolon, true); -} - -function isDeclarationBlockAtrule() { - for (let offset = 1, type; type = this.lookupType(offset); offset++) { - if (type === types.RightCurlyBracket) { - return true; - } - - if (type === types.LeftCurlyBracket || - type === types.AtKeyword) { - return false; - } - } - - return false; -} - - -const name = 'Atrule'; -const walkContext = 'atrule'; -const structure = { - name: String, - prelude: ['AtrulePrelude', 'Raw', null], - block: ['Block', null] -}; - -function parse() { - const start = this.tokenStart; - let name; - let nameLowerCase; - let prelude = null; - let block = null; - - this.eat(types.AtKeyword); - - name = this.substrToCursor(start + 1); - nameLowerCase = name.toLowerCase(); - this.skipSC(); - - // parse prelude - if (this.eof === false && - this.tokenType !== types.LeftCurlyBracket && - this.tokenType !== types.Semicolon) { - if (this.parseAtrulePrelude) { - prelude = this.parseWithFallback(this.AtrulePrelude.bind(this, name), consumeRaw); - } else { - prelude = consumeRaw.call(this, this.tokenIndex); - } - - this.skipSC(); - } - - switch (this.tokenType) { - case types.Semicolon: - this.next(); - break; - - case types.LeftCurlyBracket: - if (hasOwnProperty.call(this.atrule, nameLowerCase) && - typeof this.atrule[nameLowerCase].block === 'function') { - block = this.atrule[nameLowerCase].block.call(this); - } else { - // TODO: should consume block content as Raw? - block = this.Block(isDeclarationBlockAtrule.call(this)); - } - - break; - } - - return { - type: 'Atrule', - loc: this.getLocation(start, this.tokenStart), - name, - prelude, - block - }; -} - -function generate(node) { - this.token(types.AtKeyword, '@' + node.name); - - if (node.prelude !== null) { - this.node(node.prelude); - } - - if (node.block) { - this.node(node.block); - } else { - this.token(types.Semicolon, ';'); - } -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs deleted file mode 100644 index 0db69b67..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'AtrulePrelude'; -const walkContext = 'atrulePrelude'; -const structure = { - children: [[]] -}; - -function parse(name) { - let children = null; - - if (name !== null) { - name = name.toLowerCase(); - } - - this.skipSC(); - - if (hasOwnProperty.call(this.atrule, name) && - typeof this.atrule[name].prelude === 'function') { - // custom consumer - children = this.atrule[name].prelude.call(this); - } else { - // default consumer - children = this.readSequence(this.scope.AtrulePrelude); - } - - this.skipSC(); - - if (this.eof !== true && - this.tokenType !== types.LeftCurlyBracket && - this.tokenType !== types.Semicolon) { - this.error('Semicolon or block is expected'); - } - - return { - type: 'AtrulePrelude', - loc: this.getLocationFromList(children), - children - }; -} - -function generate(node) { - this.children(node); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs deleted file mode 100644 index 757d4ebf..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs +++ /dev/null @@ -1,148 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($) -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const EQUALSSIGN = 0x003D; // U+003D EQUALS SIGN (=) -const CIRCUMFLEXACCENT = 0x005E; // U+005E (^) -const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) -const TILDE = 0x007E; // U+007E TILDE (~) - -function getAttributeName() { - if (this.eof) { - this.error('Unexpected end of input'); - } - - const start = this.tokenStart; - let expectIdent = false; - - if (this.isDelim(ASTERISK)) { - expectIdent = true; - this.next(); - } else if (!this.isDelim(VERTICALLINE)) { - this.eat(types.Ident); - } - - if (this.isDelim(VERTICALLINE)) { - if (this.charCodeAt(this.tokenStart + 1) !== EQUALSSIGN) { - this.next(); - this.eat(types.Ident); - } else if (expectIdent) { - this.error('Identifier is expected', this.tokenEnd); - } - } else if (expectIdent) { - this.error('Vertical line is expected'); - } - - return { - type: 'Identifier', - loc: this.getLocation(start, this.tokenStart), - name: this.substrToCursor(start) - }; -} - -function getOperator() { - const start = this.tokenStart; - const code = this.charCodeAt(start); - - if (code !== EQUALSSIGN && // = - code !== TILDE && // ~= - code !== CIRCUMFLEXACCENT && // ^= - code !== DOLLARSIGN && // $= - code !== ASTERISK && // *= - code !== VERTICALLINE // |= - ) { - this.error('Attribute selector (=, ~=, ^=, $=, *=, |=) is expected'); - } - - this.next(); - - if (code !== EQUALSSIGN) { - if (!this.isDelim(EQUALSSIGN)) { - this.error('Equal sign is expected'); - } - - this.next(); - } - - return this.substrToCursor(start); -} - -// '[' <wq-name> ']' -// '[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']' -const name = 'AttributeSelector'; -const structure = { - name: 'Identifier', - matcher: [String, null], - value: ['String', 'Identifier', null], - flags: [String, null] -}; - -function parse() { - const start = this.tokenStart; - let name; - let matcher = null; - let value = null; - let flags = null; - - this.eat(types.LeftSquareBracket); - this.skipSC(); - - name = getAttributeName.call(this); - this.skipSC(); - - if (this.tokenType !== types.RightSquareBracket) { - // avoid case `[name i]` - if (this.tokenType !== types.Ident) { - matcher = getOperator.call(this); - - this.skipSC(); - - value = this.tokenType === types.String - ? this.String() - : this.Identifier(); - - this.skipSC(); - } - - // attribute flags - if (this.tokenType === types.Ident) { - flags = this.consume(types.Ident); - - this.skipSC(); - } - } - - this.eat(types.RightSquareBracket); - - return { - type: 'AttributeSelector', - loc: this.getLocation(start, this.tokenStart), - name, - matcher, - value, - flags - }; -} - -function generate(node) { - this.token(types.Delim, '['); - this.node(node.name); - - if (node.matcher !== null) { - this.tokenize(node.matcher); - this.node(node.value); - } - - if (node.flags !== null) { - this.token(types.Ident, node.flags); - } - - this.token(types.Delim, ']'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Block.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Block.cjs deleted file mode 100644 index c180d50e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Block.cjs +++ /dev/null @@ -1,90 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -function consumeRaw(startToken) { - return this.Raw(startToken, null, true); -} -function consumeRule() { - return this.parseWithFallback(this.Rule, consumeRaw); -} -function consumeRawDeclaration(startToken) { - return this.Raw(startToken, this.consumeUntilSemicolonIncluded, true); -} -function consumeDeclaration() { - if (this.tokenType === types.Semicolon) { - return consumeRawDeclaration.call(this, this.tokenIndex); - } - - const node = this.parseWithFallback(this.Declaration, consumeRawDeclaration); - - if (this.tokenType === types.Semicolon) { - this.next(); - } - - return node; -} - -const name = 'Block'; -const walkContext = 'block'; -const structure = { - children: [[ - 'Atrule', - 'Rule', - 'Declaration' - ]] -}; - -function parse(isDeclaration) { - const consumer = isDeclaration ? consumeDeclaration : consumeRule; - const start = this.tokenStart; - let children = this.createList(); - - this.eat(types.LeftCurlyBracket); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case types.RightCurlyBracket: - break scan; - - case types.WhiteSpace: - case types.Comment: - this.next(); - break; - - case types.AtKeyword: - children.push(this.parseWithFallback(this.Atrule, consumeRaw)); - break; - - default: - children.push(consumer.call(this)); - } - } - - if (!this.eof) { - this.eat(types.RightCurlyBracket); - } - - return { - type: 'Block', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -function generate(node) { - this.token(types.LeftCurlyBracket, '{'); - this.children(node, prev => { - if (prev.type === 'Declaration') { - this.token(types.Semicolon, ';'); - } - }); - this.token(types.RightCurlyBracket, '}'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Brackets.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Brackets.cjs deleted file mode 100644 index eb181318..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Brackets.cjs +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'Brackets'; -const structure = { - children: [[]] -}; - -function parse(readSequence, recognizer) { - const start = this.tokenStart; - let children = null; - - this.eat(types.LeftSquareBracket); - - children = readSequence.call(this, recognizer); - - if (!this.eof) { - this.eat(types.RightSquareBracket); - } - - return { - type: 'Brackets', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -function generate(node) { - this.token(types.Delim, '['); - this.children(node); - this.token(types.Delim, ']'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDC.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDC.cjs deleted file mode 100644 index aadf3ad7..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDC.cjs +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'CDC'; -const structure = []; - -function parse() { - const start = this.tokenStart; - - this.eat(types.CDC); // --> - - return { - type: 'CDC', - loc: this.getLocation(start, this.tokenStart) - }; -} - -function generate() { - this.token(types.CDC, '-->'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDO.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDO.cjs deleted file mode 100644 index 0e982178..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDO.cjs +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'CDO'; -const structure = []; - -function parse() { - const start = this.tokenStart; - - this.eat(types.CDO); // <!-- - - return { - type: 'CDO', - loc: this.getLocation(start, this.tokenStart) - }; -} - -function generate() { - this.token(types.CDO, '<!--'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs deleted file mode 100644 index ff3de5cf..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const FULLSTOP = 0x002E; // U+002E FULL STOP (.) - -// '.' ident -const name = 'ClassSelector'; -const structure = { - name: String -}; - -function parse() { - this.eatDelim(FULLSTOP); - - return { - type: 'ClassSelector', - loc: this.getLocation(this.tokenStart - 1, this.tokenEnd), - name: this.consume(types.Ident) - }; -} - -function generate(node) { - this.token(types.Delim, '.'); - this.token(types.Ident, node.name); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Combinator.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Combinator.cjs deleted file mode 100644 index 1a242788..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Combinator.cjs +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) -const GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>) -const TILDE = 0x007E; // U+007E TILDE (~) - -const name = 'Combinator'; -const structure = { - name: String -}; - -// + | > | ~ | /deep/ -function parse() { - const start = this.tokenStart; - let name; - - switch (this.tokenType) { - case types.WhiteSpace: - name = ' '; - break; - - case types.Delim: - switch (this.charCodeAt(this.tokenStart)) { - case GREATERTHANSIGN: - case PLUSSIGN: - case TILDE: - this.next(); - break; - - case SOLIDUS: - this.next(); - this.eatIdent('deep'); - this.eatDelim(SOLIDUS); - break; - - default: - this.error('Combinator is expected'); - } - - name = this.substrToCursor(start); - break; - } - - return { - type: 'Combinator', - loc: this.getLocation(start, this.tokenStart), - name - }; -} - -function generate(node) { - this.tokenize(node.name); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Comment.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Comment.cjs deleted file mode 100644 index 083e950b..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Comment.cjs +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) - - -const name = 'Comment'; -const structure = { - value: String -}; - -function parse() { - const start = this.tokenStart; - let end = this.tokenEnd; - - this.eat(types.Comment); - - if ((end - start + 2) >= 2 && - this.charCodeAt(end - 2) === ASTERISK && - this.charCodeAt(end - 1) === SOLIDUS) { - end -= 2; - } - - return { - type: 'Comment', - loc: this.getLocation(start, this.tokenStart), - value: this.substring(start + 2, end) - }; -} - -function generate(node) { - this.token(types.Comment, '/*' + node.value + '*/'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Declaration.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Declaration.cjs deleted file mode 100644 index c0075770..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Declaration.cjs +++ /dev/null @@ -1,166 +0,0 @@ -'use strict'; - -const names = require('../../utils/names.cjs'); -const types = require('../../tokenizer/types.cjs'); - -const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) -const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) -const DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($) -const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&) -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) - -function consumeValueRaw(startToken) { - return this.Raw(startToken, this.consumeUntilExclamationMarkOrSemicolon, true); -} - -function consumeCustomPropertyRaw(startToken) { - return this.Raw(startToken, this.consumeUntilExclamationMarkOrSemicolon, false); -} - -function consumeValue() { - const startValueToken = this.tokenIndex; - const value = this.Value(); - - if (value.type !== 'Raw' && - this.eof === false && - this.tokenType !== types.Semicolon && - this.isDelim(EXCLAMATIONMARK) === false && - this.isBalanceEdge(startValueToken) === false) { - this.error(); - } - - return value; -} - -const name = 'Declaration'; -const walkContext = 'declaration'; -const structure = { - important: [Boolean, String], - property: String, - value: ['Value', 'Raw'] -}; - -function parse() { - const start = this.tokenStart; - const startToken = this.tokenIndex; - const property = readProperty.call(this); - const customProperty = names.isCustomProperty(property); - const parseValue = customProperty ? this.parseCustomProperty : this.parseValue; - const consumeRaw = customProperty ? consumeCustomPropertyRaw : consumeValueRaw; - let important = false; - let value; - - this.skipSC(); - this.eat(types.Colon); - - const valueStart = this.tokenIndex; - - if (!customProperty) { - this.skipSC(); - } - - if (parseValue) { - value = this.parseWithFallback(consumeValue, consumeRaw); - } else { - value = consumeRaw.call(this, this.tokenIndex); - } - - if (customProperty && value.type === 'Value' && value.children.isEmpty) { - for (let offset = valueStart - this.tokenIndex; offset <= 0; offset++) { - if (this.lookupType(offset) === types.WhiteSpace) { - value.children.appendData({ - type: 'WhiteSpace', - loc: null, - value: ' ' - }); - break; - } - } - } - - if (this.isDelim(EXCLAMATIONMARK)) { - important = getImportant.call(this); - this.skipSC(); - } - - // Do not include semicolon to range per spec - // https://drafts.csswg.org/css-syntax/#declaration-diagram - - if (this.eof === false && - this.tokenType !== types.Semicolon && - this.isBalanceEdge(startToken) === false) { - this.error(); - } - - return { - type: 'Declaration', - loc: this.getLocation(start, this.tokenStart), - important, - property, - value - }; -} - -function generate(node) { - this.token(types.Ident, node.property); - this.token(types.Colon, ':'); - this.node(node.value); - - if (node.important) { - this.token(types.Delim, '!'); - this.token(types.Ident, node.important === true ? 'important' : node.important); - } -} - -function readProperty() { - const start = this.tokenStart; - - // hacks - if (this.tokenType === types.Delim) { - switch (this.charCodeAt(this.tokenStart)) { - case ASTERISK: - case DOLLARSIGN: - case PLUSSIGN: - case NUMBERSIGN: - case AMPERSAND: - this.next(); - break; - - // TODO: not sure we should support this hack - case SOLIDUS: - this.next(); - if (this.isDelim(SOLIDUS)) { - this.next(); - } - break; - } - } - - if (this.tokenType === types.Hash) { - this.eat(types.Hash); - } else { - this.eat(types.Ident); - } - - return this.substrToCursor(start); -} - -// ! ws* important -function getImportant() { - this.eat(types.Delim); - this.skipSC(); - - const important = this.consume(types.Ident); - - // store original value in case it differ from `important` - // for better original source restoring and hacks like `!ie` support - return important === 'important' ? true : important; -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs deleted file mode 100644 index 5ab7de10..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -function consumeRaw(startToken) { - return this.Raw(startToken, this.consumeUntilSemicolonIncluded, true); -} - -const name = 'DeclarationList'; -const structure = { - children: [[ - 'Declaration' - ]] -}; - -function parse() { - const children = this.createList(); - - while (!this.eof) { - switch (this.tokenType) { - case types.WhiteSpace: - case types.Comment: - case types.Semicolon: - this.next(); - break; - - default: - children.push(this.parseWithFallback(this.Declaration, consumeRaw)); - } - } - - return { - type: 'DeclarationList', - loc: this.getLocationFromList(children), - children - }; -} - -function generate(node) { - this.children(node, prev => { - if (prev.type === 'Declaration') { - this.token(types.Semicolon, ';'); - } - }); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Dimension.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Dimension.cjs deleted file mode 100644 index 227184cc..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Dimension.cjs +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'Dimension'; -const structure = { - value: String, - unit: String -}; - -function parse() { - const start = this.tokenStart; - const value = this.consumeNumber(types.Dimension); - - return { - type: 'Dimension', - loc: this.getLocation(start, this.tokenStart), - value, - unit: this.substring(start + value.length, this.tokenStart) - }; -} - -function generate(node) { - this.token(types.Dimension, node.value + node.unit); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Function.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Function.cjs deleted file mode 100644 index b5e3b57e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Function.cjs +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'Function'; -const walkContext = 'function'; -const structure = { - name: String, - children: [[]] -}; - -// <function-token> <sequence> ) -function parse(readSequence, recognizer) { - const start = this.tokenStart; - const name = this.consumeFunctionName(); - const nameLowerCase = name.toLowerCase(); - let children; - - children = recognizer.hasOwnProperty(nameLowerCase) - ? recognizer[nameLowerCase].call(this, recognizer) - : readSequence.call(this, recognizer); - - if (!this.eof) { - this.eat(types.RightParenthesis); - } - - return { - type: 'Function', - loc: this.getLocation(start, this.tokenStart), - name, - children - }; -} - -function generate(node) { - this.token(types.Function, node.name + '('); - this.children(node); - this.token(types.RightParenthesis, ')'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Hash.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Hash.cjs deleted file mode 100644 index 8b5f3753..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Hash.cjs +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -// '#' ident -const xxx = 'XXX'; -const name = 'Hash'; -const structure = { - value: String -}; -function parse() { - const start = this.tokenStart; - - this.eat(types.Hash); - - return { - type: 'Hash', - loc: this.getLocation(start, this.tokenStart), - value: this.substrToCursor(start + 1) - }; -} -function generate(node) { - this.token(types.Hash, '#' + node.value); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.xxx = xxx; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs deleted file mode 100644 index 264525db..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'IdSelector'; -const structure = { - name: String -}; - -function parse() { - const start = this.tokenStart; - - // TODO: check value is an ident - this.eat(types.Hash); - - return { - type: 'IdSelector', - loc: this.getLocation(start, this.tokenStart), - name: this.substrToCursor(start + 1) - }; -} - -function generate(node) { - // Using Delim instead of Hash is a hack to avoid for a whitespace between ident and id-selector - // in safe mode (e.g. "a#id"), because IE11 doesn't allow a sequence <ident-token> <hash-token> - // without a whitespace in values (e.g. "1px solid#000") - this.token(types.Delim, '#' + node.name); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Identifier.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Identifier.cjs deleted file mode 100644 index 8928cf8c..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Identifier.cjs +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'Identifier'; -const structure = { - name: String -}; - -function parse() { - return { - type: 'Identifier', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - name: this.consume(types.Ident) - }; -} - -function generate(node) { - this.token(types.Ident, node.name); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs deleted file mode 100644 index 90e8d5a8..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'MediaFeature'; -const structure = { - name: String, - value: ['Identifier', 'Number', 'Dimension', 'Ratio', null] -}; - -function parse() { - const start = this.tokenStart; - let name; - let value = null; - - this.eat(types.LeftParenthesis); - this.skipSC(); - - name = this.consume(types.Ident); - this.skipSC(); - - if (this.tokenType !== types.RightParenthesis) { - this.eat(types.Colon); - this.skipSC(); - - switch (this.tokenType) { - case types.Number: - if (this.lookupNonWSType(1) === types.Delim) { - value = this.Ratio(); - } else { - value = this.Number(); - } - - break; - - case types.Dimension: - value = this.Dimension(); - break; - - case types.Ident: - value = this.Identifier(); - break; - - default: - this.error('Number, dimension, ratio or identifier is expected'); - } - - this.skipSC(); - } - - this.eat(types.RightParenthesis); - - return { - type: 'MediaFeature', - loc: this.getLocation(start, this.tokenStart), - name, - value - }; -} - -function generate(node) { - this.token(types.LeftParenthesis, '('); - this.token(types.Ident, node.name); - - if (node.value !== null) { - this.token(types.Colon, ':'); - this.node(node.value); - } - - this.token(types.RightParenthesis, ')'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs deleted file mode 100644 index 0b99d960..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'MediaQuery'; -const structure = { - children: [[ - 'Identifier', - 'MediaFeature', - 'WhiteSpace' - ]] -}; - -function parse() { - const children = this.createList(); - let child = null; - - this.skipSC(); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case types.Comment: - case types.WhiteSpace: - this.next(); - continue; - - case types.Ident: - child = this.Identifier(); - break; - - case types.LeftParenthesis: - child = this.MediaFeature(); - break; - - default: - break scan; - } - - children.push(child); - } - - if (child === null) { - this.error('Identifier or parenthesis is expected'); - } - - return { - type: 'MediaQuery', - loc: this.getLocationFromList(children), - children - }; -} - -function generate(node) { - this.children(node); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs deleted file mode 100644 index 38779477..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'MediaQueryList'; -const structure = { - children: [[ - 'MediaQuery' - ]] -}; - -function parse() { - const children = this.createList(); - - this.skipSC(); - - while (!this.eof) { - children.push(this.MediaQuery()); - - if (this.tokenType !== types.Comma) { - break; - } - - this.next(); - } - - return { - type: 'MediaQueryList', - loc: this.getLocationFromList(children), - children - }; -} - -function generate(node) { - this.children(node, () => this.token(types.Comma, ',')); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Nth.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Nth.cjs deleted file mode 100644 index 709312f4..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Nth.cjs +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'Nth'; -const structure = { - nth: ['AnPlusB', 'Identifier'], - selector: ['SelectorList', null] -}; - -function parse() { - this.skipSC(); - - const start = this.tokenStart; - let end = start; - let selector = null; - let nth; - - if (this.lookupValue(0, 'odd') || this.lookupValue(0, 'even')) { - nth = this.Identifier(); - } else { - nth = this.AnPlusB(); - } - - end = this.tokenStart; - this.skipSC(); - - if (this.lookupValue(0, 'of')) { - this.next(); - - selector = this.SelectorList(); - end = this.tokenStart; - } - - return { - type: 'Nth', - loc: this.getLocation(start, end), - nth, - selector - }; -} - -function generate(node) { - this.node(node.nth); - if (node.selector !== null) { - this.token(types.Ident, 'of'); - this.node(node.selector); - } -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Number.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Number.cjs deleted file mode 100644 index 8abd9ae9..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Number.cjs +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'Number'; -const structure = { - value: String -}; - -function parse() { - return { - type: 'Number', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - value: this.consume(types.Number) - }; -} - -function generate(node) { - this.token(types.Number, node.value); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Operator.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Operator.cjs deleted file mode 100644 index c5a513bf..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Operator.cjs +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -// '/' | '*' | ',' | ':' | '+' | '-' -const name = 'Operator'; -const structure = { - value: String -}; - -function parse() { - const start = this.tokenStart; - - this.next(); - - return { - type: 'Operator', - loc: this.getLocation(start, this.tokenStart), - value: this.substrToCursor(start) - }; -} - -function generate(node) { - this.tokenize(node.value); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs deleted file mode 100644 index 7c14bc67..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'Parentheses'; -const structure = { - children: [[]] -}; - -function parse(readSequence, recognizer) { - const start = this.tokenStart; - let children = null; - - this.eat(types.LeftParenthesis); - - children = readSequence.call(this, recognizer); - - if (!this.eof) { - this.eat(types.RightParenthesis); - } - - return { - type: 'Parentheses', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -function generate(node) { - this.token(types.LeftParenthesis, '('); - this.children(node); - this.token(types.RightParenthesis, ')'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Percentage.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Percentage.cjs deleted file mode 100644 index 38cc1d5e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Percentage.cjs +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'Percentage'; -const structure = { - value: String -}; - -function parse() { - return { - type: 'Percentage', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - value: this.consumeNumber(types.Percentage) - }; -} - -function generate(node) { - this.token(types.Percentage, node.value + '%'); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs deleted file mode 100644 index ad58371e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'PseudoClassSelector'; -const walkContext = 'function'; -const structure = { - name: String, - children: [['Raw'], null] -}; - -// : [ <ident> | <function-token> <any-value>? ) ] -function parse() { - const start = this.tokenStart; - let children = null; - let name; - let nameLowerCase; - - this.eat(types.Colon); - - if (this.tokenType === types.Function) { - name = this.consumeFunctionName(); - nameLowerCase = name.toLowerCase(); - - if (hasOwnProperty.call(this.pseudo, nameLowerCase)) { - this.skipSC(); - children = this.pseudo[nameLowerCase].call(this); - this.skipSC(); - } else { - children = this.createList(); - children.push( - this.Raw(this.tokenIndex, null, false) - ); - } - - this.eat(types.RightParenthesis); - } else { - name = this.consume(types.Ident); - } - - return { - type: 'PseudoClassSelector', - loc: this.getLocation(start, this.tokenStart), - name, - children - }; -} - -function generate(node) { - this.token(types.Colon, ':'); - - if (node.children === null) { - this.token(types.Ident, node.name); - } else { - this.token(types.Function, node.name + '('); - this.children(node); - this.token(types.RightParenthesis, ')'); - } -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs deleted file mode 100644 index a3c1f12f..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'PseudoElementSelector'; -const walkContext = 'function'; -const structure = { - name: String, - children: [['Raw'], null] -}; - -// :: [ <ident> | <function-token> <any-value>? ) ] -function parse() { - const start = this.tokenStart; - let children = null; - let name; - let nameLowerCase; - - this.eat(types.Colon); - this.eat(types.Colon); - - if (this.tokenType === types.Function) { - name = this.consumeFunctionName(); - nameLowerCase = name.toLowerCase(); - - if (hasOwnProperty.call(this.pseudo, nameLowerCase)) { - this.skipSC(); - children = this.pseudo[nameLowerCase].call(this); - this.skipSC(); - } else { - children = this.createList(); - children.push( - this.Raw(this.tokenIndex, null, false) - ); - } - - this.eat(types.RightParenthesis); - } else { - name = this.consume(types.Ident); - } - - return { - type: 'PseudoElementSelector', - loc: this.getLocation(start, this.tokenStart), - name, - children - }; -} - -function generate(node) { - this.token(types.Colon, ':'); - this.token(types.Colon, ':'); - - if (node.children === null) { - this.token(types.Ident, node.name); - } else { - this.token(types.Function, node.name + '('); - this.children(node); - this.token(types.RightParenthesis, ')'); - } -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Ratio.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Ratio.cjs deleted file mode 100644 index 8bdf2dcc..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Ratio.cjs +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); -const charCodeDefinitions = require('../../tokenizer/char-code-definitions.cjs'); - -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) -const FULLSTOP = 0x002E; // U+002E FULL STOP (.) - -// Terms of <ratio> should be a positive numbers (not zero or negative) -// (see https://drafts.csswg.org/mediaqueries-3/#values) -// However, -o-min-device-pixel-ratio takes fractional values as a ratio's term -// and this is using by various sites. Therefore we relax checking on parse -// to test a term is unsigned number without an exponent part. -// Additional checking may be applied on lexer validation. -function consumeNumber() { - this.skipSC(); - - const value = this.consume(types.Number); - - for (let i = 0; i < value.length; i++) { - const code = value.charCodeAt(i); - if (!charCodeDefinitions.isDigit(code) && code !== FULLSTOP) { - this.error('Unsigned number is expected', this.tokenStart - value.length + i); - } - } - - if (Number(value) === 0) { - this.error('Zero number is not allowed', this.tokenStart - value.length); - } - - return value; -} - -const name = 'Ratio'; -const structure = { - left: String, - right: String -}; - -// <positive-integer> S* '/' S* <positive-integer> -function parse() { - const start = this.tokenStart; - const left = consumeNumber.call(this); - let right; - - this.skipSC(); - this.eatDelim(SOLIDUS); - right = consumeNumber.call(this); - - return { - type: 'Ratio', - loc: this.getLocation(start, this.tokenStart), - left, - right - }; -} - -function generate(node) { - this.token(types.Number, node.left); - this.token(types.Delim, '/'); - this.token(types.Number, node.right); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Raw.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Raw.cjs deleted file mode 100644 index 505b5266..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Raw.cjs +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -function getOffsetExcludeWS() { - if (this.tokenIndex > 0) { - if (this.lookupType(-1) === types.WhiteSpace) { - return this.tokenIndex > 1 - ? this.getTokenStart(this.tokenIndex - 1) - : this.firstCharOffset; - } - } - - return this.tokenStart; -} - -const name = 'Raw'; -const structure = { - value: String -}; - -function parse(startToken, consumeUntil, excludeWhiteSpace) { - const startOffset = this.getTokenStart(startToken); - let endOffset; - - this.skipUntilBalanced(startToken, consumeUntil || this.consumeUntilBalanceEnd); - - if (excludeWhiteSpace && this.tokenStart > startOffset) { - endOffset = getOffsetExcludeWS.call(this); - } else { - endOffset = this.tokenStart; - } - - return { - type: 'Raw', - loc: this.getLocation(startOffset, endOffset), - value: this.substring(startOffset, endOffset) - }; -} - -function generate(node) { - this.tokenize(node.value); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Rule.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Rule.cjs deleted file mode 100644 index a76ce712..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Rule.cjs +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -function consumeRaw(startToken) { - return this.Raw(startToken, this.consumeUntilLeftCurlyBracket, true); -} - -function consumePrelude() { - const prelude = this.SelectorList(); - - if (prelude.type !== 'Raw' && - this.eof === false && - this.tokenType !== types.LeftCurlyBracket) { - this.error(); - } - - return prelude; -} - -const name = 'Rule'; -const walkContext = 'rule'; -const structure = { - prelude: ['SelectorList', 'Raw'], - block: ['Block'] -}; - -function parse() { - const startToken = this.tokenIndex; - const startOffset = this.tokenStart; - let prelude; - let block; - - if (this.parseRulePrelude) { - prelude = this.parseWithFallback(consumePrelude, consumeRaw); - } else { - prelude = consumeRaw.call(this, startToken); - } - - block = this.Block(true); - - return { - type: 'Rule', - loc: this.getLocation(startOffset, this.tokenStart), - prelude, - block - }; -} -function generate(node) { - this.node(node.prelude); - this.node(node.block); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Selector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Selector.cjs deleted file mode 100644 index c6cafd1e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Selector.cjs +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -const name = 'Selector'; -const structure = { - children: [[ - 'TypeSelector', - 'IdSelector', - 'ClassSelector', - 'AttributeSelector', - 'PseudoClassSelector', - 'PseudoElementSelector', - 'Combinator', - 'WhiteSpace' - ]] -}; - -function parse() { - const children = this.readSequence(this.scope.Selector); - - // nothing were consumed - if (this.getFirstListNode(children) === null) { - this.error('Selector is expected'); - } - - return { - type: 'Selector', - loc: this.getLocationFromList(children), - children - }; -} - -function generate(node) { - this.children(node); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs deleted file mode 100644 index 7ecf09b2..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const name = 'SelectorList'; -const walkContext = 'selector'; -const structure = { - children: [[ - 'Selector', - 'Raw' - ]] -}; - -function parse() { - const children = this.createList(); - - while (!this.eof) { - children.push(this.Selector()); - - if (this.tokenType === types.Comma) { - this.next(); - continue; - } - - break; - } - - return { - type: 'SelectorList', - loc: this.getLocationFromList(children), - children - }; -} - -function generate(node) { - this.children(node, () => this.token(types.Comma, ',')); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/String.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/String.cjs deleted file mode 100644 index 8a7801e5..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/String.cjs +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -const string = require('../../utils/string.cjs'); -const types = require('../../tokenizer/types.cjs'); - -const name = 'String'; -const structure = { - value: String -}; - -function parse() { - return { - type: 'String', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - value: string.decode(this.consume(types.String)) - }; -} - -function generate(node) { - this.token(types.String, string.encode(node.value)); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs deleted file mode 100644 index 60276185..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs +++ /dev/null @@ -1,83 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) - -function consumeRaw(startToken) { - return this.Raw(startToken, null, false); -} - -const name = 'StyleSheet'; -const walkContext = 'stylesheet'; -const structure = { - children: [[ - 'Comment', - 'CDO', - 'CDC', - 'Atrule', - 'Rule', - 'Raw' - ]] -}; - -function parse() { - const start = this.tokenStart; - const children = this.createList(); - let child; - - while (!this.eof) { - switch (this.tokenType) { - case types.WhiteSpace: - this.next(); - continue; - - case types.Comment: - // ignore comments except exclamation comments (i.e. /*! .. */) on top level - if (this.charCodeAt(this.tokenStart + 2) !== EXCLAMATIONMARK) { - this.next(); - continue; - } - - child = this.Comment(); - break; - - case types.CDO: // <!-- - child = this.CDO(); - break; - - case types.CDC: // --> - child = this.CDC(); - break; - - // CSS Syntax Module Level 3 - // §2.2 Error handling - // At the "top level" of a stylesheet, an <at-keyword-token> starts an at-rule. - case types.AtKeyword: - child = this.parseWithFallback(this.Atrule, consumeRaw); - break; - - // Anything else starts a qualified rule ... - default: - child = this.parseWithFallback(this.Rule, consumeRaw); - } - - children.push(child); - } - - return { - type: 'StyleSheet', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -function generate(node) { - this.children(node); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; -exports.walkContext = walkContext; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs deleted file mode 100644 index 1d152703..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) - -function eatIdentifierOrAsterisk() { - if (this.tokenType !== types.Ident && - this.isDelim(ASTERISK) === false) { - this.error('Identifier or asterisk is expected'); - } - - this.next(); -} - -const name = 'TypeSelector'; -const structure = { - name: String -}; - -// ident -// ident|ident -// ident|* -// * -// *|ident -// *|* -// |ident -// |* -function parse() { - const start = this.tokenStart; - - if (this.isDelim(VERTICALLINE)) { - this.next(); - eatIdentifierOrAsterisk.call(this); - } else { - eatIdentifierOrAsterisk.call(this); - - if (this.isDelim(VERTICALLINE)) { - this.next(); - eatIdentifierOrAsterisk.call(this); - } - } - - return { - type: 'TypeSelector', - loc: this.getLocation(start, this.tokenStart), - name: this.substrToCursor(start) - }; -} - -function generate(node) { - this.tokenize(node.name); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs deleted file mode 100644 index 5585e8fd..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs +++ /dev/null @@ -1,158 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); -const charCodeDefinitions = require('../../tokenizer/char-code-definitions.cjs'); - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?) - -function eatHexSequence(offset, allowDash) { - let len = 0; - - for (let pos = this.tokenStart + offset; pos < this.tokenEnd; pos++) { - const code = this.charCodeAt(pos); - - if (code === HYPHENMINUS && allowDash && len !== 0) { - eatHexSequence.call(this, offset + len + 1, false); - return -1; - } - - if (!charCodeDefinitions.isHexDigit(code)) { - this.error( - allowDash && len !== 0 - ? 'Hyphen minus' + (len < 6 ? ' or hex digit' : '') + ' is expected' - : (len < 6 ? 'Hex digit is expected' : 'Unexpected input'), - pos - ); - } - - if (++len > 6) { - this.error('Too many hex digits', pos); - } } - - this.next(); - return len; -} - -function eatQuestionMarkSequence(max) { - let count = 0; - - while (this.isDelim(QUESTIONMARK)) { - if (++count > max) { - this.error('Too many question marks'); - } - - this.next(); - } -} - -function startsWith(code) { - if (this.charCodeAt(this.tokenStart) !== code) { - this.error((code === PLUSSIGN ? 'Plus sign' : 'Hyphen minus') + ' is expected'); - } -} - -// https://drafts.csswg.org/css-syntax/#urange -// Informally, the <urange> production has three forms: -// U+0001 -// Defines a range consisting of a single code point, in this case the code point "1". -// U+0001-00ff -// Defines a range of codepoints between the first and the second value, in this case -// the range between "1" and "ff" (255 in decimal) inclusive. -// U+00?? -// Defines a range of codepoints where the "?" characters range over all hex digits, -// in this case defining the same as the value U+0000-00ff. -// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat "?" as a hexadecimal digit). -// -// <urange> = -// u '+' <ident-token> '?'* | -// u <dimension-token> '?'* | -// u <number-token> '?'* | -// u <number-token> <dimension-token> | -// u <number-token> <number-token> | -// u '+' '?'+ -function scanUnicodeRange() { - let hexLength = 0; - - switch (this.tokenType) { - case types.Number: - // u <number-token> '?'* - // u <number-token> <dimension-token> - // u <number-token> <number-token> - hexLength = eatHexSequence.call(this, 1, true); - - if (this.isDelim(QUESTIONMARK)) { - eatQuestionMarkSequence.call(this, 6 - hexLength); - break; - } - - if (this.tokenType === types.Dimension || - this.tokenType === types.Number) { - startsWith.call(this, HYPHENMINUS); - eatHexSequence.call(this, 1, false); - break; - } - - break; - - case types.Dimension: - // u <dimension-token> '?'* - hexLength = eatHexSequence.call(this, 1, true); - - if (hexLength > 0) { - eatQuestionMarkSequence.call(this, 6 - hexLength); - } - - break; - - default: - // u '+' <ident-token> '?'* - // u '+' '?'+ - this.eatDelim(PLUSSIGN); - - if (this.tokenType === types.Ident) { - hexLength = eatHexSequence.call(this, 0, true); - if (hexLength > 0) { - eatQuestionMarkSequence.call(this, 6 - hexLength); - } - break; - } - - if (this.isDelim(QUESTIONMARK)) { - this.next(); - eatQuestionMarkSequence.call(this, 5); - break; - } - - this.error('Hex digit or question mark is expected'); - } -} - -const name = 'UnicodeRange'; -const structure = { - value: String -}; - -function parse() { - const start = this.tokenStart; - - // U or u - this.eatIdent('u'); - scanUnicodeRange.call(this); - - return { - type: 'UnicodeRange', - loc: this.getLocation(start, this.tokenStart), - value: this.substrToCursor(start) - }; -} - -function generate(node) { - this.tokenize(node.value); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Url.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Url.cjs deleted file mode 100644 index 6a394577..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Url.cjs +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const url = require('../../utils/url.cjs'); -const string = require('../../utils/string.cjs'); -const types = require('../../tokenizer/types.cjs'); - -const name = 'Url'; -const structure = { - value: String -}; - -// <url-token> | <function-token> <string> ) -function parse() { - const start = this.tokenStart; - let value; - - switch (this.tokenType) { - case types.Url: - value = url.decode(this.consume(types.Url)); - break; - - case types.Function: - if (!this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')) { - this.error('Function name must be `url`'); - } - - this.eat(types.Function); - this.skipSC(); - value = string.decode(this.consume(types.String)); - this.skipSC(); - if (!this.eof) { - this.eat(types.RightParenthesis); - } - break; - - default: - this.error('Url or Function is expected'); - } - - return { - type: 'Url', - loc: this.getLocation(start, this.tokenStart), - value - }; -} - -function generate(node) { - this.token(types.Url, url.encode(node.value)); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Value.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Value.cjs deleted file mode 100644 index bdb322e7..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/Value.cjs +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -const name = 'Value'; -const structure = { - children: [[]] -}; - -function parse() { - const start = this.tokenStart; - const children = this.readSequence(this.scope.Value); - - return { - type: 'Value', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -function generate(node) { - this.children(node); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs deleted file mode 100644 index 50c19826..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const SPACE = Object.freeze({ - type: 'WhiteSpace', - loc: null, - value: ' ' -}); - -const name = 'WhiteSpace'; -const structure = { - value: String -}; - -function parse() { - this.eat(types.WhiteSpace); - return SPACE; - - // return { - // type: 'WhiteSpace', - // loc: this.getLocation(this.tokenStart, this.tokenEnd), - // value: this.consume(WHITESPACE) - // }; -} - -function generate(node) { - this.token(types.WhiteSpace, node.value); -} - -exports.generate = generate; -exports.name = name; -exports.parse = parse; -exports.structure = structure; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-generate.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-generate.cjs deleted file mode 100644 index 4f7285f4..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-generate.cjs +++ /dev/null @@ -1,85 +0,0 @@ -'use strict'; - -const AnPlusB = require('./AnPlusB.cjs'); -const Atrule = require('./Atrule.cjs'); -const AtrulePrelude = require('./AtrulePrelude.cjs'); -const AttributeSelector = require('./AttributeSelector.cjs'); -const Block = require('./Block.cjs'); -const Brackets = require('./Brackets.cjs'); -const CDC = require('./CDC.cjs'); -const CDO = require('./CDO.cjs'); -const ClassSelector = require('./ClassSelector.cjs'); -const Combinator = require('./Combinator.cjs'); -const Comment = require('./Comment.cjs'); -const Declaration = require('./Declaration.cjs'); -const DeclarationList = require('./DeclarationList.cjs'); -const Dimension = require('./Dimension.cjs'); -const Function = require('./Function.cjs'); -const Hash = require('./Hash.cjs'); -const Identifier = require('./Identifier.cjs'); -const IdSelector = require('./IdSelector.cjs'); -const MediaFeature = require('./MediaFeature.cjs'); -const MediaQuery = require('./MediaQuery.cjs'); -const MediaQueryList = require('./MediaQueryList.cjs'); -const Nth = require('./Nth.cjs'); -const Number = require('./Number.cjs'); -const Operator = require('./Operator.cjs'); -const Parentheses = require('./Parentheses.cjs'); -const Percentage = require('./Percentage.cjs'); -const PseudoClassSelector = require('./PseudoClassSelector.cjs'); -const PseudoElementSelector = require('./PseudoElementSelector.cjs'); -const Ratio = require('./Ratio.cjs'); -const Raw = require('./Raw.cjs'); -const Rule = require('./Rule.cjs'); -const Selector = require('./Selector.cjs'); -const SelectorList = require('./SelectorList.cjs'); -const String = require('./String.cjs'); -const StyleSheet = require('./StyleSheet.cjs'); -const TypeSelector = require('./TypeSelector.cjs'); -const UnicodeRange = require('./UnicodeRange.cjs'); -const Url = require('./Url.cjs'); -const Value = require('./Value.cjs'); -const WhiteSpace = require('./WhiteSpace.cjs'); - - - -exports.AnPlusB = AnPlusB.generate; -exports.Atrule = Atrule.generate; -exports.AtrulePrelude = AtrulePrelude.generate; -exports.AttributeSelector = AttributeSelector.generate; -exports.Block = Block.generate; -exports.Brackets = Brackets.generate; -exports.CDC = CDC.generate; -exports.CDO = CDO.generate; -exports.ClassSelector = ClassSelector.generate; -exports.Combinator = Combinator.generate; -exports.Comment = Comment.generate; -exports.Declaration = Declaration.generate; -exports.DeclarationList = DeclarationList.generate; -exports.Dimension = Dimension.generate; -exports.Function = Function.generate; -exports.Hash = Hash.generate; -exports.Identifier = Identifier.generate; -exports.IdSelector = IdSelector.generate; -exports.MediaFeature = MediaFeature.generate; -exports.MediaQuery = MediaQuery.generate; -exports.MediaQueryList = MediaQueryList.generate; -exports.Nth = Nth.generate; -exports.Number = Number.generate; -exports.Operator = Operator.generate; -exports.Parentheses = Parentheses.generate; -exports.Percentage = Percentage.generate; -exports.PseudoClassSelector = PseudoClassSelector.generate; -exports.PseudoElementSelector = PseudoElementSelector.generate; -exports.Ratio = Ratio.generate; -exports.Raw = Raw.generate; -exports.Rule = Rule.generate; -exports.Selector = Selector.generate; -exports.SelectorList = SelectorList.generate; -exports.String = String.generate; -exports.StyleSheet = StyleSheet.generate; -exports.TypeSelector = TypeSelector.generate; -exports.UnicodeRange = UnicodeRange.generate; -exports.Url = Url.generate; -exports.Value = Value.generate; -exports.WhiteSpace = WhiteSpace.generate; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-parse-selector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-parse-selector.cjs deleted file mode 100644 index 44958002..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-parse-selector.cjs +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -const AnPlusB = require('./AnPlusB.cjs'); -const AttributeSelector = require('./AttributeSelector.cjs'); -const ClassSelector = require('./ClassSelector.cjs'); -const Combinator = require('./Combinator.cjs'); -const Identifier = require('./Identifier.cjs'); -const IdSelector = require('./IdSelector.cjs'); -const Nth = require('./Nth.cjs'); -const Percentage = require('./Percentage.cjs'); -const PseudoClassSelector = require('./PseudoClassSelector.cjs'); -const PseudoElementSelector = require('./PseudoElementSelector.cjs'); -const Raw = require('./Raw.cjs'); -const Selector = require('./Selector.cjs'); -const SelectorList = require('./SelectorList.cjs'); -const String = require('./String.cjs'); -const TypeSelector = require('./TypeSelector.cjs'); - - - -exports.AnPlusB = AnPlusB.parse; -exports.AttributeSelector = AttributeSelector.parse; -exports.ClassSelector = ClassSelector.parse; -exports.Combinator = Combinator.parse; -exports.Identifier = Identifier.parse; -exports.IdSelector = IdSelector.parse; -exports.Nth = Nth.parse; -exports.Percentage = Percentage.parse; -exports.PseudoClassSelector = PseudoClassSelector.parse; -exports.PseudoElementSelector = PseudoElementSelector.parse; -exports.Raw = Raw.parse; -exports.Selector = Selector.parse; -exports.SelectorList = SelectorList.parse; -exports.String = String.parse; -exports.TypeSelector = TypeSelector.parse; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-parse.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-parse.cjs deleted file mode 100644 index e8b383ae..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-parse.cjs +++ /dev/null @@ -1,85 +0,0 @@ -'use strict'; - -const AnPlusB = require('./AnPlusB.cjs'); -const Atrule = require('./Atrule.cjs'); -const AtrulePrelude = require('./AtrulePrelude.cjs'); -const AttributeSelector = require('./AttributeSelector.cjs'); -const Block = require('./Block.cjs'); -const Brackets = require('./Brackets.cjs'); -const CDC = require('./CDC.cjs'); -const CDO = require('./CDO.cjs'); -const ClassSelector = require('./ClassSelector.cjs'); -const Combinator = require('./Combinator.cjs'); -const Comment = require('./Comment.cjs'); -const Declaration = require('./Declaration.cjs'); -const DeclarationList = require('./DeclarationList.cjs'); -const Dimension = require('./Dimension.cjs'); -const Function = require('./Function.cjs'); -const Hash = require('./Hash.cjs'); -const Identifier = require('./Identifier.cjs'); -const IdSelector = require('./IdSelector.cjs'); -const MediaFeature = require('./MediaFeature.cjs'); -const MediaQuery = require('./MediaQuery.cjs'); -const MediaQueryList = require('./MediaQueryList.cjs'); -const Nth = require('./Nth.cjs'); -const Number = require('./Number.cjs'); -const Operator = require('./Operator.cjs'); -const Parentheses = require('./Parentheses.cjs'); -const Percentage = require('./Percentage.cjs'); -const PseudoClassSelector = require('./PseudoClassSelector.cjs'); -const PseudoElementSelector = require('./PseudoElementSelector.cjs'); -const Ratio = require('./Ratio.cjs'); -const Raw = require('./Raw.cjs'); -const Rule = require('./Rule.cjs'); -const Selector = require('./Selector.cjs'); -const SelectorList = require('./SelectorList.cjs'); -const String = require('./String.cjs'); -const StyleSheet = require('./StyleSheet.cjs'); -const TypeSelector = require('./TypeSelector.cjs'); -const UnicodeRange = require('./UnicodeRange.cjs'); -const Url = require('./Url.cjs'); -const Value = require('./Value.cjs'); -const WhiteSpace = require('./WhiteSpace.cjs'); - - - -exports.AnPlusB = AnPlusB.parse; -exports.Atrule = Atrule.parse; -exports.AtrulePrelude = AtrulePrelude.parse; -exports.AttributeSelector = AttributeSelector.parse; -exports.Block = Block.parse; -exports.Brackets = Brackets.parse; -exports.CDC = CDC.parse; -exports.CDO = CDO.parse; -exports.ClassSelector = ClassSelector.parse; -exports.Combinator = Combinator.parse; -exports.Comment = Comment.parse; -exports.Declaration = Declaration.parse; -exports.DeclarationList = DeclarationList.parse; -exports.Dimension = Dimension.parse; -exports.Function = Function.parse; -exports.Hash = Hash.parse; -exports.Identifier = Identifier.parse; -exports.IdSelector = IdSelector.parse; -exports.MediaFeature = MediaFeature.parse; -exports.MediaQuery = MediaQuery.parse; -exports.MediaQueryList = MediaQueryList.parse; -exports.Nth = Nth.parse; -exports.Number = Number.parse; -exports.Operator = Operator.parse; -exports.Parentheses = Parentheses.parse; -exports.Percentage = Percentage.parse; -exports.PseudoClassSelector = PseudoClassSelector.parse; -exports.PseudoElementSelector = PseudoElementSelector.parse; -exports.Ratio = Ratio.parse; -exports.Raw = Raw.parse; -exports.Rule = Rule.parse; -exports.Selector = Selector.parse; -exports.SelectorList = SelectorList.parse; -exports.String = String.parse; -exports.StyleSheet = StyleSheet.parse; -exports.TypeSelector = TypeSelector.parse; -exports.UnicodeRange = UnicodeRange.parse; -exports.Url = Url.parse; -exports.Value = Value.parse; -exports.WhiteSpace = WhiteSpace.parse; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index.cjs deleted file mode 100644 index 6398702b..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/node/index.cjs +++ /dev/null @@ -1,85 +0,0 @@ -'use strict'; - -const AnPlusB = require('./AnPlusB.cjs'); -const Atrule = require('./Atrule.cjs'); -const AtrulePrelude = require('./AtrulePrelude.cjs'); -const AttributeSelector = require('./AttributeSelector.cjs'); -const Block = require('./Block.cjs'); -const Brackets = require('./Brackets.cjs'); -const CDC = require('./CDC.cjs'); -const CDO = require('./CDO.cjs'); -const ClassSelector = require('./ClassSelector.cjs'); -const Combinator = require('./Combinator.cjs'); -const Comment = require('./Comment.cjs'); -const Declaration = require('./Declaration.cjs'); -const DeclarationList = require('./DeclarationList.cjs'); -const Dimension = require('./Dimension.cjs'); -const Function = require('./Function.cjs'); -const Hash = require('./Hash.cjs'); -const Identifier = require('./Identifier.cjs'); -const IdSelector = require('./IdSelector.cjs'); -const MediaFeature = require('./MediaFeature.cjs'); -const MediaQuery = require('./MediaQuery.cjs'); -const MediaQueryList = require('./MediaQueryList.cjs'); -const Nth = require('./Nth.cjs'); -const Number$1 = require('./Number.cjs'); -const Operator = require('./Operator.cjs'); -const Parentheses = require('./Parentheses.cjs'); -const Percentage = require('./Percentage.cjs'); -const PseudoClassSelector = require('./PseudoClassSelector.cjs'); -const PseudoElementSelector = require('./PseudoElementSelector.cjs'); -const Ratio = require('./Ratio.cjs'); -const Raw = require('./Raw.cjs'); -const Rule = require('./Rule.cjs'); -const Selector = require('./Selector.cjs'); -const SelectorList = require('./SelectorList.cjs'); -const String$1 = require('./String.cjs'); -const StyleSheet = require('./StyleSheet.cjs'); -const TypeSelector = require('./TypeSelector.cjs'); -const UnicodeRange = require('./UnicodeRange.cjs'); -const Url = require('./Url.cjs'); -const Value = require('./Value.cjs'); -const WhiteSpace = require('./WhiteSpace.cjs'); - - - -exports.AnPlusB = AnPlusB; -exports.Atrule = Atrule; -exports.AtrulePrelude = AtrulePrelude; -exports.AttributeSelector = AttributeSelector; -exports.Block = Block; -exports.Brackets = Brackets; -exports.CDC = CDC; -exports.CDO = CDO; -exports.ClassSelector = ClassSelector; -exports.Combinator = Combinator; -exports.Comment = Comment; -exports.Declaration = Declaration; -exports.DeclarationList = DeclarationList; -exports.Dimension = Dimension; -exports.Function = Function; -exports.Hash = Hash; -exports.Identifier = Identifier; -exports.IdSelector = IdSelector; -exports.MediaFeature = MediaFeature; -exports.MediaQuery = MediaQuery; -exports.MediaQueryList = MediaQueryList; -exports.Nth = Nth; -exports.Number = Number$1; -exports.Operator = Operator; -exports.Parentheses = Parentheses; -exports.Percentage = Percentage; -exports.PseudoClassSelector = PseudoClassSelector; -exports.PseudoElementSelector = PseudoElementSelector; -exports.Ratio = Ratio; -exports.Raw = Raw; -exports.Rule = Rule; -exports.Selector = Selector; -exports.SelectorList = SelectorList; -exports.String = String$1; -exports.StyleSheet = StyleSheet; -exports.TypeSelector = TypeSelector; -exports.UnicodeRange = UnicodeRange; -exports.Url = Url; -exports.Value = Value; -exports.WhiteSpace = WhiteSpace; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/pseudo/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/pseudo/index.cjs deleted file mode 100644 index c3121ebd..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/pseudo/index.cjs +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; - -const selectorList = { - parse() { - return this.createSingleNodeList( - this.SelectorList() - ); - } -}; - -const selector = { - parse() { - return this.createSingleNodeList( - this.Selector() - ); - } -}; - -const identList = { - parse() { - return this.createSingleNodeList( - this.Identifier() - ); - } -}; - -const nth = { - parse() { - return this.createSingleNodeList( - this.Nth() - ); - } -}; - -const pseudo = { - 'dir': identList, - 'has': selectorList, - 'lang': identList, - 'matches': selectorList, - 'is': selectorList, - '-moz-any': selectorList, - '-webkit-any': selectorList, - 'where': selectorList, - 'not': selectorList, - 'nth-child': nth, - 'nth-last-child': nth, - 'nth-last-of-type': nth, - 'nth-of-type': nth, - 'slotted': selector -}; - -module.exports = pseudo; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs deleted file mode 100644 index 65a15447..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const _default = require('./default.cjs'); - -const atrulePrelude = { - getNode: _default -}; - -module.exports = atrulePrelude; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/default.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/default.cjs deleted file mode 100644 index 43b5c188..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/default.cjs +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) -const U = 0x0075; // U+0075 LATIN SMALL LETTER U (u) - -function defaultRecognizer(context) { - switch (this.tokenType) { - case types.Hash: - return this.Hash(); - - case types.Comma: - return this.Operator(); - - case types.LeftParenthesis: - return this.Parentheses(this.readSequence, context.recognizer); - - case types.LeftSquareBracket: - return this.Brackets(this.readSequence, context.recognizer); - - case types.String: - return this.String(); - - case types.Dimension: - return this.Dimension(); - - case types.Percentage: - return this.Percentage(); - - case types.Number: - return this.Number(); - - case types.Function: - return this.cmpStr(this.tokenStart, this.tokenEnd, 'url(') - ? this.Url() - : this.Function(this.readSequence, context.recognizer); - - case types.Url: - return this.Url(); - - case types.Ident: - // check for unicode range, it should start with u+ or U+ - if (this.cmpChar(this.tokenStart, U) && - this.cmpChar(this.tokenStart + 1, PLUSSIGN)) { - return this.UnicodeRange(); - } else { - return this.Identifier(); - } - - case types.Delim: { - const code = this.charCodeAt(this.tokenStart); - - if (code === SOLIDUS || - code === ASTERISK || - code === PLUSSIGN || - code === HYPHENMINUS) { - return this.Operator(); // TODO: replace with Delim - } - - // TODO: produce a node with Delim node type - - if (code === NUMBERSIGN) { - this.error('Hex or identifier is expected', this.tokenStart + 1); - } - - break; - } - } -} - -module.exports = defaultRecognizer; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/index.cjs deleted file mode 100644 index 78391281..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/index.cjs +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -const atrulePrelude = require('./atrulePrelude.cjs'); -const selector = require('./selector.cjs'); -const value = require('./value.cjs'); - - - -exports.AtrulePrelude = atrulePrelude; -exports.Selector = selector; -exports.Value = value; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/selector.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/selector.cjs deleted file mode 100644 index a0e95f1a..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/selector.cjs +++ /dev/null @@ -1,84 +0,0 @@ -'use strict'; - -const types = require('../../tokenizer/types.cjs'); - -const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) -const FULLSTOP = 0x002E; // U+002E FULL STOP (.) -const GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>) -const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) -const TILDE = 0x007E; // U+007E TILDE (~) - -function onWhiteSpace(next, children) { - if (children.last !== null && children.last.type !== 'Combinator' && - next !== null && next.type !== 'Combinator') { - children.push({ // FIXME: this.Combinator() should be used instead - type: 'Combinator', - loc: null, - name: ' ' - }); - } -} - -function getNode() { - switch (this.tokenType) { - case types.LeftSquareBracket: - return this.AttributeSelector(); - - case types.Hash: - return this.IdSelector(); - - case types.Colon: - if (this.lookupType(1) === types.Colon) { - return this.PseudoElementSelector(); - } else { - return this.PseudoClassSelector(); - } - - case types.Ident: - return this.TypeSelector(); - - case types.Number: - case types.Percentage: - return this.Percentage(); - - case types.Dimension: - // throws when .123ident - if (this.charCodeAt(this.tokenStart) === FULLSTOP) { - this.error('Identifier is expected', this.tokenStart + 1); - } - break; - - case types.Delim: { - const code = this.charCodeAt(this.tokenStart); - - switch (code) { - case PLUSSIGN: - case GREATERTHANSIGN: - case TILDE: - case SOLIDUS: // /deep/ - return this.Combinator(); - - case FULLSTOP: - return this.ClassSelector(); - - case ASTERISK: - case VERTICALLINE: - return this.TypeSelector(); - - case NUMBERSIGN: - return this.IdSelector(); - } - - break; - } - } -} -const Selector = { - onWhiteSpace, - getNode -}; - -module.exports = Selector; diff --git a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/value.cjs b/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/value.cjs deleted file mode 100644 index a9900a1c..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/syntax/scope/value.cjs +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -const _default = require('./default.cjs'); -const expression = require('../function/expression.cjs'); -const _var = require('../function/var.cjs'); - -function isPlusMinusOperator(node) { - return ( - node !== null && - node.type === 'Operator' && - (node.value[node.value.length - 1] === '-' || node.value[node.value.length - 1] === '+') - ); -} - -const value = { - getNode: _default, - onWhiteSpace(next, children) { - if (isPlusMinusOperator(next)) { - next.value = ' ' + next.value; - } - if (isPlusMinusOperator(children.last)) { - children.last.value += ' '; - } - }, - 'expression': expression, - 'var': _var -}; - -module.exports = value; diff --git a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs b/node_modules/csso/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs deleted file mode 100644 index 2875466b..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs +++ /dev/null @@ -1,91 +0,0 @@ -'use strict'; - -const adoptBuffer = require('./adopt-buffer.cjs'); -const charCodeDefinitions = require('./char-code-definitions.cjs'); - -const N = 10; -const F = 12; -const R = 13; - -function computeLinesAndColumns(host) { - const source = host.source; - const sourceLength = source.length; - const startOffset = source.length > 0 ? charCodeDefinitions.isBOM(source.charCodeAt(0)) : 0; - const lines = adoptBuffer.adoptBuffer(host.lines, sourceLength); - const columns = adoptBuffer.adoptBuffer(host.columns, sourceLength); - let line = host.startLine; - let column = host.startColumn; - - for (let i = startOffset; i < sourceLength; i++) { - const code = source.charCodeAt(i); - - lines[i] = line; - columns[i] = column++; - - if (code === N || code === R || code === F) { - if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) { - i++; - lines[i] = line; - columns[i] = column; - } - - line++; - column = 1; - } - } - - lines[sourceLength] = line; - columns[sourceLength] = column; - - host.lines = lines; - host.columns = columns; - host.computed = true; -} - -class OffsetToLocation { - constructor() { - this.lines = null; - this.columns = null; - this.computed = false; - } - setSource(source, startOffset = 0, startLine = 1, startColumn = 1) { - this.source = source; - this.startOffset = startOffset; - this.startLine = startLine; - this.startColumn = startColumn; - this.computed = false; - } - getLocation(offset, filename) { - if (!this.computed) { - computeLinesAndColumns(this); - } - - return { - source: filename, - offset: this.startOffset + offset, - line: this.lines[offset], - column: this.columns[offset] - }; - } - getLocationRange(start, end, filename) { - if (!this.computed) { - computeLinesAndColumns(this); - } - - return { - source: filename, - start: { - offset: this.startOffset + start, - line: this.lines[start], - column: this.columns[start] - }, - end: { - offset: this.startOffset + end, - line: this.lines[end], - column: this.columns[end] - } - }; - } -} - -exports.OffsetToLocation = OffsetToLocation; diff --git a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs b/node_modules/csso/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs deleted file mode 100644 index 42d6f906..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs +++ /dev/null @@ -1,264 +0,0 @@ -'use strict'; - -const adoptBuffer = require('./adopt-buffer.cjs'); -const utils = require('./utils.cjs'); -const names = require('./names.cjs'); -const types = require('./types.cjs'); - -const OFFSET_MASK = 0x00FFFFFF; -const TYPE_SHIFT = 24; -const balancePair = new Map([ - [types.Function, types.RightParenthesis], - [types.LeftParenthesis, types.RightParenthesis], - [types.LeftSquareBracket, types.RightSquareBracket], - [types.LeftCurlyBracket, types.RightCurlyBracket] -]); - -class TokenStream { - constructor(source, tokenize) { - this.setSource(source, tokenize); - } - reset() { - this.eof = false; - this.tokenIndex = -1; - this.tokenType = 0; - this.tokenStart = this.firstCharOffset; - this.tokenEnd = this.firstCharOffset; - } - setSource(source = '', tokenize = () => {}) { - source = String(source || ''); - - const sourceLength = source.length; - const offsetAndType = adoptBuffer.adoptBuffer(this.offsetAndType, source.length + 1); // +1 because of eof-token - const balance = adoptBuffer.adoptBuffer(this.balance, source.length + 1); - let tokenCount = 0; - let balanceCloseType = 0; - let balanceStart = 0; - let firstCharOffset = -1; - - // capture buffers - this.offsetAndType = null; - this.balance = null; - - tokenize(source, (type, start, end) => { - switch (type) { - default: - balance[tokenCount] = sourceLength; - break; - - case balanceCloseType: { - let balancePrev = balanceStart & OFFSET_MASK; - balanceStart = balance[balancePrev]; - balanceCloseType = balanceStart >> TYPE_SHIFT; - balance[tokenCount] = balancePrev; - balance[balancePrev++] = tokenCount; - for (; balancePrev < tokenCount; balancePrev++) { - if (balance[balancePrev] === sourceLength) { - balance[balancePrev] = tokenCount; - } - } - break; - } - - case types.LeftParenthesis: - case types.Function: - case types.LeftSquareBracket: - case types.LeftCurlyBracket: - balance[tokenCount] = balanceStart; - balanceCloseType = balancePair.get(type); - balanceStart = (balanceCloseType << TYPE_SHIFT) | tokenCount; - break; - } - - offsetAndType[tokenCount++] = (type << TYPE_SHIFT) | end; - if (firstCharOffset === -1) { - firstCharOffset = start; - } - }); - - // finalize buffers - offsetAndType[tokenCount] = (types.EOF << TYPE_SHIFT) | sourceLength; // <EOF-token> - balance[tokenCount] = sourceLength; - balance[sourceLength] = sourceLength; // prevents false positive balance match with any token - while (balanceStart !== 0) { - const balancePrev = balanceStart & OFFSET_MASK; - balanceStart = balance[balancePrev]; - balance[balancePrev] = sourceLength; - } - - this.source = source; - this.firstCharOffset = firstCharOffset === -1 ? 0 : firstCharOffset; - this.tokenCount = tokenCount; - this.offsetAndType = offsetAndType; - this.balance = balance; - - this.reset(); - this.next(); - } - - lookupType(offset) { - offset += this.tokenIndex; - - if (offset < this.tokenCount) { - return this.offsetAndType[offset] >> TYPE_SHIFT; - } - - return types.EOF; - } - lookupOffset(offset) { - offset += this.tokenIndex; - - if (offset < this.tokenCount) { - return this.offsetAndType[offset - 1] & OFFSET_MASK; - } - - return this.source.length; - } - lookupValue(offset, referenceStr) { - offset += this.tokenIndex; - - if (offset < this.tokenCount) { - return utils.cmpStr( - this.source, - this.offsetAndType[offset - 1] & OFFSET_MASK, - this.offsetAndType[offset] & OFFSET_MASK, - referenceStr - ); - } - - return false; - } - getTokenStart(tokenIndex) { - if (tokenIndex === this.tokenIndex) { - return this.tokenStart; - } - - if (tokenIndex > 0) { - return tokenIndex < this.tokenCount - ? this.offsetAndType[tokenIndex - 1] & OFFSET_MASK - : this.offsetAndType[this.tokenCount] & OFFSET_MASK; - } - - return this.firstCharOffset; - } - substrToCursor(start) { - return this.source.substring(start, this.tokenStart); - } - - isBalanceEdge(pos) { - return this.balance[this.tokenIndex] < pos; - } - isDelim(code, offset) { - if (offset) { - return ( - this.lookupType(offset) === types.Delim && - this.source.charCodeAt(this.lookupOffset(offset)) === code - ); - } - - return ( - this.tokenType === types.Delim && - this.source.charCodeAt(this.tokenStart) === code - ); - } - - skip(tokenCount) { - let next = this.tokenIndex + tokenCount; - - if (next < this.tokenCount) { - this.tokenIndex = next; - this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK; - next = this.offsetAndType[next]; - this.tokenType = next >> TYPE_SHIFT; - this.tokenEnd = next & OFFSET_MASK; - } else { - this.tokenIndex = this.tokenCount; - this.next(); - } - } - next() { - let next = this.tokenIndex + 1; - - if (next < this.tokenCount) { - this.tokenIndex = next; - this.tokenStart = this.tokenEnd; - next = this.offsetAndType[next]; - this.tokenType = next >> TYPE_SHIFT; - this.tokenEnd = next & OFFSET_MASK; - } else { - this.eof = true; - this.tokenIndex = this.tokenCount; - this.tokenType = types.EOF; - this.tokenStart = this.tokenEnd = this.source.length; - } - } - skipSC() { - while (this.tokenType === types.WhiteSpace || this.tokenType === types.Comment) { - this.next(); - } - } - skipUntilBalanced(startToken, stopConsume) { - let cursor = startToken; - let balanceEnd; - let offset; - - loop: - for (; cursor < this.tokenCount; cursor++) { - balanceEnd = this.balance[cursor]; - - // stop scanning on balance edge that points to offset before start token - if (balanceEnd < startToken) { - break loop; - } - - offset = cursor > 0 ? this.offsetAndType[cursor - 1] & OFFSET_MASK : this.firstCharOffset; - - // check stop condition - switch (stopConsume(this.source.charCodeAt(offset))) { - case 1: // just stop - break loop; - - case 2: // stop & included - cursor++; - break loop; - - default: - // fast forward to the end of balanced block - if (this.balance[balanceEnd] === cursor) { - cursor = balanceEnd; - } - } - } - - this.skip(cursor - this.tokenIndex); - } - - forEachToken(fn) { - for (let i = 0, offset = this.firstCharOffset; i < this.tokenCount; i++) { - const start = offset; - const item = this.offsetAndType[i]; - const end = item & OFFSET_MASK; - const type = item >> TYPE_SHIFT; - - offset = end; - - fn(type, start, end, i); - } - } - dump() { - const tokens = new Array(this.tokenCount); - - this.forEachToken((type, start, end, index) => { - tokens[index] = { - idx: index, - type: names[type], - chunk: this.source.substring(start, end), - balance: this.balance[index] - }; - }); - - return tokens; - } -} - -exports.TokenStream = TokenStream; diff --git a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs b/node_modules/csso/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs deleted file mode 100644 index b2956ce4..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -const MIN_SIZE = 16 * 1024; - -function adoptBuffer(buffer = null, size) { - if (buffer === null || buffer.length < size) { - return new Uint32Array(Math.max(size + 1024, MIN_SIZE)); - } - - return buffer; -} - -exports.adoptBuffer = adoptBuffer; diff --git a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs b/node_modules/csso/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs deleted file mode 100644 index 99b66670..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs +++ /dev/null @@ -1,231 +0,0 @@ -'use strict'; - -const EOF = 0; - -// https://drafts.csswg.org/css-syntax-3/ -// § 4.2. Definitions - -// digit -// A code point between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9). -function isDigit(code) { - return code >= 0x0030 && code <= 0x0039; -} - -// hex digit -// A digit, or a code point between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F), -// or a code point between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f). -function isHexDigit(code) { - return ( - isDigit(code) || // 0 .. 9 - (code >= 0x0041 && code <= 0x0046) || // A .. F - (code >= 0x0061 && code <= 0x0066) // a .. f - ); -} - -// uppercase letter -// A code point between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z). -function isUppercaseLetter(code) { - return code >= 0x0041 && code <= 0x005A; -} - -// lowercase letter -// A code point between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z). -function isLowercaseLetter(code) { - return code >= 0x0061 && code <= 0x007A; -} - -// letter -// An uppercase letter or a lowercase letter. -function isLetter(code) { - return isUppercaseLetter(code) || isLowercaseLetter(code); -} - -// non-ASCII code point -// A code point with a value equal to or greater than U+0080 <control>. -function isNonAscii(code) { - return code >= 0x0080; -} - -// name-start code point -// A letter, a non-ASCII code point, or U+005F LOW LINE (_). -function isNameStart(code) { - return isLetter(code) || isNonAscii(code) || code === 0x005F; -} - -// name code point -// A name-start code point, a digit, or U+002D HYPHEN-MINUS (-). -function isName(code) { - return isNameStart(code) || isDigit(code) || code === 0x002D; -} - -// non-printable code point -// A code point between U+0000 NULL and U+0008 BACKSPACE, or U+000B LINE TABULATION, -// or a code point between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, or U+007F DELETE. -function isNonPrintable(code) { - return ( - (code >= 0x0000 && code <= 0x0008) || - (code === 0x000B) || - (code >= 0x000E && code <= 0x001F) || - (code === 0x007F) - ); -} - -// newline -// U+000A LINE FEED. Note that U+000D CARRIAGE RETURN and U+000C FORM FEED are not included in this definition, -// as they are converted to U+000A LINE FEED during preprocessing. -// TODO: we doesn't do a preprocessing, so check a code point for U+000D CARRIAGE RETURN and U+000C FORM FEED -function isNewline(code) { - return code === 0x000A || code === 0x000D || code === 0x000C; -} - -// whitespace -// A newline, U+0009 CHARACTER TABULATION, or U+0020 SPACE. -function isWhiteSpace(code) { - return isNewline(code) || code === 0x0020 || code === 0x0009; -} - -// § 4.3.8. Check if two code points are a valid escape -function isValidEscape(first, second) { - // If the first code point is not U+005C REVERSE SOLIDUS (\), return false. - if (first !== 0x005C) { - return false; - } - - // Otherwise, if the second code point is a newline or EOF, return false. - if (isNewline(second) || second === EOF) { - return false; - } - - // Otherwise, return true. - return true; -} - -// § 4.3.9. Check if three code points would start an identifier -function isIdentifierStart(first, second, third) { - // Look at the first code point: - - // U+002D HYPHEN-MINUS - if (first === 0x002D) { - // If the second code point is a name-start code point or a U+002D HYPHEN-MINUS, - // or the second and third code points are a valid escape, return true. Otherwise, return false. - return ( - isNameStart(second) || - second === 0x002D || - isValidEscape(second, third) - ); - } - - // name-start code point - if (isNameStart(first)) { - // Return true. - return true; - } - - // U+005C REVERSE SOLIDUS (\) - if (first === 0x005C) { - // If the first and second code points are a valid escape, return true. Otherwise, return false. - return isValidEscape(first, second); - } - - // anything else - // Return false. - return false; -} - -// § 4.3.10. Check if three code points would start a number -function isNumberStart(first, second, third) { - // Look at the first code point: - - // U+002B PLUS SIGN (+) - // U+002D HYPHEN-MINUS (-) - if (first === 0x002B || first === 0x002D) { - // If the second code point is a digit, return true. - if (isDigit(second)) { - return 2; - } - - // Otherwise, if the second code point is a U+002E FULL STOP (.) - // and the third code point is a digit, return true. - // Otherwise, return false. - return second === 0x002E && isDigit(third) ? 3 : 0; - } - - // U+002E FULL STOP (.) - if (first === 0x002E) { - // If the second code point is a digit, return true. Otherwise, return false. - return isDigit(second) ? 2 : 0; - } - - // digit - if (isDigit(first)) { - // Return true. - return 1; - } - - // anything else - // Return false. - return 0; -} - -// -// Misc -// - -// detect BOM (https://en.wikipedia.org/wiki/Byte_order_mark) -function isBOM(code) { - // UTF-16BE - if (code === 0xFEFF) { - return 1; - } - - // UTF-16LE - if (code === 0xFFFE) { - return 1; - } - - return 0; -} - -// Fast code category -// Only ASCII code points has a special meaning, that's why we define a maps for 0..127 codes only -const CATEGORY = new Array(0x80); -const EofCategory = 0x80; -const WhiteSpaceCategory = 0x82; -const DigitCategory = 0x83; -const NameStartCategory = 0x84; -const NonPrintableCategory = 0x85; - -for (let i = 0; i < CATEGORY.length; i++) { - CATEGORY[i] = - isWhiteSpace(i) && WhiteSpaceCategory || - isDigit(i) && DigitCategory || - isNameStart(i) && NameStartCategory || - isNonPrintable(i) && NonPrintableCategory || - i || EofCategory; -} - -function charCodeCategory(code) { - return code < 0x80 ? CATEGORY[code] : NameStartCategory; -} - -exports.DigitCategory = DigitCategory; -exports.EofCategory = EofCategory; -exports.NameStartCategory = NameStartCategory; -exports.NonPrintableCategory = NonPrintableCategory; -exports.WhiteSpaceCategory = WhiteSpaceCategory; -exports.charCodeCategory = charCodeCategory; -exports.isBOM = isBOM; -exports.isDigit = isDigit; -exports.isHexDigit = isHexDigit; -exports.isIdentifierStart = isIdentifierStart; -exports.isLetter = isLetter; -exports.isLowercaseLetter = isLowercaseLetter; -exports.isName = isName; -exports.isNameStart = isNameStart; -exports.isNewline = isNewline; -exports.isNonAscii = isNonAscii; -exports.isNonPrintable = isNonPrintable; -exports.isNumberStart = isNumberStart; -exports.isUppercaseLetter = isUppercaseLetter; -exports.isValidEscape = isValidEscape; -exports.isWhiteSpace = isWhiteSpace; diff --git a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/tokenizer/index.cjs deleted file mode 100644 index bfb73e5a..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/index.cjs +++ /dev/null @@ -1,554 +0,0 @@ -'use strict'; - -const types = require('./types.cjs'); -const charCodeDefinitions = require('./char-code-definitions.cjs'); -const utils = require('./utils.cjs'); -const names = require('./names.cjs'); -const OffsetToLocation = require('./OffsetToLocation.cjs'); -const TokenStream = require('./TokenStream.cjs'); - -function tokenize(source, onToken) { - function getCharCode(offset) { - return offset < sourceLength ? source.charCodeAt(offset) : 0; - } - - // § 4.3.3. Consume a numeric token - function consumeNumericToken() { - // Consume a number and let number be the result. - offset = utils.consumeNumber(source, offset); - - // If the next 3 input code points would start an identifier, then: - if (charCodeDefinitions.isIdentifierStart(getCharCode(offset), getCharCode(offset + 1), getCharCode(offset + 2))) { - // Create a <dimension-token> with the same value and type flag as number, and a unit set initially to the empty string. - // Consume a name. Set the <dimension-token>’s unit to the returned value. - // Return the <dimension-token>. - type = types.Dimension; - offset = utils.consumeName(source, offset); - return; - } - - // Otherwise, if the next input code point is U+0025 PERCENTAGE SIGN (%), consume it. - if (getCharCode(offset) === 0x0025) { - // Create a <percentage-token> with the same value as number, and return it. - type = types.Percentage; - offset++; - return; - } - - // Otherwise, create a <number-token> with the same value and type flag as number, and return it. - type = types.Number; - } - - // § 4.3.4. Consume an ident-like token - function consumeIdentLikeToken() { - const nameStartOffset = offset; - - // Consume a name, and let string be the result. - offset = utils.consumeName(source, offset); - - // If string’s value is an ASCII case-insensitive match for "url", - // and the next input code point is U+0028 LEFT PARENTHESIS ((), consume it. - if (utils.cmpStr(source, nameStartOffset, offset, 'url') && getCharCode(offset) === 0x0028) { - // While the next two input code points are whitespace, consume the next input code point. - offset = utils.findWhiteSpaceEnd(source, offset + 1); - - // If the next one or two input code points are U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('), - // or whitespace followed by U+0022 QUOTATION MARK (") or U+0027 APOSTROPHE ('), - // then create a <function-token> with its value set to string and return it. - if (getCharCode(offset) === 0x0022 || - getCharCode(offset) === 0x0027) { - type = types.Function; - offset = nameStartOffset + 4; - return; - } - - // Otherwise, consume a url token, and return it. - consumeUrlToken(); - return; - } - - // Otherwise, if the next input code point is U+0028 LEFT PARENTHESIS ((), consume it. - // Create a <function-token> with its value set to string and return it. - if (getCharCode(offset) === 0x0028) { - type = types.Function; - offset++; - return; - } - - // Otherwise, create an <ident-token> with its value set to string and return it. - type = types.Ident; - } - - // § 4.3.5. Consume a string token - function consumeStringToken(endingCodePoint) { - // This algorithm may be called with an ending code point, which denotes the code point - // that ends the string. If an ending code point is not specified, - // the current input code point is used. - if (!endingCodePoint) { - endingCodePoint = getCharCode(offset++); - } - - // Initially create a <string-token> with its value set to the empty string. - type = types.String; - - // Repeatedly consume the next input code point from the stream: - for (; offset < source.length; offset++) { - const code = source.charCodeAt(offset); - - switch (charCodeDefinitions.charCodeCategory(code)) { - // ending code point - case endingCodePoint: - // Return the <string-token>. - offset++; - return; - - // EOF - // case EofCategory: - // This is a parse error. Return the <string-token>. - // return; - - // newline - case charCodeDefinitions.WhiteSpaceCategory: - if (charCodeDefinitions.isNewline(code)) { - // This is a parse error. Reconsume the current input code point, - // create a <bad-string-token>, and return it. - offset += utils.getNewlineLength(source, offset, code); - type = types.BadString; - return; - } - break; - - // U+005C REVERSE SOLIDUS (\) - case 0x005C: - // If the next input code point is EOF, do nothing. - if (offset === source.length - 1) { - break; - } - - const nextCode = getCharCode(offset + 1); - - // Otherwise, if the next input code point is a newline, consume it. - if (charCodeDefinitions.isNewline(nextCode)) { - offset += utils.getNewlineLength(source, offset + 1, nextCode); - } else if (charCodeDefinitions.isValidEscape(code, nextCode)) { - // Otherwise, (the stream starts with a valid escape) consume - // an escaped code point and append the returned code point to - // the <string-token>’s value. - offset = utils.consumeEscaped(source, offset) - 1; - } - break; - - // anything else - // Append the current input code point to the <string-token>’s value. - } - } - } - - // § 4.3.6. Consume a url token - // Note: This algorithm assumes that the initial "url(" has already been consumed. - // This algorithm also assumes that it’s being called to consume an "unquoted" value, like url(foo). - // A quoted value, like url("foo"), is parsed as a <function-token>. Consume an ident-like token - // automatically handles this distinction; this algorithm shouldn’t be called directly otherwise. - function consumeUrlToken() { - // Initially create a <url-token> with its value set to the empty string. - type = types.Url; - - // Consume as much whitespace as possible. - offset = utils.findWhiteSpaceEnd(source, offset); - - // Repeatedly consume the next input code point from the stream: - for (; offset < source.length; offset++) { - const code = source.charCodeAt(offset); - - switch (charCodeDefinitions.charCodeCategory(code)) { - // U+0029 RIGHT PARENTHESIS ()) - case 0x0029: - // Return the <url-token>. - offset++; - return; - - // EOF - // case EofCategory: - // This is a parse error. Return the <url-token>. - // return; - - // whitespace - case charCodeDefinitions.WhiteSpaceCategory: - // Consume as much whitespace as possible. - offset = utils.findWhiteSpaceEnd(source, offset); - - // If the next input code point is U+0029 RIGHT PARENTHESIS ()) or EOF, - // consume it and return the <url-token> - // (if EOF was encountered, this is a parse error); - if (getCharCode(offset) === 0x0029 || offset >= source.length) { - if (offset < source.length) { - offset++; - } - return; - } - - // otherwise, consume the remnants of a bad url, create a <bad-url-token>, - // and return it. - offset = utils.consumeBadUrlRemnants(source, offset); - type = types.BadUrl; - return; - - // U+0022 QUOTATION MARK (") - // U+0027 APOSTROPHE (') - // U+0028 LEFT PARENTHESIS (() - // non-printable code point - case 0x0022: - case 0x0027: - case 0x0028: - case charCodeDefinitions.NonPrintableCategory: - // This is a parse error. Consume the remnants of a bad url, - // create a <bad-url-token>, and return it. - offset = utils.consumeBadUrlRemnants(source, offset); - type = types.BadUrl; - return; - - // U+005C REVERSE SOLIDUS (\) - case 0x005C: - // If the stream starts with a valid escape, consume an escaped code point and - // append the returned code point to the <url-token>’s value. - if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) { - offset = utils.consumeEscaped(source, offset) - 1; - break; - } - - // Otherwise, this is a parse error. Consume the remnants of a bad url, - // create a <bad-url-token>, and return it. - offset = utils.consumeBadUrlRemnants(source, offset); - type = types.BadUrl; - return; - - // anything else - // Append the current input code point to the <url-token>’s value. - } - } - } - - // ensure source is a string - source = String(source || ''); - - const sourceLength = source.length; - let start = charCodeDefinitions.isBOM(getCharCode(0)); - let offset = start; - let type; - - // https://drafts.csswg.org/css-syntax-3/#consume-token - // § 4.3.1. Consume a token - while (offset < sourceLength) { - const code = source.charCodeAt(offset); - - switch (charCodeDefinitions.charCodeCategory(code)) { - // whitespace - case charCodeDefinitions.WhiteSpaceCategory: - // Consume as much whitespace as possible. Return a <whitespace-token>. - type = types.WhiteSpace; - offset = utils.findWhiteSpaceEnd(source, offset + 1); - break; - - // U+0022 QUOTATION MARK (") - case 0x0022: - // Consume a string token and return it. - consumeStringToken(); - break; - - // U+0023 NUMBER SIGN (#) - case 0x0023: - // If the next input code point is a name code point or the next two input code points are a valid escape, then: - if (charCodeDefinitions.isName(getCharCode(offset + 1)) || charCodeDefinitions.isValidEscape(getCharCode(offset + 1), getCharCode(offset + 2))) { - // Create a <hash-token>. - type = types.Hash; - - // If the next 3 input code points would start an identifier, set the <hash-token>’s type flag to "id". - // if (isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) { - // // TODO: set id flag - // } - - // Consume a name, and set the <hash-token>’s value to the returned string. - offset = utils.consumeName(source, offset + 1); - - // Return the <hash-token>. - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = types.Delim; - offset++; - } - - break; - - // U+0027 APOSTROPHE (') - case 0x0027: - // Consume a string token and return it. - consumeStringToken(); - break; - - // U+0028 LEFT PARENTHESIS (() - case 0x0028: - // Return a <(-token>. - type = types.LeftParenthesis; - offset++; - break; - - // U+0029 RIGHT PARENTHESIS ()) - case 0x0029: - // Return a <)-token>. - type = types.RightParenthesis; - offset++; - break; - - // U+002B PLUS SIGN (+) - case 0x002B: - // If the input stream starts with a number, ... - if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { - // ... reconsume the current input code point, consume a numeric token, and return it. - consumeNumericToken(); - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = types.Delim; - offset++; - } - break; - - // U+002C COMMA (,) - case 0x002C: - // Return a <comma-token>. - type = types.Comma; - offset++; - break; - - // U+002D HYPHEN-MINUS (-) - case 0x002D: - // If the input stream starts with a number, reconsume the current input code point, consume a numeric token, and return it. - if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { - consumeNumericToken(); - } else { - // Otherwise, if the next 2 input code points are U+002D HYPHEN-MINUS U+003E GREATER-THAN SIGN (->), consume them and return a <CDC-token>. - if (getCharCode(offset + 1) === 0x002D && - getCharCode(offset + 2) === 0x003E) { - type = types.CDC; - offset = offset + 3; - } else { - // Otherwise, if the input stream starts with an identifier, ... - if (charCodeDefinitions.isIdentifierStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { - // ... reconsume the current input code point, consume an ident-like token, and return it. - consumeIdentLikeToken(); - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = types.Delim; - offset++; - } - } - } - break; - - // U+002E FULL STOP (.) - case 0x002E: - // If the input stream starts with a number, ... - if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { - // ... reconsume the current input code point, consume a numeric token, and return it. - consumeNumericToken(); - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = types.Delim; - offset++; - } - - break; - - // U+002F SOLIDUS (/) - case 0x002F: - // If the next two input code point are U+002F SOLIDUS (/) followed by a U+002A ASTERISK (*), - if (getCharCode(offset + 1) === 0x002A) { - // ... consume them and all following code points up to and including the first U+002A ASTERISK (*) - // followed by a U+002F SOLIDUS (/), or up to an EOF code point. - type = types.Comment; - offset = source.indexOf('*/', offset + 2); - offset = offset === -1 ? source.length : offset + 2; - } else { - type = types.Delim; - offset++; - } - break; - - // U+003A COLON (:) - case 0x003A: - // Return a <colon-token>. - type = types.Colon; - offset++; - break; - - // U+003B SEMICOLON (;) - case 0x003B: - // Return a <semicolon-token>. - type = types.Semicolon; - offset++; - break; - - // U+003C LESS-THAN SIGN (<) - case 0x003C: - // If the next 3 input code points are U+0021 EXCLAMATION MARK U+002D HYPHEN-MINUS U+002D HYPHEN-MINUS (!--), ... - if (getCharCode(offset + 1) === 0x0021 && - getCharCode(offset + 2) === 0x002D && - getCharCode(offset + 3) === 0x002D) { - // ... consume them and return a <CDO-token>. - type = types.CDO; - offset = offset + 4; - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = types.Delim; - offset++; - } - - break; - - // U+0040 COMMERCIAL AT (@) - case 0x0040: - // If the next 3 input code points would start an identifier, ... - if (charCodeDefinitions.isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) { - // ... consume a name, create an <at-keyword-token> with its value set to the returned value, and return it. - type = types.AtKeyword; - offset = utils.consumeName(source, offset + 1); - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = types.Delim; - offset++; - } - - break; - - // U+005B LEFT SQUARE BRACKET ([) - case 0x005B: - // Return a <[-token>. - type = types.LeftSquareBracket; - offset++; - break; - - // U+005C REVERSE SOLIDUS (\) - case 0x005C: - // If the input stream starts with a valid escape, ... - if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) { - // ... reconsume the current input code point, consume an ident-like token, and return it. - consumeIdentLikeToken(); - } else { - // Otherwise, this is a parse error. Return a <delim-token> with its value set to the current input code point. - type = types.Delim; - offset++; - } - break; - - // U+005D RIGHT SQUARE BRACKET (]) - case 0x005D: - // Return a <]-token>. - type = types.RightSquareBracket; - offset++; - break; - - // U+007B LEFT CURLY BRACKET ({) - case 0x007B: - // Return a <{-token>. - type = types.LeftCurlyBracket; - offset++; - break; - - // U+007D RIGHT CURLY BRACKET (}) - case 0x007D: - // Return a <}-token>. - type = types.RightCurlyBracket; - offset++; - break; - - // digit - case charCodeDefinitions.DigitCategory: - // Reconsume the current input code point, consume a numeric token, and return it. - consumeNumericToken(); - break; - - // name-start code point - case charCodeDefinitions.NameStartCategory: - // Reconsume the current input code point, consume an ident-like token, and return it. - consumeIdentLikeToken(); - break; - - // EOF - // case EofCategory: - // Return an <EOF-token>. - // break; - - // anything else - default: - // Return a <delim-token> with its value set to the current input code point. - type = types.Delim; - offset++; - } - - // put token to stream - onToken(type, start, start = offset); - } -} - -exports.AtKeyword = types.AtKeyword; -exports.BadString = types.BadString; -exports.BadUrl = types.BadUrl; -exports.CDC = types.CDC; -exports.CDO = types.CDO; -exports.Colon = types.Colon; -exports.Comma = types.Comma; -exports.Comment = types.Comment; -exports.Delim = types.Delim; -exports.Dimension = types.Dimension; -exports.EOF = types.EOF; -exports.Function = types.Function; -exports.Hash = types.Hash; -exports.Ident = types.Ident; -exports.LeftCurlyBracket = types.LeftCurlyBracket; -exports.LeftParenthesis = types.LeftParenthesis; -exports.LeftSquareBracket = types.LeftSquareBracket; -exports.Number = types.Number; -exports.Percentage = types.Percentage; -exports.RightCurlyBracket = types.RightCurlyBracket; -exports.RightParenthesis = types.RightParenthesis; -exports.RightSquareBracket = types.RightSquareBracket; -exports.Semicolon = types.Semicolon; -exports.String = types.String; -exports.Url = types.Url; -exports.WhiteSpace = types.WhiteSpace; -exports.tokenTypes = types; -exports.DigitCategory = charCodeDefinitions.DigitCategory; -exports.EofCategory = charCodeDefinitions.EofCategory; -exports.NameStartCategory = charCodeDefinitions.NameStartCategory; -exports.NonPrintableCategory = charCodeDefinitions.NonPrintableCategory; -exports.WhiteSpaceCategory = charCodeDefinitions.WhiteSpaceCategory; -exports.charCodeCategory = charCodeDefinitions.charCodeCategory; -exports.isBOM = charCodeDefinitions.isBOM; -exports.isDigit = charCodeDefinitions.isDigit; -exports.isHexDigit = charCodeDefinitions.isHexDigit; -exports.isIdentifierStart = charCodeDefinitions.isIdentifierStart; -exports.isLetter = charCodeDefinitions.isLetter; -exports.isLowercaseLetter = charCodeDefinitions.isLowercaseLetter; -exports.isName = charCodeDefinitions.isName; -exports.isNameStart = charCodeDefinitions.isNameStart; -exports.isNewline = charCodeDefinitions.isNewline; -exports.isNonAscii = charCodeDefinitions.isNonAscii; -exports.isNonPrintable = charCodeDefinitions.isNonPrintable; -exports.isNumberStart = charCodeDefinitions.isNumberStart; -exports.isUppercaseLetter = charCodeDefinitions.isUppercaseLetter; -exports.isValidEscape = charCodeDefinitions.isValidEscape; -exports.isWhiteSpace = charCodeDefinitions.isWhiteSpace; -exports.cmpChar = utils.cmpChar; -exports.cmpStr = utils.cmpStr; -exports.consumeBadUrlRemnants = utils.consumeBadUrlRemnants; -exports.consumeEscaped = utils.consumeEscaped; -exports.consumeName = utils.consumeName; -exports.consumeNumber = utils.consumeNumber; -exports.decodeEscaped = utils.decodeEscaped; -exports.findDecimalNumberEnd = utils.findDecimalNumberEnd; -exports.findWhiteSpaceEnd = utils.findWhiteSpaceEnd; -exports.findWhiteSpaceStart = utils.findWhiteSpaceStart; -exports.getNewlineLength = utils.getNewlineLength; -exports.tokenNames = names; -exports.OffsetToLocation = OffsetToLocation.OffsetToLocation; -exports.TokenStream = TokenStream.TokenStream; -exports.tokenize = tokenize; diff --git a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/names.cjs b/node_modules/csso/node_modules/css-tree/cjs/tokenizer/names.cjs deleted file mode 100644 index d302aedc..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/names.cjs +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -const tokenNames = [ - 'EOF-token', - 'ident-token', - 'function-token', - 'at-keyword-token', - 'hash-token', - 'string-token', - 'bad-string-token', - 'url-token', - 'bad-url-token', - 'delim-token', - 'number-token', - 'percentage-token', - 'dimension-token', - 'whitespace-token', - 'CDO-token', - 'CDC-token', - 'colon-token', - 'semicolon-token', - 'comma-token', - '[-token', - ']-token', - '(-token', - ')-token', - '{-token', - '}-token' -]; - -module.exports = tokenNames; diff --git a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/types.cjs b/node_modules/csso/node_modules/css-tree/cjs/tokenizer/types.cjs deleted file mode 100644 index a89b8109..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/types.cjs +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -// CSS Syntax Module Level 3 -// https://www.w3.org/TR/css-syntax-3/ -const EOF = 0; // <EOF-token> -const Ident = 1; // <ident-token> -const Function = 2; // <function-token> -const AtKeyword = 3; // <at-keyword-token> -const Hash = 4; // <hash-token> -const String = 5; // <string-token> -const BadString = 6; // <bad-string-token> -const Url = 7; // <url-token> -const BadUrl = 8; // <bad-url-token> -const Delim = 9; // <delim-token> -const Number = 10; // <number-token> -const Percentage = 11; // <percentage-token> -const Dimension = 12; // <dimension-token> -const WhiteSpace = 13; // <whitespace-token> -const CDO = 14; // <CDO-token> -const CDC = 15; // <CDC-token> -const Colon = 16; // <colon-token> : -const Semicolon = 17; // <semicolon-token> ; -const Comma = 18; // <comma-token> , -const LeftSquareBracket = 19; // <[-token> -const RightSquareBracket = 20; // <]-token> -const LeftParenthesis = 21; // <(-token> -const RightParenthesis = 22; // <)-token> -const LeftCurlyBracket = 23; // <{-token> -const RightCurlyBracket = 24; // <}-token> -const Comment = 25; - -exports.AtKeyword = AtKeyword; -exports.BadString = BadString; -exports.BadUrl = BadUrl; -exports.CDC = CDC; -exports.CDO = CDO; -exports.Colon = Colon; -exports.Comma = Comma; -exports.Comment = Comment; -exports.Delim = Delim; -exports.Dimension = Dimension; -exports.EOF = EOF; -exports.Function = Function; -exports.Hash = Hash; -exports.Ident = Ident; -exports.LeftCurlyBracket = LeftCurlyBracket; -exports.LeftParenthesis = LeftParenthesis; -exports.LeftSquareBracket = LeftSquareBracket; -exports.Number = Number; -exports.Percentage = Percentage; -exports.RightCurlyBracket = RightCurlyBracket; -exports.RightParenthesis = RightParenthesis; -exports.RightSquareBracket = RightSquareBracket; -exports.Semicolon = Semicolon; -exports.String = String; -exports.Url = Url; -exports.WhiteSpace = WhiteSpace; diff --git a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/utils.cjs b/node_modules/csso/node_modules/css-tree/cjs/tokenizer/utils.cjs deleted file mode 100644 index c3798e38..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/tokenizer/utils.cjs +++ /dev/null @@ -1,261 +0,0 @@ -'use strict'; - -const charCodeDefinitions = require('./char-code-definitions.cjs'); - -function getCharCode(source, offset) { - return offset < source.length ? source.charCodeAt(offset) : 0; -} - -function getNewlineLength(source, offset, code) { - if (code === 13 /* \r */ && getCharCode(source, offset + 1) === 10 /* \n */) { - return 2; - } - - return 1; -} - -function cmpChar(testStr, offset, referenceCode) { - let code = testStr.charCodeAt(offset); - - // code.toLowerCase() for A..Z - if (charCodeDefinitions.isUppercaseLetter(code)) { - code = code | 32; - } - - return code === referenceCode; -} - -function cmpStr(testStr, start, end, referenceStr) { - if (end - start !== referenceStr.length) { - return false; - } - - if (start < 0 || end > testStr.length) { - return false; - } - - for (let i = start; i < end; i++) { - const referenceCode = referenceStr.charCodeAt(i - start); - let testCode = testStr.charCodeAt(i); - - // testCode.toLowerCase() for A..Z - if (charCodeDefinitions.isUppercaseLetter(testCode)) { - testCode = testCode | 32; - } - - if (testCode !== referenceCode) { - return false; - } - } - - return true; -} - -function findWhiteSpaceStart(source, offset) { - for (; offset >= 0; offset--) { - if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) { - break; - } - } - - return offset + 1; -} - -function findWhiteSpaceEnd(source, offset) { - for (; offset < source.length; offset++) { - if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) { - break; - } - } - - return offset; -} - -function findDecimalNumberEnd(source, offset) { - for (; offset < source.length; offset++) { - if (!charCodeDefinitions.isDigit(source.charCodeAt(offset))) { - break; - } - } - - return offset; -} - -// § 4.3.7. Consume an escaped code point -function consumeEscaped(source, offset) { - // It assumes that the U+005C REVERSE SOLIDUS (\) has already been consumed and - // that the next input code point has already been verified to be part of a valid escape. - offset += 2; - - // hex digit - if (charCodeDefinitions.isHexDigit(getCharCode(source, offset - 1))) { - // Consume as many hex digits as possible, but no more than 5. - // Note that this means 1-6 hex digits have been consumed in total. - for (const maxOffset = Math.min(source.length, offset + 5); offset < maxOffset; offset++) { - if (!charCodeDefinitions.isHexDigit(getCharCode(source, offset))) { - break; - } - } - - // If the next input code point is whitespace, consume it as well. - const code = getCharCode(source, offset); - if (charCodeDefinitions.isWhiteSpace(code)) { - offset += getNewlineLength(source, offset, code); - } - } - - return offset; -} - -// §4.3.11. Consume a name -// Note: This algorithm does not do the verification of the first few code points that are necessary -// to ensure the returned code points would constitute an <ident-token>. If that is the intended use, -// ensure that the stream starts with an identifier before calling this algorithm. -function consumeName(source, offset) { - // Let result initially be an empty string. - // Repeatedly consume the next input code point from the stream: - for (; offset < source.length; offset++) { - const code = source.charCodeAt(offset); - - // name code point - if (charCodeDefinitions.isName(code)) { - // Append the code point to result. - continue; - } - - // the stream starts with a valid escape - if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) { - // Consume an escaped code point. Append the returned code point to result. - offset = consumeEscaped(source, offset) - 1; - continue; - } - - // anything else - // Reconsume the current input code point. Return result. - break; - } - - return offset; -} - -// §4.3.12. Consume a number -function consumeNumber(source, offset) { - let code = source.charCodeAt(offset); - - // 2. If the next input code point is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-), - // consume it and append it to repr. - if (code === 0x002B || code === 0x002D) { - code = source.charCodeAt(offset += 1); - } - - // 3. While the next input code point is a digit, consume it and append it to repr. - if (charCodeDefinitions.isDigit(code)) { - offset = findDecimalNumberEnd(source, offset + 1); - code = source.charCodeAt(offset); - } - - // 4. If the next 2 input code points are U+002E FULL STOP (.) followed by a digit, then: - if (code === 0x002E && charCodeDefinitions.isDigit(source.charCodeAt(offset + 1))) { - // 4.1 Consume them. - // 4.2 Append them to repr. - offset += 2; - - // 4.3 Set type to "number". - // TODO - - // 4.4 While the next input code point is a digit, consume it and append it to repr. - - offset = findDecimalNumberEnd(source, offset); - } - - // 5. If the next 2 or 3 input code points are U+0045 LATIN CAPITAL LETTER E (E) - // or U+0065 LATIN SMALL LETTER E (e), ... , followed by a digit, then: - if (cmpChar(source, offset, 101 /* e */)) { - let sign = 0; - code = source.charCodeAt(offset + 1); - - // ... optionally followed by U+002D HYPHEN-MINUS (-) or U+002B PLUS SIGN (+) ... - if (code === 0x002D || code === 0x002B) { - sign = 1; - code = source.charCodeAt(offset + 2); - } - - // ... followed by a digit - if (charCodeDefinitions.isDigit(code)) { - // 5.1 Consume them. - // 5.2 Append them to repr. - - // 5.3 Set type to "number". - // TODO - - // 5.4 While the next input code point is a digit, consume it and append it to repr. - offset = findDecimalNumberEnd(source, offset + 1 + sign + 1); - } - } - - return offset; -} - -// § 4.3.14. Consume the remnants of a bad url -// ... its sole use is to consume enough of the input stream to reach a recovery point -// where normal tokenizing can resume. -function consumeBadUrlRemnants(source, offset) { - // Repeatedly consume the next input code point from the stream: - for (; offset < source.length; offset++) { - const code = source.charCodeAt(offset); - - // U+0029 RIGHT PARENTHESIS ()) - // EOF - if (code === 0x0029) { - // Return. - offset++; - break; - } - - if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) { - // Consume an escaped code point. - // Note: This allows an escaped right parenthesis ("\)") to be encountered - // without ending the <bad-url-token>. This is otherwise identical to - // the "anything else" clause. - offset = consumeEscaped(source, offset); - } - } - - return offset; -} - -// § 4.3.7. Consume an escaped code point -// Note: This algorithm assumes that escaped is valid without leading U+005C REVERSE SOLIDUS (\) -function decodeEscaped(escaped) { - // Single char escaped that's not a hex digit - if (escaped.length === 1 && !charCodeDefinitions.isHexDigit(escaped.charCodeAt(0))) { - return escaped[0]; - } - - // Interpret the hex digits as a hexadecimal number. - let code = parseInt(escaped, 16); - - if ( - (code === 0) || // If this number is zero, - (code >= 0xD800 && code <= 0xDFFF) || // or is for a surrogate, - (code > 0x10FFFF) // or is greater than the maximum allowed code point - ) { - // ... return U+FFFD REPLACEMENT CHARACTER - code = 0xFFFD; - } - - // Otherwise, return the code point with that value. - return String.fromCodePoint(code); -} - -exports.cmpChar = cmpChar; -exports.cmpStr = cmpStr; -exports.consumeBadUrlRemnants = consumeBadUrlRemnants; -exports.consumeEscaped = consumeEscaped; -exports.consumeName = consumeName; -exports.consumeNumber = consumeNumber; -exports.decodeEscaped = decodeEscaped; -exports.findDecimalNumberEnd = findDecimalNumberEnd; -exports.findWhiteSpaceEnd = findWhiteSpaceEnd; -exports.findWhiteSpaceStart = findWhiteSpaceStart; -exports.getNewlineLength = getNewlineLength; diff --git a/node_modules/csso/node_modules/css-tree/cjs/utils/List.cjs b/node_modules/csso/node_modules/css-tree/cjs/utils/List.cjs deleted file mode 100644 index ec25f461..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/utils/List.cjs +++ /dev/null @@ -1,473 +0,0 @@ -'use strict'; - -// -// list -// ┌──────┐ -// ┌──────────────┼─head │ -// │ │ tail─┼──────────────┐ -// │ └──────┘ │ -// ▼ ▼ -// item item item item -// ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ -// null ◀──┼─prev │◀───┼─prev │◀───┼─prev │◀───┼─prev │ -// │ next─┼───▶│ next─┼───▶│ next─┼───▶│ next─┼──▶ null -// ├──────┤ ├──────┤ ├──────┤ ├──────┤ -// │ data │ │ data │ │ data │ │ data │ -// └──────┘ └──────┘ └──────┘ └──────┘ -// - -let releasedCursors = null; - -class List { - static createItem(data) { - return { - prev: null, - next: null, - data - }; - } - - constructor() { - this.head = null; - this.tail = null; - this.cursor = null; - } - createItem(data) { - return List.createItem(data); - } - - // cursor helpers - allocateCursor(prev, next) { - let cursor; - - if (releasedCursors !== null) { - cursor = releasedCursors; - releasedCursors = releasedCursors.cursor; - cursor.prev = prev; - cursor.next = next; - cursor.cursor = this.cursor; - } else { - cursor = { - prev, - next, - cursor: this.cursor - }; - } - - this.cursor = cursor; - - return cursor; - } - releaseCursor() { - const { cursor } = this; - - this.cursor = cursor.cursor; - cursor.prev = null; - cursor.next = null; - cursor.cursor = releasedCursors; - releasedCursors = cursor; - } - updateCursors(prevOld, prevNew, nextOld, nextNew) { - let { cursor } = this; - - while (cursor !== null) { - if (cursor.prev === prevOld) { - cursor.prev = prevNew; - } - - if (cursor.next === nextOld) { - cursor.next = nextNew; - } - - cursor = cursor.cursor; - } - } - *[Symbol.iterator]() { - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - yield cursor.data; - } - } - - // getters - get size() { - let size = 0; - - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - size++; - } - - return size; - } - get isEmpty() { - return this.head === null; - } - get first() { - return this.head && this.head.data; - } - get last() { - return this.tail && this.tail.data; - } - - // convertors - fromArray(array) { - let cursor = null; - this.head = null; - - for (let data of array) { - const item = List.createItem(data); - - if (cursor !== null) { - cursor.next = item; - } else { - this.head = item; - } - - item.prev = cursor; - cursor = item; - } - - this.tail = cursor; - return this; - } - toArray() { - return [...this]; - } - toJSON() { - return [...this]; - } - - // array-like methods - forEach(fn, thisArg = this) { - // push cursor - const cursor = this.allocateCursor(null, this.head); - - while (cursor.next !== null) { - const item = cursor.next; - cursor.next = item.next; - fn.call(thisArg, item.data, item, this); - } - - // pop cursor - this.releaseCursor(); - } - forEachRight(fn, thisArg = this) { - // push cursor - const cursor = this.allocateCursor(this.tail, null); - - while (cursor.prev !== null) { - const item = cursor.prev; - cursor.prev = item.prev; - fn.call(thisArg, item.data, item, this); - } - - // pop cursor - this.releaseCursor(); - } - reduce(fn, initialValue, thisArg = this) { - // push cursor - let cursor = this.allocateCursor(null, this.head); - let acc = initialValue; - let item; - - while (cursor.next !== null) { - item = cursor.next; - cursor.next = item.next; - - acc = fn.call(thisArg, acc, item.data, item, this); - } - - // pop cursor - this.releaseCursor(); - - return acc; - } - reduceRight(fn, initialValue, thisArg = this) { - // push cursor - let cursor = this.allocateCursor(this.tail, null); - let acc = initialValue; - let item; - - while (cursor.prev !== null) { - item = cursor.prev; - cursor.prev = item.prev; - - acc = fn.call(thisArg, acc, item.data, item, this); - } - - // pop cursor - this.releaseCursor(); - - return acc; - } - some(fn, thisArg = this) { - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - if (fn.call(thisArg, cursor.data, cursor, this)) { - return true; - } - } - - return false; - } - map(fn, thisArg = this) { - const result = new List(); - - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - result.appendData(fn.call(thisArg, cursor.data, cursor, this)); - } - - return result; - } - filter(fn, thisArg = this) { - const result = new List(); - - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - if (fn.call(thisArg, cursor.data, cursor, this)) { - result.appendData(cursor.data); - } - } - - return result; - } - - nextUntil(start, fn, thisArg = this) { - if (start === null) { - return; - } - - // push cursor - const cursor = this.allocateCursor(null, start); - - while (cursor.next !== null) { - const item = cursor.next; - cursor.next = item.next; - if (fn.call(thisArg, item.data, item, this)) { - break; - } - } - - // pop cursor - this.releaseCursor(); - } - prevUntil(start, fn, thisArg = this) { - if (start === null) { - return; - } - - // push cursor - const cursor = this.allocateCursor(start, null); - - while (cursor.prev !== null) { - const item = cursor.prev; - cursor.prev = item.prev; - if (fn.call(thisArg, item.data, item, this)) { - break; - } - } - - // pop cursor - this.releaseCursor(); - } - - // mutation - clear() { - this.head = null; - this.tail = null; - } - copy() { - const result = new List(); - - for (let data of this) { - result.appendData(data); - } - - return result; - } - prepend(item) { - // head - // ^ - // item - this.updateCursors(null, item, this.head, item); - - // insert to the beginning of the list - if (this.head !== null) { - // new item <- first item - this.head.prev = item; - // new item -> first item - item.next = this.head; - } else { - // if list has no head, then it also has no tail - // in this case tail points to the new item - this.tail = item; - } - - // head always points to new item - this.head = item; - return this; - } - prependData(data) { - return this.prepend(List.createItem(data)); - } - append(item) { - return this.insert(item); - } - appendData(data) { - return this.insert(List.createItem(data)); - } - insert(item, before = null) { - if (before !== null) { - // prev before - // ^ - // item - this.updateCursors(before.prev, item, before, item); - - if (before.prev === null) { - // insert to the beginning of list - if (this.head !== before) { - throw new Error('before doesn\'t belong to list'); - } - // since head points to before therefore list doesn't empty - // no need to check tail - this.head = item; - before.prev = item; - item.next = before; - this.updateCursors(null, item); - } else { - // insert between two items - before.prev.next = item; - item.prev = before.prev; - before.prev = item; - item.next = before; - } - } else { - // tail - // ^ - // item - this.updateCursors(this.tail, item, null, item); - - // insert to the ending of the list - if (this.tail !== null) { - // last item -> new item - this.tail.next = item; - // last item <- new item - item.prev = this.tail; - } else { - // if list has no tail, then it also has no head - // in this case head points to new item - this.head = item; - } - - // tail always points to new item - this.tail = item; - } - - return this; - } - insertData(data, before) { - return this.insert(List.createItem(data), before); - } - remove(item) { - // item - // ^ - // prev next - this.updateCursors(item, item.prev, item, item.next); - - if (item.prev !== null) { - item.prev.next = item.next; - } else { - if (this.head !== item) { - throw new Error('item doesn\'t belong to list'); - } - - this.head = item.next; - } - - if (item.next !== null) { - item.next.prev = item.prev; - } else { - if (this.tail !== item) { - throw new Error('item doesn\'t belong to list'); - } - - this.tail = item.prev; - } - - item.prev = null; - item.next = null; - - return item; - } - push(data) { - this.insert(List.createItem(data)); - } - pop() { - return this.tail !== null ? this.remove(this.tail) : null; - } - unshift(data) { - this.prepend(List.createItem(data)); - } - shift() { - return this.head !== null ? this.remove(this.head) : null; - } - prependList(list) { - return this.insertList(list, this.head); - } - appendList(list) { - return this.insertList(list); - } - insertList(list, before) { - // ignore empty lists - if (list.head === null) { - return this; - } - - if (before !== undefined && before !== null) { - this.updateCursors(before.prev, list.tail, before, list.head); - - // insert in the middle of dist list - if (before.prev !== null) { - // before.prev <-> list.head - before.prev.next = list.head; - list.head.prev = before.prev; - } else { - this.head = list.head; - } - - before.prev = list.tail; - list.tail.next = before; - } else { - this.updateCursors(this.tail, list.tail, null, list.head); - - // insert to end of the list - if (this.tail !== null) { - // if destination list has a tail, then it also has a head, - // but head doesn't change - // dest tail -> source head - this.tail.next = list.head; - // dest tail <- source head - list.head.prev = this.tail; - } else { - // if list has no a tail, then it also has no a head - // in this case points head to new item - this.head = list.head; - } - - // tail always start point to new item - this.tail = list.tail; - } - - list.head = null; - list.tail = null; - return this; - } - replace(oldItem, newItemOrList) { - if ('head' in newItemOrList) { - this.insertList(newItemOrList, oldItem); - } else { - this.insert(newItemOrList, oldItem); - } - - this.remove(oldItem); - } -} - -exports.List = List; diff --git a/node_modules/csso/node_modules/css-tree/cjs/utils/clone.cjs b/node_modules/csso/node_modules/css-tree/cjs/utils/clone.cjs deleted file mode 100644 index f84c30f0..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/utils/clone.cjs +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -const List = require('./List.cjs'); - -function clone(node) { - const result = {}; - - for (const key in node) { - let value = node[key]; - - if (value) { - if (Array.isArray(value) || value instanceof List.List) { - value = value.map(clone); - } else if (value.constructor === Object) { - value = clone(value); - } - } - - result[key] = value; - } - - return result; -} - -exports.clone = clone; diff --git a/node_modules/csso/node_modules/css-tree/cjs/utils/create-custom-error.cjs b/node_modules/csso/node_modules/css-tree/cjs/utils/create-custom-error.cjs deleted file mode 100644 index d1d3e535..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/utils/create-custom-error.cjs +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -function createCustomError(name, message) { - // use Object.create(), because some VMs prevent setting line/column otherwise - // (iOS Safari 10 even throws an exception) - const error = Object.create(SyntaxError.prototype); - const errorStack = new Error(); - - return Object.assign(error, { - name, - message, - get stack() { - return (errorStack.stack || '').replace(/^(.+\n){1,3}/, `${name}: ${message}\n`); - } - }); -} - -exports.createCustomError = createCustomError; diff --git a/node_modules/csso/node_modules/css-tree/cjs/utils/ident.cjs b/node_modules/csso/node_modules/css-tree/cjs/utils/ident.cjs deleted file mode 100644 index cd70911d..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/utils/ident.cjs +++ /dev/null @@ -1,102 +0,0 @@ -'use strict'; - -const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs'); -const utils = require('../tokenizer/utils.cjs'); - -const REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\) - -function decode(str) { - const end = str.length - 1; - let decoded = ''; - - for (let i = 0; i < str.length; i++) { - let code = str.charCodeAt(i); - - if (code === REVERSE_SOLIDUS) { - // special case at the ending - if (i === end) { - // if the next input code point is EOF, do nothing - break; - } - - code = str.charCodeAt(++i); - - // consume escaped - if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) { - const escapeStart = i - 1; - const escapeEnd = utils.consumeEscaped(str, escapeStart); - - i = escapeEnd - 1; - decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd)); - } else { - // \r\n - if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) { - i++; - } - } - } else { - decoded += str[i]; - } - } - - return decoded; -} - -// https://drafts.csswg.org/cssom/#serialize-an-identifier -// § 2.1. Common Serializing Idioms -function encode(str) { - let encoded = ''; - - // If the character is the first character and is a "-" (U+002D), - // and there is no second character, then the escaped character. - // Note: That's means a single dash string "-" return as escaped dash, - // so move the condition out of the main loop - if (str.length === 1 && str.charCodeAt(0) === 0x002D) { - return '\\-'; - } - - // To serialize an identifier means to create a string represented - // by the concatenation of, for each character of the identifier: - for (let i = 0; i < str.length; i++) { - const code = str.charCodeAt(i); - - // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD). - if (code === 0x0000) { - encoded += '\uFFFD'; - continue; - } - - if ( - // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F ... - // Note: Do not compare with 0x0001 since 0x0000 is precessed before - code <= 0x001F || code === 0x007F || - // [or] ... is in the range [0-9] (U+0030 to U+0039), - (code >= 0x0030 && code <= 0x0039 && ( - // If the character is the first character ... - i === 0 || - // If the character is the second character ... and the first character is a "-" (U+002D) - i === 1 && str.charCodeAt(0) === 0x002D - )) - ) { - // ... then the character escaped as code point. - encoded += '\\' + code.toString(16) + ' '; - continue; - } - - // If the character is not handled by one of the above rules and is greater - // than or equal to U+0080, is "-" (U+002D) or "_" (U+005F), or is in one - // of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to U+005A), - // or \[a-z] (U+0061 to U+007A), then the character itself. - if (charCodeDefinitions.isName(code)) { - encoded += str.charAt(i); - } else { - // Otherwise, the escaped character. - encoded += '\\' + str.charAt(i); - } - } - - return encoded; -} - -exports.decode = decode; -exports.encode = encode; diff --git a/node_modules/csso/node_modules/css-tree/cjs/utils/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/utils/index.cjs deleted file mode 100644 index cdae6214..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/utils/index.cjs +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -const clone = require('./clone.cjs'); -const ident = require('./ident.cjs'); -const List = require('./List.cjs'); -const names = require('./names.cjs'); -const string = require('./string.cjs'); -const url = require('./url.cjs'); - - - -exports.clone = clone.clone; -exports.ident = ident; -exports.List = List.List; -exports.isCustomProperty = names.isCustomProperty; -exports.keyword = names.keyword; -exports.property = names.property; -exports.vendorPrefix = names.vendorPrefix; -exports.string = string; -exports.url = url; diff --git a/node_modules/csso/node_modules/css-tree/cjs/utils/names.cjs b/node_modules/csso/node_modules/css-tree/cjs/utils/names.cjs deleted file mode 100644 index 92c73c71..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/utils/names.cjs +++ /dev/null @@ -1,113 +0,0 @@ -'use strict'; - -const keywords = new Map(); -const properties = new Map(); -const HYPHENMINUS = 45; // '-'.charCodeAt() - -const keyword = getKeywordDescriptor; -const property = getPropertyDescriptor; -const vendorPrefix = getVendorPrefix; -function isCustomProperty(str, offset) { - offset = offset || 0; - - return str.length - offset >= 2 && - str.charCodeAt(offset) === HYPHENMINUS && - str.charCodeAt(offset + 1) === HYPHENMINUS; -} - -function getVendorPrefix(str, offset) { - offset = offset || 0; - - // verdor prefix should be at least 3 chars length - if (str.length - offset >= 3) { - // vendor prefix starts with hyper minus following non-hyper minus - if (str.charCodeAt(offset) === HYPHENMINUS && - str.charCodeAt(offset + 1) !== HYPHENMINUS) { - // vendor prefix should contain a hyper minus at the ending - const secondDashIndex = str.indexOf('-', offset + 2); - - if (secondDashIndex !== -1) { - return str.substring(offset, secondDashIndex + 1); - } - } - } - - return ''; -} - -function getKeywordDescriptor(keyword) { - if (keywords.has(keyword)) { - return keywords.get(keyword); - } - - const name = keyword.toLowerCase(); - let descriptor = keywords.get(name); - - if (descriptor === undefined) { - const custom = isCustomProperty(name, 0); - const vendor = !custom ? getVendorPrefix(name, 0) : ''; - descriptor = Object.freeze({ - basename: name.substr(vendor.length), - name, - prefix: vendor, - vendor, - custom - }); - } - - keywords.set(keyword, descriptor); - - return descriptor; -} - -function getPropertyDescriptor(property) { - if (properties.has(property)) { - return properties.get(property); - } - - let name = property; - let hack = property[0]; - - if (hack === '/') { - hack = property[1] === '/' ? '//' : '/'; - } else if (hack !== '_' && - hack !== '*' && - hack !== '$' && - hack !== '#' && - hack !== '+' && - hack !== '&') { - hack = ''; - } - - const custom = isCustomProperty(name, hack.length); - - // re-use result when possible (the same as for lower case) - if (!custom) { - name = name.toLowerCase(); - if (properties.has(name)) { - const descriptor = properties.get(name); - properties.set(property, descriptor); - return descriptor; - } - } - - const vendor = !custom ? getVendorPrefix(name, hack.length) : ''; - const prefix = name.substr(0, hack.length + vendor.length); - const descriptor = Object.freeze({ - basename: name.substr(prefix.length), - name: name.substr(hack.length), - hack, - vendor, - prefix, - custom - }); - - properties.set(property, descriptor); - - return descriptor; -} - -exports.isCustomProperty = isCustomProperty; -exports.keyword = keyword; -exports.property = property; -exports.vendorPrefix = vendorPrefix; diff --git a/node_modules/csso/node_modules/css-tree/cjs/utils/string.cjs b/node_modules/csso/node_modules/css-tree/cjs/utils/string.cjs deleted file mode 100644 index d9c5d01e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/utils/string.cjs +++ /dev/null @@ -1,99 +0,0 @@ -'use strict'; - -const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs'); -const utils = require('../tokenizer/utils.cjs'); - -const REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\) -const QUOTATION_MARK = 0x0022; // " -const APOSTROPHE = 0x0027; // ' - -function decode(str) { - const len = str.length; - const firstChar = str.charCodeAt(0); - const start = firstChar === QUOTATION_MARK || firstChar === APOSTROPHE ? 1 : 0; - const end = start === 1 && len > 1 && str.charCodeAt(len - 1) === firstChar ? len - 2 : len - 1; - let decoded = ''; - - for (let i = start; i <= end; i++) { - let code = str.charCodeAt(i); - - if (code === REVERSE_SOLIDUS) { - // special case at the ending - if (i === end) { - // if the next input code point is EOF, do nothing - // otherwise include last quote as escaped - if (i !== len - 1) { - decoded = str.substr(i + 1); - } - break; - } - - code = str.charCodeAt(++i); - - // consume escaped - if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) { - const escapeStart = i - 1; - const escapeEnd = utils.consumeEscaped(str, escapeStart); - - i = escapeEnd - 1; - decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd)); - } else { - // \r\n - if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) { - i++; - } - } - } else { - decoded += str[i]; - } - } - - return decoded; -} - -// https://drafts.csswg.org/cssom/#serialize-a-string -// § 2.1. Common Serializing Idioms -function encode(str, apostrophe) { - const quote = apostrophe ? '\'' : '"'; - const quoteCode = apostrophe ? APOSTROPHE : QUOTATION_MARK; - let encoded = ''; - let wsBeforeHexIsNeeded = false; - - for (let i = 0; i < str.length; i++) { - const code = str.charCodeAt(i); - - // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD). - if (code === 0x0000) { - encoded += '\uFFFD'; - continue; - } - - // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F, - // the character escaped as code point. - // Note: Do not compare with 0x0001 since 0x0000 is precessed before - if (code <= 0x001f || code === 0x007F) { - encoded += '\\' + code.toString(16); - wsBeforeHexIsNeeded = true; - continue; - } - - // If the character is '"' (U+0022) or "\" (U+005C), the escaped character. - if (code === quoteCode || code === REVERSE_SOLIDUS) { - encoded += '\\' + str.charAt(i); - wsBeforeHexIsNeeded = false; - } else { - if (wsBeforeHexIsNeeded && (charCodeDefinitions.isHexDigit(code) || charCodeDefinitions.isWhiteSpace(code))) { - encoded += ' '; - } - - // Otherwise, the character itself. - encoded += str.charAt(i); - wsBeforeHexIsNeeded = false; - } - } - - return quote + encoded + quote; -} - -exports.decode = decode; -exports.encode = encode; diff --git a/node_modules/csso/node_modules/css-tree/cjs/utils/url.cjs b/node_modules/csso/node_modules/css-tree/cjs/utils/url.cjs deleted file mode 100644 index e0e5c227..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/utils/url.cjs +++ /dev/null @@ -1,108 +0,0 @@ -'use strict'; - -const charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs'); -const utils = require('../tokenizer/utils.cjs'); - -const SPACE = 0x0020; // U+0020 SPACE -const REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\) -const QUOTATION_MARK = 0x0022; // " -const APOSTROPHE = 0x0027; // ' -const LEFTPARENTHESIS = 0x0028; // U+0028 LEFT PARENTHESIS (() -const RIGHTPARENTHESIS = 0x0029; // U+0029 RIGHT PARENTHESIS ()) - -function decode(str) { - const len = str.length; - let start = 4; // length of "url(" - let end = str.charCodeAt(len - 1) === RIGHTPARENTHESIS ? len - 2 : len - 1; - let decoded = ''; - - while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(start))) { - start++; - } - - while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(end))) { - end--; - } - - for (let i = start; i <= end; i++) { - let code = str.charCodeAt(i); - - if (code === REVERSE_SOLIDUS) { - // special case at the ending - if (i === end) { - // if the next input code point is EOF, do nothing - // otherwise include last left parenthesis as escaped - if (i !== len - 1) { - decoded = str.substr(i + 1); - } - break; - } - - code = str.charCodeAt(++i); - - // consume escaped - if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) { - const escapeStart = i - 1; - const escapeEnd = utils.consumeEscaped(str, escapeStart); - - i = escapeEnd - 1; - decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd)); - } else { - // \r\n - if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) { - i++; - } - } - } else { - decoded += str[i]; - } - } - - return decoded; -} - -function encode(str) { - let encoded = ''; - let wsBeforeHexIsNeeded = false; - - for (let i = 0; i < str.length; i++) { - const code = str.charCodeAt(i); - - // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD). - if (code === 0x0000) { - encoded += '\uFFFD'; - continue; - } - - // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F, - // the character escaped as code point. - // Note: Do not compare with 0x0001 since 0x0000 is precessed before - if (code <= 0x001f || code === 0x007F) { - encoded += '\\' + code.toString(16); - wsBeforeHexIsNeeded = true; - continue; - } - - if (code === SPACE || - code === REVERSE_SOLIDUS || - code === QUOTATION_MARK || - code === APOSTROPHE || - code === LEFTPARENTHESIS || - code === RIGHTPARENTHESIS) { - encoded += '\\' + str.charAt(i); - wsBeforeHexIsNeeded = false; - } else { - if (wsBeforeHexIsNeeded && charCodeDefinitions.isHexDigit(code)) { - encoded += ' '; - } - - encoded += str.charAt(i); - wsBeforeHexIsNeeded = false; - } - } - - return 'url(' + encoded + ')'; -} - -exports.decode = decode; -exports.encode = encode; diff --git a/node_modules/csso/node_modules/css-tree/cjs/version.cjs b/node_modules/csso/node_modules/css-tree/cjs/version.cjs deleted file mode 100644 index eaa2fef2..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/version.cjs +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -const { version } = require('../package.json'); - -exports.version = version; diff --git a/node_modules/csso/node_modules/css-tree/cjs/walker/create.cjs b/node_modules/csso/node_modules/css-tree/cjs/walker/create.cjs deleted file mode 100644 index 3938a9f1..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/walker/create.cjs +++ /dev/null @@ -1,291 +0,0 @@ -'use strict'; - -const { hasOwnProperty } = Object.prototype; -const noop = function() {}; - -function ensureFunction(value) { - return typeof value === 'function' ? value : noop; -} - -function invokeForType(fn, type) { - return function(node, item, list) { - if (node.type === type) { - fn.call(this, node, item, list); - } - }; -} - -function getWalkersFromStructure(name, nodeType) { - const structure = nodeType.structure; - const walkers = []; - - for (const key in structure) { - if (hasOwnProperty.call(structure, key) === false) { - continue; - } - - let fieldTypes = structure[key]; - const walker = { - name: key, - type: false, - nullable: false - }; - - if (!Array.isArray(fieldTypes)) { - fieldTypes = [fieldTypes]; - } - - for (const fieldType of fieldTypes) { - if (fieldType === null) { - walker.nullable = true; - } else if (typeof fieldType === 'string') { - walker.type = 'node'; - } else if (Array.isArray(fieldType)) { - walker.type = 'list'; - } - } - - if (walker.type) { - walkers.push(walker); - } - } - - if (walkers.length) { - return { - context: nodeType.walkContext, - fields: walkers - }; - } - - return null; -} - -function getTypesFromConfig(config) { - const types = {}; - - for (const name in config.node) { - if (hasOwnProperty.call(config.node, name)) { - const nodeType = config.node[name]; - - if (!nodeType.structure) { - throw new Error('Missed `structure` field in `' + name + '` node type definition'); - } - - types[name] = getWalkersFromStructure(name, nodeType); - } - } - - return types; -} - -function createTypeIterator(config, reverse) { - const fields = config.fields.slice(); - const contextName = config.context; - const useContext = typeof contextName === 'string'; - - if (reverse) { - fields.reverse(); - } - - return function(node, context, walk, walkReducer) { - let prevContextValue; - - if (useContext) { - prevContextValue = context[contextName]; - context[contextName] = node; - } - - for (const field of fields) { - const ref = node[field.name]; - - if (!field.nullable || ref) { - if (field.type === 'list') { - const breakWalk = reverse - ? ref.reduceRight(walkReducer, false) - : ref.reduce(walkReducer, false); - - if (breakWalk) { - return true; - } - } else if (walk(ref)) { - return true; - } - } - } - - if (useContext) { - context[contextName] = prevContextValue; - } - }; -} - -function createFastTraveralMap({ - StyleSheet, - Atrule, - Rule, - Block, - DeclarationList -}) { - return { - Atrule: { - StyleSheet, - Atrule, - Rule, - Block - }, - Rule: { - StyleSheet, - Atrule, - Rule, - Block - }, - Declaration: { - StyleSheet, - Atrule, - Rule, - Block, - DeclarationList - } - }; -} - -function createWalker(config) { - const types = getTypesFromConfig(config); - const iteratorsNatural = {}; - const iteratorsReverse = {}; - const breakWalk = Symbol('break-walk'); - const skipNode = Symbol('skip-node'); - - for (const name in types) { - if (hasOwnProperty.call(types, name) && types[name] !== null) { - iteratorsNatural[name] = createTypeIterator(types[name], false); - iteratorsReverse[name] = createTypeIterator(types[name], true); - } - } - - const fastTraversalIteratorsNatural = createFastTraveralMap(iteratorsNatural); - const fastTraversalIteratorsReverse = createFastTraveralMap(iteratorsReverse); - - const walk = function(root, options) { - function walkNode(node, item, list) { - const enterRet = enter.call(context, node, item, list); - - if (enterRet === breakWalk) { - return true; - } - - if (enterRet === skipNode) { - return false; - } - - if (iterators.hasOwnProperty(node.type)) { - if (iterators[node.type](node, context, walkNode, walkReducer)) { - return true; - } - } - - if (leave.call(context, node, item, list) === breakWalk) { - return true; - } - - return false; - } - - let enter = noop; - let leave = noop; - let iterators = iteratorsNatural; - let walkReducer = (ret, data, item, list) => ret || walkNode(data, item, list); - const context = { - break: breakWalk, - skip: skipNode, - - root, - stylesheet: null, - atrule: null, - atrulePrelude: null, - rule: null, - selector: null, - block: null, - declaration: null, - function: null - }; - - if (typeof options === 'function') { - enter = options; - } else if (options) { - enter = ensureFunction(options.enter); - leave = ensureFunction(options.leave); - - if (options.reverse) { - iterators = iteratorsReverse; - } - - if (options.visit) { - if (fastTraversalIteratorsNatural.hasOwnProperty(options.visit)) { - iterators = options.reverse - ? fastTraversalIteratorsReverse[options.visit] - : fastTraversalIteratorsNatural[options.visit]; - } else if (!types.hasOwnProperty(options.visit)) { - throw new Error('Bad value `' + options.visit + '` for `visit` option (should be: ' + Object.keys(types).sort().join(', ') + ')'); - } - - enter = invokeForType(enter, options.visit); - leave = invokeForType(leave, options.visit); - } - } - - if (enter === noop && leave === noop) { - throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\'t a function'); - } - - walkNode(root); - }; - - walk.break = breakWalk; - walk.skip = skipNode; - - walk.find = function(ast, fn) { - let found = null; - - walk(ast, function(node, item, list) { - if (fn.call(this, node, item, list)) { - found = node; - return breakWalk; - } - }); - - return found; - }; - - walk.findLast = function(ast, fn) { - let found = null; - - walk(ast, { - reverse: true, - enter(node, item, list) { - if (fn.call(this, node, item, list)) { - found = node; - return breakWalk; - } - } - }); - - return found; - }; - - walk.findAll = function(ast, fn) { - const found = []; - - walk(ast, function(node, item, list) { - if (fn.call(this, node, item, list)) { - found.push(node); - } - }); - - return found; - }; - - return walk; -} - -exports.createWalker = createWalker; diff --git a/node_modules/csso/node_modules/css-tree/cjs/walker/index.cjs b/node_modules/csso/node_modules/css-tree/cjs/walker/index.cjs deleted file mode 100644 index e923c61e..00000000 --- a/node_modules/csso/node_modules/css-tree/cjs/walker/index.cjs +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -const create = require('./create.cjs'); -const walker$1 = require('../syntax/config/walker.cjs'); - -const walker = create.createWalker(walker$1); - -module.exports = walker; diff --git a/node_modules/csso/node_modules/css-tree/data/patch.json b/node_modules/csso/node_modules/css-tree/data/patch.json deleted file mode 100644 index 16d85288..00000000 --- a/node_modules/csso/node_modules/css-tree/data/patch.json +++ /dev/null @@ -1,739 +0,0 @@ -{ - "atrules": { - "charset": { - "prelude": "<string>" - }, - "font-face": { - "descriptors": { - "unicode-range": { - "comment": "replaces <unicode-range>, an old production name", - "syntax": "<urange>#" - } - } - } - }, - "properties": { - "-moz-background-clip": { - "comment": "deprecated syntax in old Firefox, https://developer.mozilla.org/en/docs/Web/CSS/background-clip", - "syntax": "padding | border" - }, - "-moz-border-radius-bottomleft": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-left-radius", - "syntax": "<'border-bottom-left-radius'>" - }, - "-moz-border-radius-bottomright": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-right-radius", - "syntax": "<'border-bottom-right-radius'>" - }, - "-moz-border-radius-topleft": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-left-radius", - "syntax": "<'border-top-left-radius'>" - }, - "-moz-border-radius-topright": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-right-radius", - "syntax": "<'border-bottom-right-radius'>" - }, - "-moz-control-character-visibility": { - "comment": "firefox specific keywords, https://bugzilla.mozilla.org/show_bug.cgi?id=947588", - "syntax": "visible | hidden" - }, - "-moz-osx-font-smoothing": { - "comment": "misssed old syntax https://developer.mozilla.org/en-US/docs/Web/CSS/font-smooth", - "syntax": "auto | grayscale" - }, - "-moz-user-select": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/user-select", - "syntax": "none | text | all | -moz-none" - }, - "-ms-flex-align": { - "comment": "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-align", - "syntax": "start | end | center | baseline | stretch" - }, - "-ms-flex-item-align": { - "comment": "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-align", - "syntax": "auto | start | end | center | baseline | stretch" - }, - "-ms-flex-line-pack": { - "comment": "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-line-pack", - "syntax": "start | end | center | justify | distribute | stretch" - }, - "-ms-flex-negative": { - "comment": "misssed old syntax implemented in IE; TODO: find references for comfirmation", - "syntax": "<'flex-shrink'>" - }, - "-ms-flex-pack": { - "comment": "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-pack", - "syntax": "start | end | center | justify | distribute" - }, - "-ms-flex-order": { - "comment": "misssed old syntax implemented in IE; https://msdn.microsoft.com/en-us/library/jj127303(v=vs.85).aspx", - "syntax": "<integer>" - }, - "-ms-flex-positive": { - "comment": "misssed old syntax implemented in IE; TODO: find references for comfirmation", - "syntax": "<'flex-grow'>" - }, - "-ms-flex-preferred-size": { - "comment": "misssed old syntax implemented in IE; TODO: find references for comfirmation", - "syntax": "<'flex-basis'>" - }, - "-ms-interpolation-mode": { - "comment": "https://msdn.microsoft.com/en-us/library/ff521095(v=vs.85).aspx", - "syntax": "nearest-neighbor | bicubic" - }, - "-ms-grid-column-align": { - "comment": "add this property first since it uses as fallback for flexbox, https://msdn.microsoft.com/en-us/library/windows/apps/hh466338.aspx", - "syntax": "start | end | center | stretch" - }, - "-ms-grid-row-align": { - "comment": "add this property first since it uses as fallback for flexbox, https://msdn.microsoft.com/en-us/library/windows/apps/hh466348.aspx", - "syntax": "start | end | center | stretch" - }, - "-ms-hyphenate-limit-last": { - "comment": "misssed old syntax implemented in IE; https://www.w3.org/TR/css-text-4/#hyphenate-line-limits", - "syntax": "none | always | column | page | spread" - }, - "-webkit-appearance": { - "comment": "webkit specific keywords", - "references": [ - "http://css-infos.net/property/-webkit-appearance" - ], - "syntax": "none | button | button-bevel | caps-lock-indicator | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | media-time-remaining-display | media-toggle-closed-captions-button | media-volume-slider | media-volume-slider-container | media-volume-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbargripper-horizontal | scrollbargripper-vertical | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button" - }, - "-webkit-background-clip": { - "comment": "https://developer.mozilla.org/en/docs/Web/CSS/background-clip", - "syntax": "[ <box> | border | padding | content | text ]#" - }, - "-webkit-column-break-after": { - "comment": "added, http://help.dottoro.com/lcrthhhv.php", - "syntax": "always | auto | avoid" - }, - "-webkit-column-break-before": { - "comment": "added, http://help.dottoro.com/lcxquvkf.php", - "syntax": "always | auto | avoid" - }, - "-webkit-column-break-inside": { - "comment": "added, http://help.dottoro.com/lclhnthl.php", - "syntax": "always | auto | avoid" - }, - "-webkit-font-smoothing": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/font-smooth", - "syntax": "auto | none | antialiased | subpixel-antialiased" - }, - "-webkit-mask-box-image": { - "comment": "missed; https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-box-image", - "syntax": "[ <url> | <gradient> | none ] [ <length-percentage>{4} <-webkit-mask-box-repeat>{2} ]?" - }, - "-webkit-print-color-adjust": { - "comment": "missed", - "references": [ - "https://developer.mozilla.org/en/docs/Web/CSS/-webkit-print-color-adjust" - ], - "syntax": "economy | exact" - }, - "-webkit-text-security": { - "comment": "missed; http://help.dottoro.com/lcbkewgt.php", - "syntax": "none | circle | disc | square" - }, - "-webkit-user-drag": { - "comment": "missed; http://help.dottoro.com/lcbixvwm.php", - "syntax": "none | element | auto" - }, - "-webkit-user-select": { - "comment": "auto is supported by old webkit, https://developer.mozilla.org/en-US/docs/Web/CSS/user-select", - "syntax": "auto | none | text | all" - }, - "alignment-baseline": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/text.html#AlignmentBaselineProperty" - ], - "syntax": "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical" - }, - "background-clip": { - "comment": "used <bg-clip> from CSS Backgrounds and Borders 4 since it adds new values", - "references": [ - "https://github.com/csstree/csstree/issues/190" - ], - "syntax": "<bg-clip>#" - }, - "baseline-shift": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/text.html#BaselineShiftProperty" - ], - "syntax": "baseline | sub | super | <svg-length>" - }, - "behavior": { - "comment": "added old IE property https://msdn.microsoft.com/en-us/library/ms530723(v=vs.85).aspx", - "syntax": "<url>+" - }, - "clip-rule": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/masking.html#ClipRuleProperty" - ], - "syntax": "nonzero | evenodd" - }, - "cue": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<'cue-before'> <'cue-after'>?" - }, - "cue-after": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<url> <decibel>? | none" - }, - "cue-before": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<url> <decibel>? | none" - }, - "cursor": { - "comment": "added legacy keywords: hand, -webkit-grab. -webkit-grabbing, -webkit-zoom-in, -webkit-zoom-out, -moz-grab, -moz-grabbing, -moz-zoom-in, -moz-zoom-out", - "references": [ - "https://www.sitepoint.com/css3-cursor-styles/" - ], - "syntax": "[ [ <url> [ <x> <y> ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing | hand | -webkit-grab | -webkit-grabbing | -webkit-zoom-in | -webkit-zoom-out | -moz-grab | -moz-grabbing | -moz-zoom-in | -moz-zoom-out ] ]" - }, - "display": { - "comment": "extended with -ms-flexbox", - "syntax": "| <-non-standard-display>" - }, - "position": { - "comment": "extended with -webkit-sticky", - "syntax": "| -webkit-sticky" - }, - "dominant-baseline": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/text.html#DominantBaselineProperty" - ], - "syntax": "auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge" - }, - "image-rendering": { - "comment": "extended with <-non-standard-image-rendering>, added SVG keywords optimizeSpeed and optimizeQuality", - "references": [ - "https://developer.mozilla.org/en/docs/Web/CSS/image-rendering", - "https://www.w3.org/TR/SVG/painting.html#ImageRenderingProperty" - ], - "syntax": "| optimizeSpeed | optimizeQuality | <-non-standard-image-rendering>" - }, - "fill": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#FillProperty" - ], - "syntax": "<paint>" - }, - "fill-opacity": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#FillProperty" - ], - "syntax": "<number-zero-one>" - }, - "fill-rule": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#FillProperty" - ], - "syntax": "nonzero | evenodd" - }, - "filter": { - "comment": "extend with IE legacy syntaxes", - "syntax": "| <-ms-filter-function-list>" - }, - "glyph-orientation-horizontal": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/text.html#GlyphOrientationHorizontalProperty" - ], - "syntax": "<angle>" - }, - "glyph-orientation-vertical": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/text.html#GlyphOrientationVerticalProperty" - ], - "syntax": "<angle>" - }, - "kerning": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/text.html#KerningProperty" - ], - "syntax": "auto | <svg-length>" - }, - "letter-spacing": { - "comment": "fix syntax <length> -> <length-percentage>", - "references": [ - "https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/letter-spacing" - ], - "syntax": "normal | <length-percentage>" - }, - "marker": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#MarkerProperties" - ], - "syntax": "none | <url>" - }, - "marker-end": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#MarkerProperties" - ], - "syntax": "none | <url>" - }, - "marker-mid": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#MarkerProperties" - ], - "syntax": "none | <url>" - }, - "marker-start": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#MarkerProperties" - ], - "syntax": "none | <url>" - }, - "max-width": { - "comment": "extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/max-width", - "syntax": "| <-non-standard-width>" - }, - "width": { - "references": [ - "https://developer.mozilla.org/en-US/docs/Web/CSS/width", - "https://github.com/csstree/stylelint-validator/issues/29" - ], - "syntax": "| fill | stretch | intrinsic | -moz-max-content | -webkit-max-content | -moz-fit-content | -webkit-fit-content" - }, - "min-width": { - "comment": "extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width", - "syntax": "| <-non-standard-width>" - }, - "overflow": { - "comment": "extend by vendor keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow", - "syntax": "| <-non-standard-overflow>" - }, - "pause": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<'pause-before'> <'pause-after'>?" - }, - "pause-after": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<time> | none | x-weak | weak | medium | strong | x-strong" - }, - "pause-before": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<time> | none | x-weak | weak | medium | strong | x-strong" - }, - "rest": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<'rest-before'> <'rest-after'>?" - }, - "rest-after": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<time> | none | x-weak | weak | medium | strong | x-strong" - }, - "rest-before": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<time> | none | x-weak | weak | medium | strong | x-strong" - }, - "shape-rendering": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#ShapeRenderingPropert" - ], - "syntax": "auto | optimizeSpeed | crispEdges | geometricPrecision" - }, - "src": { - "comment": "added @font-face's src property https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src", - "syntax": "[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#" - }, - "speak": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "auto | none | normal" - }, - "speak-as": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "normal | spell-out || digits || [ literal-punctuation | no-punctuation ]" - }, - "stroke": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#StrokeProperties" - ], - "syntax": "<paint>" - }, - "stroke-dasharray": { - "comment": "added SVG property; a list of comma and/or white space separated <length>s and <percentage>s", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#StrokeProperties" - ], - "syntax": "none | [ <svg-length>+ ]#" - }, - "stroke-dashoffset": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#StrokeProperties" - ], - "syntax": "<svg-length>" - }, - "stroke-linecap": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#StrokeProperties" - ], - "syntax": "butt | round | square" - }, - "stroke-linejoin": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#StrokeProperties" - ], - "syntax": "miter | round | bevel" - }, - "stroke-miterlimit": { - "comment": "added SVG property (<miterlimit> = <number-one-or-greater>) ", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#StrokeProperties" - ], - "syntax": "<number-one-or-greater>" - }, - "stroke-opacity": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#StrokeProperties" - ], - "syntax": "<number-zero-one>" - }, - "stroke-width": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/painting.html#StrokeProperties" - ], - "syntax": "<svg-length>" - }, - "text-anchor": { - "comment": "added SVG property", - "references": [ - "https://www.w3.org/TR/SVG/text.html#TextAlignmentProperties" - ], - "syntax": "start | middle | end" - }, - "unicode-bidi": { - "comment": "added prefixed keywords https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-bidi", - "syntax": "| -moz-isolate | -moz-isolate-override | -moz-plaintext | -webkit-isolate | -webkit-isolate-override | -webkit-plaintext" - }, - "unicode-range": { - "comment": "added missed property https://developer.mozilla.org/en-US/docs/Web/CSS/%40font-face/unicode-range", - "syntax": "<urange>#" - }, - "voice-balance": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<number> | left | center | right | leftwards | rightwards" - }, - "voice-duration": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "auto | <time>" - }, - "voice-family": { - "comment": "<name> -> <family-name>, https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "[ [ <family-name> | <generic-voice> ] , ]* [ <family-name> | <generic-voice> ] | preserve" - }, - "voice-pitch": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<frequency> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency> | <semitones> | <percentage> ] ]" - }, - "voice-range": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "<frequency> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency> | <semitones> | <percentage> ] ]" - }, - "voice-rate": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "[ normal | x-slow | slow | medium | fast | x-fast ] || <percentage>" - }, - "voice-stress": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "normal | strong | moderate | none | reduced" - }, - "voice-volume": { - "comment": "https://www.w3.org/TR/css3-speech/#property-index", - "syntax": "silent | [ [ x-soft | soft | medium | loud | x-loud ] || <decibel> ]" - }, - "writing-mode": { - "comment": "extend with SVG keywords", - "syntax": "| <svg-writing-mode>" - } - }, - "types": { - "-legacy-gradient": { - "comment": "added collection of legacy gradient syntaxes", - "syntax": "<-webkit-gradient()> | <-legacy-linear-gradient> | <-legacy-repeating-linear-gradient> | <-legacy-radial-gradient> | <-legacy-repeating-radial-gradient>" - }, - "-legacy-linear-gradient": { - "comment": "like standard syntax but w/o `to` keyword https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient", - "syntax": "-moz-linear-gradient( <-legacy-linear-gradient-arguments> ) | -webkit-linear-gradient( <-legacy-linear-gradient-arguments> ) | -o-linear-gradient( <-legacy-linear-gradient-arguments> )" - }, - "-legacy-repeating-linear-gradient": { - "comment": "like standard syntax but w/o `to` keyword https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient", - "syntax": "-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> ) | -webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> ) | -o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )" - }, - "-legacy-linear-gradient-arguments": { - "comment": "like standard syntax but w/o `to` keyword https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient", - "syntax": "[ <angle> | <side-or-corner> ]? , <color-stop-list>" - }, - "-legacy-radial-gradient": { - "comment": "deprecated syntax that implemented by some browsers https://www.w3.org/TR/2011/WD-css3-images-20110908/#radial-gradients", - "syntax": "-moz-radial-gradient( <-legacy-radial-gradient-arguments> ) | -webkit-radial-gradient( <-legacy-radial-gradient-arguments> ) | -o-radial-gradient( <-legacy-radial-gradient-arguments> )" - }, - "-legacy-repeating-radial-gradient": { - "comment": "deprecated syntax that implemented by some browsers https://www.w3.org/TR/2011/WD-css3-images-20110908/#radial-gradients", - "syntax": "-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> ) | -webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> ) | -o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )" - }, - "-legacy-radial-gradient-arguments": { - "comment": "deprecated syntax that implemented by some browsers https://www.w3.org/TR/2011/WD-css3-images-20110908/#radial-gradients", - "syntax": "[ <position> , ]? [ [ [ <-legacy-radial-gradient-shape> || <-legacy-radial-gradient-size> ] | [ <length> | <percentage> ]{2} ] , ]? <color-stop-list>" - }, - "-legacy-radial-gradient-size": { - "comment": "before a standard it contains 2 extra keywords (`contain` and `cover`) https://www.w3.org/TR/2011/WD-css3-images-20110908/#ltsize", - "syntax": "closest-side | closest-corner | farthest-side | farthest-corner | contain | cover" - }, - "-legacy-radial-gradient-shape": { - "comment": "define to double sure it doesn't extends in future https://www.w3.org/TR/2011/WD-css3-images-20110908/#ltshape", - "syntax": "circle | ellipse" - }, - "-non-standard-font": { - "comment": "non standard fonts", - "references": [ - "https://webkit.org/blog/3709/using-the-system-font-in-web-content/" - ], - "syntax": "-apple-system-body | -apple-system-headline | -apple-system-subheadline | -apple-system-caption1 | -apple-system-caption2 | -apple-system-footnote | -apple-system-short-body | -apple-system-short-headline | -apple-system-short-subheadline | -apple-system-short-caption1 | -apple-system-short-footnote | -apple-system-tall-body" - }, - "-non-standard-color": { - "comment": "non standard colors", - "references": [ - "http://cssdot.ru/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_CSS/color-i305.html", - "https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Mozilla_Color_Preference_Extensions" - ], - "syntax": "-moz-ButtonDefault | -moz-ButtonHoverFace | -moz-ButtonHoverText | -moz-CellHighlight | -moz-CellHighlightText | -moz-Combobox | -moz-ComboboxText | -moz-Dialog | -moz-DialogText | -moz-dragtargetzone | -moz-EvenTreeRow | -moz-Field | -moz-FieldText | -moz-html-CellHighlight | -moz-html-CellHighlightText | -moz-mac-accentdarkestshadow | -moz-mac-accentdarkshadow | -moz-mac-accentface | -moz-mac-accentlightesthighlight | -moz-mac-accentlightshadow | -moz-mac-accentregularhighlight | -moz-mac-accentregularshadow | -moz-mac-chrome-active | -moz-mac-chrome-inactive | -moz-mac-focusring | -moz-mac-menuselect | -moz-mac-menushadow | -moz-mac-menutextselect | -moz-MenuHover | -moz-MenuHoverText | -moz-MenuBarText | -moz-MenuBarHoverText | -moz-nativehyperlinktext | -moz-OddTreeRow | -moz-win-communicationstext | -moz-win-mediatext | -moz-activehyperlinktext | -moz-default-background-color | -moz-default-color | -moz-hyperlinktext | -moz-visitedhyperlinktext | -webkit-activelink | -webkit-focus-ring-color | -webkit-link | -webkit-text" - }, - "-non-standard-image-rendering": { - "comment": "non-standard keywords http://phrogz.net/tmp/canvas_image_zoom.html", - "syntax": "optimize-contrast | -moz-crisp-edges | -o-crisp-edges | -webkit-optimize-contrast" - }, - "-non-standard-overflow": { - "comment": "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow", - "syntax": "-moz-scrollbars-none | -moz-scrollbars-horizontal | -moz-scrollbars-vertical | -moz-hidden-unscrollable" - }, - "-non-standard-width": { - "comment": "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width", - "syntax": "fill-available | min-intrinsic | intrinsic | -moz-available | -moz-fit-content | -moz-min-content | -moz-max-content | -webkit-min-content | -webkit-max-content" - }, - "-webkit-gradient()": { - "comment": "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/ - TODO: simplify when after match algorithm improvement ( [, point, radius | , point] -> [, radius]? , point )", - "syntax": "-webkit-gradient( <-webkit-gradient-type>, <-webkit-gradient-point> [, <-webkit-gradient-point> | , <-webkit-gradient-radius>, <-webkit-gradient-point> ] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )" - }, - "-webkit-gradient-color-stop": { - "comment": "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/", - "syntax": "from( <color> ) | color-stop( [ <number-zero-one> | <percentage> ] , <color> ) | to( <color> )" - }, - "-webkit-gradient-point": { - "comment": "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/", - "syntax": "[ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ]" - }, - "-webkit-gradient-radius": { - "comment": "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/", - "syntax": "<length> | <percentage>" - }, - "-webkit-gradient-type": { - "comment": "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/", - "syntax": "linear | radial" - }, - "-webkit-mask-box-repeat": { - "comment": "missed; https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-box-image", - "syntax": "repeat | stretch | round" - }, - "-webkit-mask-clip-style": { - "comment": "missed; there is no enough information about `-webkit-mask-clip` property, but looks like all those keywords are working", - "syntax": "border | border-box | padding | padding-box | content | content-box | text" - }, - "-ms-filter-function-list": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter", - "syntax": "<-ms-filter-function>+" - }, - "-ms-filter-function": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter", - "syntax": "<-ms-filter-function-progid> | <-ms-filter-function-legacy>" - }, - "-ms-filter-function-progid": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter", - "syntax": "'progid:' [ <ident-token> '.' ]* [ <ident-token> | <function-token> <any-value>? ) ]" - }, - "-ms-filter-function-legacy": { - "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter", - "syntax": "<ident-token> | <function-token> <any-value>? )" - }, - "-ms-filter": { - "syntax": "<string>" - }, - "age": { - "comment": "https://www.w3.org/TR/css3-speech/#voice-family", - "syntax": "child | young | old" - }, - "attr-name": { - "syntax": "<wq-name>" - }, - "attr-fallback": { - "syntax": "<any-value>" - }, - "bg-clip": { - "comment": "missed, https://drafts.csswg.org/css-backgrounds-4/#typedef-bg-clip", - "syntax": "<box> | border | text" - }, - "border-radius": { - "comment": "missed, https://drafts.csswg.org/css-backgrounds-3/#the-border-radius", - "syntax": "<length-percentage>{1,2}" - }, - "bottom": { - "comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect", - "syntax": "<length> | auto" - }, - "content-list": { - "comment": "added attr(), see https://github.com/csstree/csstree/issues/201", - "syntax": "[ <string> | contents | <image> | <counter> | <quote> | <target> | <leader()> | <attr()> ]+" - }, - "element()": { - "comment": "https://drafts.csswg.org/css-gcpm/#element-syntax & https://drafts.csswg.org/css-images-4/#element-notation", - "syntax": "element( <custom-ident> , [ first | start | last | first-except ]? ) | element( <id-selector> )" - }, - "generic-voice": { - "comment": "https://www.w3.org/TR/css3-speech/#voice-family", - "syntax": "[ <age>? <gender> <integer>? ]" - }, - "gender": { - "comment": "https://www.w3.org/TR/css3-speech/#voice-family", - "syntax": "male | female | neutral" - }, - "generic-family": { - "comment": "added -apple-system", - "references": [ - "https://webkit.org/blog/3709/using-the-system-font-in-web-content/" - ], - "syntax": "| -apple-system" - }, - "gradient": { - "comment": "added legacy syntaxes support", - "syntax": "| <-legacy-gradient>" - }, - "lab()": { - "comment": "missed; https://www.w3.org/TR/css-color-4/#specifying-lab-lch", - "syntax": "lab( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )" - }, - "lch()": { - "comment": "missed; https://www.w3.org/TR/css-color-4/#specifying-lab-lch", - "syntax": "lch( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )" - }, - "left": { - "comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect", - "syntax": "<length> | auto" - }, - "mask-image": { - "comment": "missed; https://drafts.fxtf.org/css-masking-1/#the-mask-image", - "syntax": "<mask-reference>#" - }, - "named-color": { - "comment": "added non standard color names", - "syntax": "| <-non-standard-color>" - }, - "paint": { - "comment": "used by SVG https://www.w3.org/TR/SVG/painting.html#SpecifyingPaint", - "syntax": "none | <color> | <url> [ none | <color> ]? | context-fill | context-stroke" - }, - "ratio": { - "comment": "missed, https://drafts.csswg.org/css-values-4/#ratio-value", - "syntax": "<number [0,∞]> [ / <number [0,∞]> ]?" - }, - "reversed-counter-name": { - "comment": "missed; https://drafts.csswg.org/css-lists/#typedef-reversed-counter-name", - "syntax": "reversed( <counter-name> )" - }, - "right": { - "comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect", - "syntax": "<length> | auto" - }, - "shape": { - "comment": "missed spaces in function body and add backwards compatible syntax", - "syntax": "rect( <top>, <right>, <bottom>, <left> ) | rect( <top> <right> <bottom> <left> )" - }, - "svg-length": { - "comment": "All coordinates and lengths in SVG can be specified with or without a unit identifier", - "references": [ - "https://www.w3.org/TR/SVG11/coords.html#Units" - ], - "syntax": "<percentage> | <length> | <number>" - }, - "svg-writing-mode": { - "comment": "SVG specific keywords (deprecated for CSS)", - "references": [ - "https://developer.mozilla.org/en/docs/Web/CSS/writing-mode", - "https://www.w3.org/TR/SVG/text.html#WritingModeProperty" - ], - "syntax": "lr-tb | rl-tb | tb-rl | lr | rl | tb" - }, - "top": { - "comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect", - "syntax": "<length> | auto" - }, - "track-group": { - "comment": "used by old grid-columns and grid-rows syntax v0", - "syntax": "'(' [ <string>* <track-minmax> <string>* ]+ ')' [ '[' <positive-integer> ']' ]? | <track-minmax>" - }, - "track-list-v0": { - "comment": "used by old grid-columns and grid-rows syntax v0", - "syntax": "[ <string>* <track-group> <string>* ]+ | none" - }, - "track-minmax": { - "comment": "used by old grid-columns and grid-rows syntax v0", - "syntax": "minmax( <track-breadth> , <track-breadth> ) | auto | <track-breadth> | fit-content" - }, - "x": { - "comment": "missed; not sure we should add it, but no others except `cursor` is using it so it's ok for now; https://drafts.csswg.org/css-ui-3/#cursor", - "syntax": "<number>" - }, - "y": { - "comment": "missed; not sure we should add it, but no others except `cursor` is using so it's ok for now; https://drafts.csswg.org/css-ui-3/#cursor", - "syntax": "<number>" - }, - "declaration": { - "comment": "missed, restored by https://drafts.csswg.org/css-syntax", - "syntax": "<ident-token> : <declaration-value>? [ '!' important ]?" - }, - "declaration-list": { - "comment": "missed, restored by https://drafts.csswg.org/css-syntax", - "syntax": "[ <declaration>? ';' ]* <declaration>?" - }, - "url": { - "comment": "https://drafts.csswg.org/css-values-4/#urls", - "syntax": "url( <string> <url-modifier>* ) | <url-token>" - }, - "url-modifier": { - "comment": "https://drafts.csswg.org/css-values-4/#typedef-url-modifier", - "syntax": "<ident> | <function-token> <any-value> )" - }, - "number-zero-one": { - "syntax": "<number [0,1]>" - }, - "number-one-or-greater": { - "syntax": "<number [1,∞]>" - }, - "positive-integer": { - "syntax": "<integer [0,∞]>" - }, - "-non-standard-display": { - "syntax": "-ms-inline-flexbox | -ms-grid | -ms-inline-grid | -webkit-flex | -webkit-inline-flex | -webkit-box | -webkit-inline-box | -moz-inline-stack | -moz-box | -moz-inline-box" - } - } -} diff --git a/node_modules/csso/node_modules/css-tree/dist/csstree.esm.js b/node_modules/csso/node_modules/css-tree/dist/csstree.esm.js deleted file mode 100644 index 75fff478..00000000 --- a/node_modules/csso/node_modules/css-tree/dist/csstree.esm.js +++ /dev/null @@ -1,11 +0,0 @@ -var ts=Object.create;var nr=Object.defineProperty;var rs=Object.getOwnPropertyDescriptor;var ns=Object.getOwnPropertyNames;var os=Object.getPrototypeOf,is=Object.prototype.hasOwnProperty;var Oe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),b=(e,t)=>{for(var r in t)nr(e,r,{get:t[r],enumerable:!0})},as=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ns(t))!is.call(e,o)&&o!==r&&nr(e,o,{get:()=>t[o],enumerable:!(n=rs(t,o))||n.enumerable});return e};var ss=(e,t,r)=>(r=e!=null?ts(os(e)):{},as(t||!e||!e.__esModule?nr(r,"default",{value:e,enumerable:!0}):r,e));var Zo=Oe(hr=>{var $o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");hr.encode=function(e){if(0<=e&&e<$o.length)return $o[e];throw new TypeError("Must be between 0 and 63: "+e)};hr.decode=function(e){var t=65,r=90,n=97,o=122,i=48,s=57,u=43,c=47,a=26,l=52;return t<=e&&e<=r?e-t:n<=e&&e<=o?e-n+a:i<=e&&e<=s?e-i+l:e==u?62:e==c?63:-1}});var ni=Oe(fr=>{var Jo=Zo(),mr=5,ei=1<<mr,ti=ei-1,ri=ei;function ys(e){return e<0?(-e<<1)+1:(e<<1)+0}function ks(e){var t=(e&1)===1,r=e>>1;return t?-r:r}fr.encode=function(t){var r="",n,o=ys(t);do n=o&ti,o>>>=mr,o>0&&(n|=ri),r+=Jo.encode(n);while(o>0);return r};fr.decode=function(t,r,n){var o=t.length,i=0,s=0,u,c;do{if(r>=o)throw new Error("Expected more digits in base 64 VLQ value.");if(c=Jo.decode(t.charCodeAt(r++)),c===-1)throw new Error("Invalid base64 digit: "+t.charAt(r-1));u=!!(c&ri),c&=ti,i=i+(c<<s),s+=mr}while(u);n.value=ks(i),n.rest=r}});var Lt=Oe(K=>{function ws(e,t,r){if(t in e)return e[t];if(arguments.length===3)return r;throw new Error('"'+t+'" is a required argument.')}K.getArg=ws;var oi=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,vs=/^data:.+\,.+$/;function ot(e){var t=e.match(oi);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}K.urlParse=ot;function Ue(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}K.urlGenerate=Ue;var Ss=32;function Cs(e){var t=[];return function(r){for(var n=0;n<t.length;n++)if(t[n].input===r){var o=t[0];return t[0]=t[n],t[n]=o,t[0].result}var i=e(r);return t.unshift({input:r,result:i}),t.length>Ss&&t.pop(),i}}var dr=Cs(function(t){var r=t,n=ot(t);if(n){if(!n.path)return t;r=n.path}for(var o=K.isAbsolute(r),i=[],s=0,u=0;;)if(s=u,u=r.indexOf("/",s),u===-1){i.push(r.slice(s));break}else for(i.push(r.slice(s,u));u<r.length&&r[u]==="/";)u++;for(var c,a=0,u=i.length-1;u>=0;u--)c=i[u],c==="."?i.splice(u,1):c===".."?a++:a>0&&(c===""?(i.splice(u+1,a),a=0):(i.splice(u,2),a--));return r=i.join("/"),r===""&&(r=o?"/":"."),n?(n.path=r,Ue(n)):r});K.normalize=dr;function ii(e,t){e===""&&(e="."),t===""&&(t=".");var r=ot(t),n=ot(e);if(n&&(e=n.path||"/"),r&&!r.scheme)return n&&(r.scheme=n.scheme),Ue(r);if(r||t.match(vs))return t;if(n&&!n.host&&!n.path)return n.host=t,Ue(n);var o=t.charAt(0)==="/"?t:dr(e.replace(/\/+$/,"")+"/"+t);return n?(n.path=o,Ue(n)):o}K.join=ii;K.isAbsolute=function(e){return e.charAt(0)==="/"||oi.test(e)};function As(e,t){e===""&&(e="."),e=e.replace(/\/$/,"");for(var r=0;t.indexOf(e+"/")!==0;){var n=e.lastIndexOf("/");if(n<0||(e=e.slice(0,n),e.match(/^([^\/]+:\/)?\/*$/)))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)}K.relative=As;var ai=function(){var e=Object.create(null);return!("__proto__"in e)}();function si(e){return e}function Ts(e){return li(e)?"$"+e:e}K.toSetString=ai?si:Ts;function Es(e){return li(e)?e.slice(1):e}K.fromSetString=ai?si:Es;function li(e){if(!e)return!1;var t=e.length;if(t<9||e.charCodeAt(t-1)!==95||e.charCodeAt(t-2)!==95||e.charCodeAt(t-3)!==111||e.charCodeAt(t-4)!==116||e.charCodeAt(t-5)!==111||e.charCodeAt(t-6)!==114||e.charCodeAt(t-7)!==112||e.charCodeAt(t-8)!==95||e.charCodeAt(t-9)!==95)return!1;for(var r=t-10;r>=0;r--)if(e.charCodeAt(r)!==36)return!1;return!0}function Ls(e,t,r){var n=be(e.source,t.source);return n!==0||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:be(e.name,t.name)}K.compareByOriginalPositions=Ls;function Ps(e,t,r){var n;return n=e.originalLine-t.originalLine,n!==0||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:be(e.name,t.name)}K.compareByOriginalPositionsNoSource=Ps;function Is(e,t,r){var n=e.generatedLine-t.generatedLine;return n!==0||(n=e.generatedColumn-t.generatedColumn,n!==0||r)||(n=be(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:be(e.name,t.name)}K.compareByGeneratedPositionsDeflated=Is;function Ds(e,t,r){var n=e.generatedColumn-t.generatedColumn;return n!==0||r||(n=be(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:be(e.name,t.name)}K.compareByGeneratedPositionsDeflatedNoLine=Ds;function be(e,t){return e===t?0:e===null?1:t===null?-1:e>t?1:-1}function Os(e,t){var r=e.generatedLine-t.generatedLine;return r!==0||(r=e.generatedColumn-t.generatedColumn,r!==0)||(r=be(e.source,t.source),r!==0)||(r=e.originalLine-t.originalLine,r!==0)||(r=e.originalColumn-t.originalColumn,r!==0)?r:be(e.name,t.name)}K.compareByGeneratedPositionsInflated=Os;function Ns(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}K.parseSourceMapInput=Ns;function zs(e,t,r){if(t=t||"",e&&(e[e.length-1]!=="/"&&t[0]!=="/"&&(e+="/"),t=e+t),r){var n=ot(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var o=n.path.lastIndexOf("/");o>=0&&(n.path=n.path.substring(0,o+1))}t=ii(Ue(n),t)}return dr(t)}K.computeSourceURL=zs});var ui=Oe(ci=>{var gr=Lt(),br=Object.prototype.hasOwnProperty,Le=typeof Map<"u";function xe(){this._array=[],this._set=Le?new Map:Object.create(null)}xe.fromArray=function(t,r){for(var n=new xe,o=0,i=t.length;o<i;o++)n.add(t[o],r);return n};xe.prototype.size=function(){return Le?this._set.size:Object.getOwnPropertyNames(this._set).length};xe.prototype.add=function(t,r){var n=Le?t:gr.toSetString(t),o=Le?this.has(t):br.call(this._set,n),i=this._array.length;(!o||r)&&this._array.push(t),o||(Le?this._set.set(t,i):this._set[n]=i)};xe.prototype.has=function(t){if(Le)return this._set.has(t);var r=gr.toSetString(t);return br.call(this._set,r)};xe.prototype.indexOf=function(t){if(Le){var r=this._set.get(t);if(r>=0)return r}else{var n=gr.toSetString(t);if(br.call(this._set,n))return this._set[n]}throw new Error('"'+t+'" is not in the set.')};xe.prototype.at=function(t){if(t>=0&&t<this._array.length)return this._array[t];throw new Error("No element indexed by "+t)};xe.prototype.toArray=function(){return this._array.slice()};ci.ArraySet=xe});var mi=Oe(hi=>{var pi=Lt();function Ms(e,t){var r=e.generatedLine,n=t.generatedLine,o=e.generatedColumn,i=t.generatedColumn;return n>r||n==r&&i>=o||pi.compareByGeneratedPositionsInflated(e,t)<=0}function Pt(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Pt.prototype.unsortedForEach=function(t,r){this._array.forEach(t,r)};Pt.prototype.add=function(t){Ms(this._last,t)?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))};Pt.prototype.toArray=function(){return this._sorted||(this._array.sort(pi.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};hi.MappingList=Pt});var di=Oe(fi=>{var it=ni(),H=Lt(),It=ui().ArraySet,Rs=mi().MappingList;function oe(e){e||(e={}),this._file=H.getArg(e,"file",null),this._sourceRoot=H.getArg(e,"sourceRoot",null),this._skipValidation=H.getArg(e,"skipValidation",!1),this._sources=new It,this._names=new It,this._mappings=new Rs,this._sourcesContents=null}oe.prototype._version=3;oe.fromSourceMap=function(t){var r=t.sourceRoot,n=new oe({file:t.file,sourceRoot:r});return t.eachMapping(function(o){var i={generated:{line:o.generatedLine,column:o.generatedColumn}};o.source!=null&&(i.source=o.source,r!=null&&(i.source=H.relative(r,i.source)),i.original={line:o.originalLine,column:o.originalColumn},o.name!=null&&(i.name=o.name)),n.addMapping(i)}),t.sources.forEach(function(o){var i=o;r!==null&&(i=H.relative(r,o)),n._sources.has(i)||n._sources.add(i);var s=t.sourceContentFor(o);s!=null&&n.setSourceContent(o,s)}),n};oe.prototype.addMapping=function(t){var r=H.getArg(t,"generated"),n=H.getArg(t,"original",null),o=H.getArg(t,"source",null),i=H.getArg(t,"name",null);this._skipValidation||this._validateMapping(r,n,o,i),o!=null&&(o=String(o),this._sources.has(o)||this._sources.add(o)),i!=null&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:o,name:i})};oe.prototype.setSourceContent=function(t,r){var n=t;this._sourceRoot!=null&&(n=H.relative(this._sourceRoot,n)),r!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[H.toSetString(n)]=r):this._sourcesContents&&(delete this._sourcesContents[H.toSetString(n)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};oe.prototype.applySourceMap=function(t,r,n){var o=r;if(r==null){if(t.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);o=t.file}var i=this._sourceRoot;i!=null&&(o=H.relative(i,o));var s=new It,u=new It;this._mappings.unsortedForEach(function(c){if(c.source===o&&c.originalLine!=null){var a=t.originalPositionFor({line:c.originalLine,column:c.originalColumn});a.source!=null&&(c.source=a.source,n!=null&&(c.source=H.join(n,c.source)),i!=null&&(c.source=H.relative(i,c.source)),c.originalLine=a.line,c.originalColumn=a.column,a.name!=null&&(c.name=a.name))}var l=c.source;l!=null&&!s.has(l)&&s.add(l);var p=c.name;p!=null&&!u.has(p)&&u.add(p)},this),this._sources=s,this._names=u,t.sources.forEach(function(c){var a=t.sourceContentFor(c);a!=null&&(n!=null&&(c=H.join(n,c)),i!=null&&(c=H.relative(i,c)),this.setSourceContent(c,a))},this)};oe.prototype._validateMapping=function(t,r,n,o){if(r&&typeof r.line!="number"&&typeof r.column!="number")throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if(!(t&&"line"in t&&"column"in t&&t.line>0&&t.column>=0&&!r&&!n&&!o)){if(t&&"line"in t&&"column"in t&&r&&"line"in r&&"column"in r&&t.line>0&&t.column>=0&&r.line>0&&r.column>=0&&n)return;throw new Error("Invalid mapping: "+JSON.stringify({generated:t,source:n,original:r,name:o}))}};oe.prototype._serializeMappings=function(){for(var t=0,r=1,n=0,o=0,i=0,s=0,u="",c,a,l,p,m=this._mappings.toArray(),f=0,P=m.length;f<P;f++){if(a=m[f],c="",a.generatedLine!==r)for(t=0;a.generatedLine!==r;)c+=";",r++;else if(f>0){if(!H.compareByGeneratedPositionsInflated(a,m[f-1]))continue;c+=","}c+=it.encode(a.generatedColumn-t),t=a.generatedColumn,a.source!=null&&(p=this._sources.indexOf(a.source),c+=it.encode(p-s),s=p,c+=it.encode(a.originalLine-1-o),o=a.originalLine-1,c+=it.encode(a.originalColumn-n),n=a.originalColumn,a.name!=null&&(l=this._names.indexOf(a.name),c+=it.encode(l-i),i=l)),u+=c}return u};oe.prototype._generateSourcesContent=function(t,r){return t.map(function(n){if(!this._sourcesContents)return null;r!=null&&(n=H.relative(r,n));var o=H.toSetString(n);return Object.prototype.hasOwnProperty.call(this._sourcesContents,o)?this._sourcesContents[o]:null},this)};oe.prototype.toJSON=function(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(t.file=this._file),this._sourceRoot!=null&&(t.sourceRoot=this._sourceRoot),this._sourcesContents&&(t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot)),t};oe.prototype.toString=function(){return JSON.stringify(this.toJSON())};fi.SourceMapGenerator=oe});var Ze={};b(Ze,{AtKeyword:()=>D,BadString:()=>Ae,BadUrl:()=>Y,CDC:()=>j,CDO:()=>ue,Colon:()=>O,Comma:()=>G,Comment:()=>E,Delim:()=>g,Dimension:()=>y,EOF:()=>$e,Function:()=>x,Hash:()=>v,Ident:()=>h,LeftCurlyBracket:()=>M,LeftParenthesis:()=>T,LeftSquareBracket:()=>U,Number:()=>d,Percentage:()=>A,RightCurlyBracket:()=>W,RightParenthesis:()=>w,RightSquareBracket:()=>V,Semicolon:()=>_,String:()=>q,Url:()=>F,WhiteSpace:()=>k});var $e=0,h=1,x=2,D=3,v=4,q=5,Ae=6,F=7,Y=8,g=9,d=10,A=11,y=12,k=13,ue=14,j=15,O=16,_=17,G=18,U=19,V=20,T=21,w=22,M=23,W=24,E=25;function B(e){return e>=48&&e<=57}function ee(e){return B(e)||e>=65&&e<=70||e>=97&&e<=102}function kt(e){return e>=65&&e<=90}function ls(e){return e>=97&&e<=122}function cs(e){return kt(e)||ls(e)}function us(e){return e>=128}function yt(e){return cs(e)||us(e)||e===95}function Ne(e){return yt(e)||B(e)||e===45}function ps(e){return e>=0&&e<=8||e===11||e>=14&&e<=31||e===127}function Je(e){return e===10||e===13||e===12}function pe(e){return Je(e)||e===32||e===9}function $(e,t){return!(e!==92||Je(t)||t===0)}function ze(e,t,r){return e===45?yt(t)||t===45||$(t,r):yt(e)?!0:e===92?$(e,t):!1}function wt(e,t,r){return e===43||e===45?B(t)?2:t===46&&B(r)?3:0:e===46?B(t)?2:0:B(e)?1:0}function vt(e){return e===65279||e===65534?1:0}var or=new Array(128),hs=128,et=130,ir=131,St=132,ar=133;for(let e=0;e<or.length;e++)or[e]=pe(e)&&et||B(e)&&ir||yt(e)&&St||ps(e)&&ar||e||hs;function Ct(e){return e<128?or[e]:St}function Me(e,t){return t<e.length?e.charCodeAt(t):0}function At(e,t,r){return r===13&&Me(e,t+1)===10?2:1}function de(e,t,r){let n=e.charCodeAt(t);return kt(n)&&(n=n|32),n===r}function ge(e,t,r,n){if(r-t!==n.length||t<0||r>e.length)return!1;for(let o=t;o<r;o++){let i=n.charCodeAt(o-t),s=e.charCodeAt(o);if(kt(s)&&(s=s|32),s!==i)return!1}return!0}function _o(e,t){for(;t>=0&&pe(e.charCodeAt(t));t--);return t+1}function tt(e,t){for(;t<e.length&&pe(e.charCodeAt(t));t++);return t}function sr(e,t){for(;t<e.length&&B(e.charCodeAt(t));t++);return t}function se(e,t){if(t+=2,ee(Me(e,t-1))){for(let n=Math.min(e.length,t+5);t<n&&ee(Me(e,t));t++);let r=Me(e,t);pe(r)&&(t+=At(e,t,r))}return t}function rt(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(!Ne(r)){if($(r,Me(e,t+1))){t=se(e,t)-1;continue}break}}return t}function Te(e,t){let r=e.charCodeAt(t);if((r===43||r===45)&&(r=e.charCodeAt(t+=1)),B(r)&&(t=sr(e,t+1),r=e.charCodeAt(t)),r===46&&B(e.charCodeAt(t+1))&&(t+=2,t=sr(e,t)),de(e,t,101)){let n=0;r=e.charCodeAt(t+1),(r===45||r===43)&&(n=1,r=e.charCodeAt(t+2)),B(r)&&(t=sr(e,t+1+n+1))}return t}function Tt(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(r===41){t++;break}$(r,Me(e,t+1))&&(t=se(e,t))}return t}function Re(e){if(e.length===1&&!ee(e.charCodeAt(0)))return e[0];let t=parseInt(e,16);return(t===0||t>=55296&&t<=57343||t>1114111)&&(t=65533),String.fromCodePoint(t)}var Fe=["EOF-token","ident-token","function-token","at-keyword-token","hash-token","string-token","bad-string-token","url-token","bad-url-token","delim-token","number-token","percentage-token","dimension-token","whitespace-token","CDO-token","CDC-token","colon-token","semicolon-token","comma-token","[-token","]-token","(-token",")-token","{-token","}-token"];function Be(e=null,t){return e===null||e.length<t?new Uint32Array(Math.max(t+1024,16384)):e}var Uo=10,ms=12,jo=13;function Ho(e){let t=e.source,r=t.length,n=t.length>0?vt(t.charCodeAt(0)):0,o=Be(e.lines,r),i=Be(e.columns,r),s=e.startLine,u=e.startColumn;for(let c=n;c<r;c++){let a=t.charCodeAt(c);o[c]=s,i[c]=u++,(a===Uo||a===jo||a===ms)&&(a===jo&&c+1<r&&t.charCodeAt(c+1)===Uo&&(c++,o[c]=s,i[c]=u),s++,u=1)}o[r]=s,i[r]=u,e.lines=o,e.columns=i,e.computed=!0}var Et=class{constructor(){this.lines=null,this.columns=null,this.computed=!1}setSource(t,r=0,n=1,o=1){this.source=t,this.startOffset=r,this.startLine=n,this.startColumn=o,this.computed=!1}getLocation(t,r){return this.computed||Ho(this),{source:r,offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]}}getLocationRange(t,r,n){return this.computed||Ho(this),{source:n,start:{offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]},end:{offset:this.startOffset+r,line:this.lines[r],column:this.columns[r]}}}};var ne=16777215,we=24,fs=new Map([[2,22],[21,22],[19,20],[23,24]]),nt=class{constructor(t,r){this.setSource(t,r)}reset(){this.eof=!1,this.tokenIndex=-1,this.tokenType=0,this.tokenStart=this.firstCharOffset,this.tokenEnd=this.firstCharOffset}setSource(t="",r=()=>{}){t=String(t||"");let n=t.length,o=Be(this.offsetAndType,t.length+1),i=Be(this.balance,t.length+1),s=0,u=0,c=0,a=-1;for(this.offsetAndType=null,this.balance=null,r(t,(l,p,m)=>{switch(l){default:i[s]=n;break;case u:{let f=c≠for(c=i[f],u=c>>we,i[s]=f,i[f++]=s;f<s;f++)i[f]===n&&(i[f]=s);break}case 21:case 2:case 19:case 23:i[s]=c,u=fs.get(l),c=u<<we|s;break}o[s++]=l<<we|m,a===-1&&(a=p)}),o[s]=0<<we|n,i[s]=n,i[n]=n;c!==0;){let l=c≠c=i[l],i[l]=n}this.source=t,this.firstCharOffset=a===-1?0:a,this.tokenCount=s,this.offsetAndType=o,this.balance=i,this.reset(),this.next()}lookupType(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t]>>we:0}lookupOffset(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t-1]&ne:this.source.length}lookupValue(t,r){return t+=this.tokenIndex,t<this.tokenCount?ge(this.source,this.offsetAndType[t-1]&ne,this.offsetAndType[t]&ne,r):!1}getTokenStart(t){return t===this.tokenIndex?this.tokenStart:t>0?t<this.tokenCount?this.offsetAndType[t-1]&ne:this.offsetAndType[this.tokenCount]&ne:this.firstCharOffset}substrToCursor(t){return this.source.substring(t,this.tokenStart)}isBalanceEdge(t){return this.balance[this.tokenIndex]<t}isDelim(t,r){return r?this.lookupType(r)===9&&this.source.charCodeAt(this.lookupOffset(r))===t:this.tokenType===9&&this.source.charCodeAt(this.tokenStart)===t}skip(t){let r=this.tokenIndex+t;r<this.tokenCount?(this.tokenIndex=r,this.tokenStart=this.offsetAndType[r-1]&ne,r=this.offsetAndType[r],this.tokenType=r>>we,this.tokenEnd=r&ne):(this.tokenIndex=this.tokenCount,this.next())}next(){let t=this.tokenIndex+1;t<this.tokenCount?(this.tokenIndex=t,this.tokenStart=this.tokenEnd,t=this.offsetAndType[t],this.tokenType=t>>we,this.tokenEnd=t&ne):(this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=0,this.tokenStart=this.tokenEnd=this.source.length)}skipSC(){for(;this.tokenType===13||this.tokenType===25;)this.next()}skipUntilBalanced(t,r){let n=t,o,i;e:for(;n<this.tokenCount;n++){if(o=this.balance[n],o<t)break e;switch(i=n>0?this.offsetAndType[n-1]&ne:this.firstCharOffset,r(this.source.charCodeAt(i))){case 1:break e;case 2:n++;break e;default:this.balance[o]===n&&(n=o)}}this.skip(n-this.tokenIndex)}forEachToken(t){for(let r=0,n=this.firstCharOffset;r<this.tokenCount;r++){let o=n,i=this.offsetAndType[r],s=i&ne,u=i>>we;n=s,t(u,o,s,r)}}dump(){let t=new Array(this.tokenCount);return this.forEachToken((r,n,o,i)=>{t[i]={idx:i,type:Fe[r],chunk:this.source.substring(n,o),balance:this.balance[i]}}),t}};function ve(e,t){function r(p){return p<u?e.charCodeAt(p):0}function n(){if(a=Te(e,a),ze(r(a),r(a+1),r(a+2))){l=12,a=rt(e,a);return}if(r(a)===37){l=11,a++;return}l=10}function o(){let p=a;if(a=rt(e,a),ge(e,p,a,"url")&&r(a)===40){if(a=tt(e,a+1),r(a)===34||r(a)===39){l=2,a=p+4;return}s();return}if(r(a)===40){l=2,a++;return}l=1}function i(p){for(p||(p=r(a++)),l=5;a<e.length;a++){let m=e.charCodeAt(a);switch(Ct(m)){case p:a++;return;case et:if(Je(m)){a+=At(e,a,m),l=6;return}break;case 92:if(a===e.length-1)break;let f=r(a+1);Je(f)?a+=At(e,a+1,f):$(m,f)&&(a=se(e,a)-1);break}}}function s(){for(l=7,a=tt(e,a);a<e.length;a++){let p=e.charCodeAt(a);switch(Ct(p)){case 41:a++;return;case et:if(a=tt(e,a),r(a)===41||a>=e.length){a<e.length&&a++;return}a=Tt(e,a),l=8;return;case 34:case 39:case 40:case ar:a=Tt(e,a),l=8;return;case 92:if($(p,r(a+1))){a=se(e,a)-1;break}a=Tt(e,a),l=8;return}}}e=String(e||"");let u=e.length,c=vt(r(0)),a=c,l;for(;a<u;){let p=e.charCodeAt(a);switch(Ct(p)){case et:l=13,a=tt(e,a+1);break;case 34:i();break;case 35:Ne(r(a+1))||$(r(a+1),r(a+2))?(l=4,a=rt(e,a+1)):(l=9,a++);break;case 39:i();break;case 40:l=21,a++;break;case 41:l=22,a++;break;case 43:wt(p,r(a+1),r(a+2))?n():(l=9,a++);break;case 44:l=18,a++;break;case 45:wt(p,r(a+1),r(a+2))?n():r(a+1)===45&&r(a+2)===62?(l=15,a=a+3):ze(p,r(a+1),r(a+2))?o():(l=9,a++);break;case 46:wt(p,r(a+1),r(a+2))?n():(l=9,a++);break;case 47:r(a+1)===42?(l=25,a=e.indexOf("*/",a+2),a=a===-1?e.length:a+2):(l=9,a++);break;case 58:l=16,a++;break;case 59:l=17,a++;break;case 60:r(a+1)===33&&r(a+2)===45&&r(a+3)===45?(l=14,a=a+4):(l=9,a++);break;case 64:ze(r(a+1),r(a+2),r(a+3))?(l=3,a=rt(e,a+1)):(l=9,a++);break;case 91:l=19,a++;break;case 92:$(p,r(a+1))?o():(l=9,a++);break;case 93:l=20,a++;break;case 123:l=23,a++;break;case 125:l=24,a++;break;case ir:n();break;case St:o();break;default:l=9,a++}t(l,c,c=a)}}var _e=null,I=class{static createItem(t){return{prev:null,next:null,data:t}}constructor(){this.head=null,this.tail=null,this.cursor=null}createItem(t){return I.createItem(t)}allocateCursor(t,r){let n;return _e!==null?(n=_e,_e=_e.cursor,n.prev=t,n.next=r,n.cursor=this.cursor):n={prev:t,next:r,cursor:this.cursor},this.cursor=n,n}releaseCursor(){let{cursor:t}=this;this.cursor=t.cursor,t.prev=null,t.next=null,t.cursor=_e,_e=t}updateCursors(t,r,n,o){let{cursor:i}=this;for(;i!==null;)i.prev===t&&(i.prev=r),i.next===n&&(i.next=o),i=i.cursor}*[Symbol.iterator](){for(let t=this.head;t!==null;t=t.next)yield t.data}get size(){let t=0;for(let r=this.head;r!==null;r=r.next)t++;return t}get isEmpty(){return this.head===null}get first(){return this.head&&this.head.data}get last(){return this.tail&&this.tail.data}fromArray(t){let r=null;this.head=null;for(let n of t){let o=I.createItem(n);r!==null?r.next=o:this.head=o,o.prev=r,r=o}return this.tail=r,this}toArray(){return[...this]}toJSON(){return[...this]}forEach(t,r=this){let n=this.allocateCursor(null,this.head);for(;n.next!==null;){let o=n.next;n.next=o.next,t.call(r,o.data,o,this)}this.releaseCursor()}forEachRight(t,r=this){let n=this.allocateCursor(this.tail,null);for(;n.prev!==null;){let o=n.prev;n.prev=o.prev,t.call(r,o.data,o,this)}this.releaseCursor()}reduce(t,r,n=this){let o=this.allocateCursor(null,this.head),i=r,s;for(;o.next!==null;)s=o.next,o.next=s.next,i=t.call(n,i,s.data,s,this);return this.releaseCursor(),i}reduceRight(t,r,n=this){let o=this.allocateCursor(this.tail,null),i=r,s;for(;o.prev!==null;)s=o.prev,o.prev=s.prev,i=t.call(n,i,s.data,s,this);return this.releaseCursor(),i}some(t,r=this){for(let n=this.head;n!==null;n=n.next)if(t.call(r,n.data,n,this))return!0;return!1}map(t,r=this){let n=new I;for(let o=this.head;o!==null;o=o.next)n.appendData(t.call(r,o.data,o,this));return n}filter(t,r=this){let n=new I;for(let o=this.head;o!==null;o=o.next)t.call(r,o.data,o,this)&&n.appendData(o.data);return n}nextUntil(t,r,n=this){if(t===null)return;let o=this.allocateCursor(null,t);for(;o.next!==null;){let i=o.next;if(o.next=i.next,r.call(n,i.data,i,this))break}this.releaseCursor()}prevUntil(t,r,n=this){if(t===null)return;let o=this.allocateCursor(t,null);for(;o.prev!==null;){let i=o.prev;if(o.prev=i.prev,r.call(n,i.data,i,this))break}this.releaseCursor()}clear(){this.head=null,this.tail=null}copy(){let t=new I;for(let r of this)t.appendData(r);return t}prepend(t){return this.updateCursors(null,t,this.head,t),this.head!==null?(this.head.prev=t,t.next=this.head):this.tail=t,this.head=t,this}prependData(t){return this.prepend(I.createItem(t))}append(t){return this.insert(t)}appendData(t){return this.insert(I.createItem(t))}insert(t,r=null){if(r!==null)if(this.updateCursors(r.prev,t,r,t),r.prev===null){if(this.head!==r)throw new Error("before doesn't belong to list");this.head=t,r.prev=t,t.next=r,this.updateCursors(null,t)}else r.prev.next=t,t.prev=r.prev,r.prev=t,t.next=r;else this.updateCursors(this.tail,t,null,t),this.tail!==null?(this.tail.next=t,t.prev=this.tail):this.head=t,this.tail=t;return this}insertData(t,r){return this.insert(I.createItem(t),r)}remove(t){if(this.updateCursors(t,t.prev,t,t.next),t.prev!==null)t.prev.next=t.next;else{if(this.head!==t)throw new Error("item doesn't belong to list");this.head=t.next}if(t.next!==null)t.next.prev=t.prev;else{if(this.tail!==t)throw new Error("item doesn't belong to list");this.tail=t.prev}return t.prev=null,t.next=null,t}push(t){this.insert(I.createItem(t))}pop(){return this.tail!==null?this.remove(this.tail):null}unshift(t){this.prepend(I.createItem(t))}shift(){return this.head!==null?this.remove(this.head):null}prependList(t){return this.insertList(t,this.head)}appendList(t){return this.insertList(t)}insertList(t,r){return t.head===null?this:(r!=null?(this.updateCursors(r.prev,t.tail,r,t.head),r.prev!==null?(r.prev.next=t.head,t.head.prev=r.prev):this.head=t.head,r.prev=t.tail,t.tail.next=r):(this.updateCursors(this.tail,t.tail,null,t.head),this.tail!==null?(this.tail.next=t.head,t.head.prev=this.tail):this.head=t.head,this.tail=t.tail),t.head=null,t.tail=null,this)}replace(t,r){"head"in r?this.insertList(r,t):this.insert(r,t),this.remove(t)}};function Ee(e,t){let r=Object.create(SyntaxError.prototype),n=new Error;return Object.assign(r,{name:e,message:t,get stack(){return(n.stack||"").replace(/^(.+\n){1,3}/,`${e}: ${t} -`)}})}var lr=100,qo=60,Wo=" ";function Yo({source:e,line:t,column:r},n){function o(l,p){return i.slice(l,p).map((m,f)=>String(l+f+1).padStart(c)+" |"+m).join(` -`)}let i=e.split(/\r\n?|\n|\f/),s=Math.max(1,t-n)-1,u=Math.min(t+n,i.length+1),c=Math.max(4,String(u).length)+1,a=0;r+=(Wo.length-1)*(i[t-1].substr(0,r-1).match(/\t/g)||[]).length,r>lr&&(a=r-qo+3,r=qo-2);for(let l=s;l<=u;l++)l>=0&&l<i.length&&(i[l]=i[l].replace(/\t/g,Wo),i[l]=(a>0&&i[l].length>a?"\u2026":"")+i[l].substr(a,lr-2)+(i[l].length>a+lr-1?"\u2026":""));return[o(s,t),new Array(r+c+2).join("-")+"^",o(t,u)].filter(Boolean).join(` -`)}function cr(e,t,r,n,o){return Object.assign(Ee("SyntaxError",e),{source:t,offset:r,line:n,column:o,sourceFragment(s){return Yo({source:t,line:n,column:o},isNaN(s)?0:s)},get formattedMessage(){return`Parse error: ${e} -`+Yo({source:t,line:n,column:o},2)}})}function Go(e){let t=this.createList(),r=!1,n={recognizer:e};for(;!this.eof;){switch(this.tokenType){case 25:this.next();continue;case 13:r=!0,this.next();continue}let o=e.getNode.call(this,n);if(o===void 0)break;r&&(e.onWhiteSpace&&e.onWhiteSpace.call(this,o,t,n),r=!1),t.push(o)}return r&&e.onWhiteSpace&&e.onWhiteSpace.call(this,null,t,n),t}var Vo=()=>{},ds=33,gs=35,ur=59,Ko=123,Qo=0;function bs(e){return function(){return this[e]()}}function pr(e){let t=Object.create(null);for(let r in e){let n=e[r],o=n.parse||n;o&&(t[r]=o)}return t}function xs(e){let t={context:Object.create(null),scope:Object.assign(Object.create(null),e.scope),atrule:pr(e.atrule),pseudo:pr(e.pseudo),node:pr(e.node)};for(let r in e.parseContext)switch(typeof e.parseContext[r]){case"function":t.context[r]=e.parseContext[r];break;case"string":t.context[r]=bs(e.parseContext[r]);break}return{config:t,...t,...t.node}}function Xo(e){let t="",r="<unknown>",n=!1,o=Vo,i=!1,s=new Et,u=Object.assign(new nt,xs(e||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:Go,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket(a){return a===Ko?1:0},consumeUntilLeftCurlyBracketOrSemicolon(a){return a===Ko||a===ur?1:0},consumeUntilExclamationMarkOrSemicolon(a){return a===ds||a===ur?1:0},consumeUntilSemicolonIncluded(a){return a===ur?2:0},createList(){return new I},createSingleNodeList(a){return new I().appendData(a)},getFirstListNode(a){return a&&a.first},getLastListNode(a){return a&&a.last},parseWithFallback(a,l){let p=this.tokenIndex;try{return a.call(this)}catch(m){if(i)throw m;let f=l.call(this,p);return i=!0,o(m,f),i=!1,f}},lookupNonWSType(a){let l;do if(l=this.lookupType(a++),l!==13)return l;while(l!==Qo);return Qo},charCodeAt(a){return a>=0&&a<t.length?t.charCodeAt(a):0},substring(a,l){return t.substring(a,l)},substrToCursor(a){return this.source.substring(a,this.tokenStart)},cmpChar(a,l){return de(t,a,l)},cmpStr(a,l,p){return ge(t,a,l,p)},consume(a){let l=this.tokenStart;return this.eat(a),this.substrToCursor(l)},consumeFunctionName(){let a=t.substring(this.tokenStart,this.tokenEnd-1);return this.eat(2),a},consumeNumber(a){let l=t.substring(this.tokenStart,Te(t,this.tokenStart));return this.eat(a),l},eat(a){if(this.tokenType!==a){let l=Fe[a].slice(0,-6).replace(/-/g," ").replace(/^./,f=>f.toUpperCase()),p=`${/[[\](){}]/.test(l)?`"${l}"`:l} is expected`,m=this.tokenStart;switch(a){case 1:this.tokenType===2||this.tokenType===7?(m=this.tokenEnd-1,p="Identifier is expected but function found"):p="Identifier is expected";break;case 4:this.isDelim(gs)&&(this.next(),m++,p="Name is expected");break;case 11:this.tokenType===10&&(m=this.tokenEnd,p="Percent sign is expected");break}this.error(p,m)}this.next()},eatIdent(a){(this.tokenType!==1||this.lookupValue(0,a)===!1)&&this.error(`Identifier "${a}" is expected`),this.next()},eatDelim(a){this.isDelim(a)||this.error(`Delim "${String.fromCharCode(a)}" is expected`),this.next()},getLocation(a,l){return n?s.getLocationRange(a,l,r):null},getLocationFromList(a){if(n){let l=this.getFirstListNode(a),p=this.getLastListNode(a);return s.getLocationRange(l!==null?l.loc.start.offset-s.startOffset:this.tokenStart,p!==null?p.loc.end.offset-s.startOffset:this.tokenStart,r)}return null},error(a,l){let p=typeof l<"u"&&l<t.length?s.getLocation(l):this.eof?s.getLocation(_o(t,t.length-1)):s.getLocation(this.tokenStart);throw new cr(a||"Unexpected input",t,p.offset,p.line,p.column)}});return Object.assign(function(a,l){t=a,l=l||{},u.setSource(t,ve),s.setSource(t,l.offset,l.line,l.column),r=l.filename||"<unknown>",n=Boolean(l.positions),o=typeof l.onParseError=="function"?l.onParseError:Vo,i=!1,u.parseAtrulePrelude="parseAtrulePrelude"in l?Boolean(l.parseAtrulePrelude):!0,u.parseRulePrelude="parseRulePrelude"in l?Boolean(l.parseRulePrelude):!0,u.parseValue="parseValue"in l?Boolean(l.parseValue):!0,u.parseCustomProperty="parseCustomProperty"in l?Boolean(l.parseCustomProperty):!1;let{context:p="default",onComment:m}=l;if(!(p in u.context))throw new Error("Unknown context `"+p+"`");typeof m=="function"&&u.forEachToken((P,te,X)=>{if(P===25){let S=u.getLocation(te,X),R=ge(t,X-2,X,"*/")?t.slice(te+2,X-2):t.slice(te+2,X);m(R,S)}});let f=u.context[p].call(u,l);return u.eof||u.error(),f},{SyntaxError:cr,config:u.config})}var bi=ss(di(),1),gi=new Set(["Atrule","Selector","Declaration"]);function xi(e){let t=new bi.SourceMapGenerator,r={line:1,column:0},n={line:0,column:0},o={line:1,column:0},i={generated:o},s=1,u=0,c=!1,a=e.node;e.node=function(m){if(m.loc&&m.loc.start&&gi.has(m.type)){let f=m.loc.start.line,P=m.loc.start.column-1;(n.line!==f||n.column!==P)&&(n.line=f,n.column=P,r.line=s,r.column=u,c&&(c=!1,(r.line!==o.line||r.column!==o.column)&&t.addMapping(i)),c=!0,t.addMapping({source:m.loc.source,original:n,generated:r}))}a.call(this,m),c&&gi.has(m.type)&&(o.line=s,o.column=u)};let l=e.emit;e.emit=function(m,f,P){for(let te=0;te<m.length;te++)m.charCodeAt(te)===10?(s++,u=0):u++;l(m,f,P)};let p=e.result;return e.result=function(){return c&&t.addMapping(i),{css:p(),map:t}},e}var Dt={};b(Dt,{safe:()=>yr,spec:()=>Us});var Fs=43,Bs=45,xr=(e,t)=>{if(e===9&&(e=t),typeof e=="string"){let r=e.charCodeAt(0);return r>127?32768:r<<8}return e},yi=[[1,1],[1,2],[1,7],[1,8],[1,"-"],[1,10],[1,11],[1,12],[1,15],[1,21],[3,1],[3,2],[3,7],[3,8],[3,"-"],[3,10],[3,11],[3,12],[3,15],[4,1],[4,2],[4,7],[4,8],[4,"-"],[4,10],[4,11],[4,12],[4,15],[12,1],[12,2],[12,7],[12,8],[12,"-"],[12,10],[12,11],[12,12],[12,15],["#",1],["#",2],["#",7],["#",8],["#","-"],["#",10],["#",11],["#",12],["#",15],["-",1],["-",2],["-",7],["-",8],["-","-"],["-",10],["-",11],["-",12],["-",15],[10,1],[10,2],[10,7],[10,8],[10,10],[10,11],[10,12],[10,"%"],[10,15],["@",1],["@",2],["@",7],["@",8],["@","-"],["@",15],[".",10],[".",11],[".",12],["+",10],["+",11],["+",12],["/","*"]],_s=yi.concat([[1,4],[12,4],[4,4],[3,21],[3,5],[3,16],[11,11],[11,12],[11,2],[11,"-"],[22,1],[22,2],[22,11],[22,12],[22,4],[22,"-"]]);function ki(e){let t=new Set(e.map(([r,n])=>xr(r)<<16|xr(n)));return function(r,n,o){let i=xr(n,o),s=o.charCodeAt(0);return(s===Bs&&n!==1&&n!==2&&n!==15||s===Fs?t.has(r<<16|s<<8):t.has(r<<16|i))&&this.emit(" ",13,!0),i}}var Us=ki(yi),yr=ki(_s);var js=92;function Hs(e,t){if(typeof t=="function"){let r=null;e.children.forEach(n=>{r!==null&&t.call(this,r),this.node(n),r=n});return}e.children.forEach(this.node,this)}function qs(e){ve(e,(t,r,n)=>{this.token(t,e.slice(r,n))})}function wi(e){let t=new Map;for(let r in e.node){let n=e.node[r];typeof(n.generate||n)=="function"&&t.set(r,n.generate||n)}return function(r,n){let o="",i=0,s={node(c){if(t.has(c.type))t.get(c.type).call(u,c);else throw new Error("Unknown node type: "+c.type)},tokenBefore:yr,token(c,a){i=this.tokenBefore(i,c,a),this.emit(a,c,!1),c===9&&a.charCodeAt(0)===js&&this.emit(` -`,13,!0)},emit(c){o+=c},result(){return o}};n&&(typeof n.decorator=="function"&&(s=n.decorator(s)),n.sourceMap&&(s=xi(s)),n.mode in Dt&&(s.tokenBefore=Dt[n.mode]));let u={node:c=>s.node(c),children:Hs,token:(c,a)=>s.token(c,a),tokenize:qs};return s.node(r),s.result()}}function vi(e){return{fromPlainObject(t){return e(t,{enter(r){r.children&&!(r.children instanceof I)&&(r.children=new I().fromArray(r.children))}}),t},toPlainObject(t){return e(t,{leave(r){r.children&&r.children instanceof I&&(r.children=r.children.toArray())}}),t}}}var{hasOwnProperty:kr}=Object.prototype,at=function(){};function Si(e){return typeof e=="function"?e:at}function Ci(e,t){return function(r,n,o){r.type===t&&e.call(this,r,n,o)}}function Ws(e,t){let r=t.structure,n=[];for(let o in r){if(kr.call(r,o)===!1)continue;let i=r[o],s={name:o,type:!1,nullable:!1};Array.isArray(i)||(i=[i]);for(let u of i)u===null?s.nullable=!0:typeof u=="string"?s.type="node":Array.isArray(u)&&(s.type="list");s.type&&n.push(s)}return n.length?{context:t.walkContext,fields:n}:null}function Ys(e){let t={};for(let r in e.node)if(kr.call(e.node,r)){let n=e.node[r];if(!n.structure)throw new Error("Missed `structure` field in `"+r+"` node type definition");t[r]=Ws(r,n)}return t}function Ai(e,t){let r=e.fields.slice(),n=e.context,o=typeof n=="string";return t&&r.reverse(),function(i,s,u,c){let a;o&&(a=s[n],s[n]=i);for(let l of r){let p=i[l.name];if(!l.nullable||p){if(l.type==="list"){if(t?p.reduceRight(c,!1):p.reduce(c,!1))return!0}else if(u(p))return!0}}o&&(s[n]=a)}}function Ti({StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}){return{Atrule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Rule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Declaration:{StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}}}function Ei(e){let t=Ys(e),r={},n={},o=Symbol("break-walk"),i=Symbol("skip-node");for(let a in t)kr.call(t,a)&&t[a]!==null&&(r[a]=Ai(t[a],!1),n[a]=Ai(t[a],!0));let s=Ti(r),u=Ti(n),c=function(a,l){function p(S,R,ke){let z=m.call(X,S,R,ke);return z===o?!0:z===i?!1:!!(P.hasOwnProperty(S.type)&&P[S.type](S,X,p,te)||f.call(X,S,R,ke)===o)}let m=at,f=at,P=r,te=(S,R,ke,z)=>S||p(R,ke,z),X={break:o,skip:i,root:a,stylesheet:null,atrule:null,atrulePrelude:null,rule:null,selector:null,block:null,declaration:null,function:null};if(typeof l=="function")m=l;else if(l&&(m=Si(l.enter),f=Si(l.leave),l.reverse&&(P=n),l.visit)){if(s.hasOwnProperty(l.visit))P=l.reverse?u[l.visit]:s[l.visit];else if(!t.hasOwnProperty(l.visit))throw new Error("Bad value `"+l.visit+"` for `visit` option (should be: "+Object.keys(t).sort().join(", ")+")");m=Ci(m,l.visit),f=Ci(f,l.visit)}if(m===at&&f===at)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");p(a)};return c.break=o,c.skip=i,c.find=function(a,l){let p=null;return c(a,function(m,f,P){if(l.call(this,m,f,P))return p=m,o}),p},c.findLast=function(a,l){let p=null;return c(a,{reverse:!0,enter(m,f,P){if(l.call(this,m,f,P))return p=m,o}}),p},c.findAll=function(a,l){let p=[];return c(a,function(m,f,P){l.call(this,m,f,P)&&p.push(m)}),p},c}function Gs(e){return e}function Vs(e){let{min:t,max:r,comma:n}=e;return t===0&&r===0?n?"#?":"*":t===0&&r===1?"?":t===1&&r===0?n?"#":"+":t===1&&r===1?"":(n?"#":"")+(t===r?"{"+t+"}":"{"+t+","+(r!==0?r:"")+"}")}function Ks(e){switch(e.type){case"Range":return" ["+(e.min===null?"-\u221E":e.min)+","+(e.max===null?"\u221E":e.max)+"]";default:throw new Error("Unknown node type `"+e.type+"`")}}function Qs(e,t,r,n){let o=e.combinator===" "||n?e.combinator:" "+e.combinator+" ",i=e.terms.map(s=>wr(s,t,r,n)).join(o);return e.explicit||r?(n||i[0]===","?"[":"[ ")+i+(n?"]":" ]"):i}function wr(e,t,r,n){let o;switch(e.type){case"Group":o=Qs(e,t,r,n)+(e.disallowEmpty?"!":"");break;case"Multiplier":return wr(e.term,t,r,n)+t(Vs(e),e);case"Type":o="<"+e.name+(e.opts?t(Ks(e.opts),e.opts):"")+">";break;case"Property":o="<'"+e.name+"'>";break;case"Keyword":o=e.name;break;case"AtKeyword":o="@"+e.name;break;case"Function":o=e.name+"(";break;case"String":case"Token":o=e.value;break;case"Comma":o=",";break;default:throw new Error("Unknown node type `"+e.type+"`")}return t(o,e)}function Pe(e,t){let r=Gs,n=!1,o=!1;return typeof t=="function"?r=t:t&&(n=Boolean(t.forceBraces),o=Boolean(t.compact),typeof t.decorate=="function"&&(r=t.decorate)),wr(e,r,n,o)}var Li={offset:0,line:1,column:1};function Xs(e,t){let r=e.tokens,n=e.longestMatch,o=n<r.length&&r[n].node||null,i=o!==t?o:null,s=0,u=0,c=0,a="",l,p;for(let m=0;m<r.length;m++){let f=r[m].value;m===n&&(u=f.length,s=a.length),i!==null&&r[m].node===i&&(m<=n?c++:c=0),a+=f}return n===r.length||c>1?(l=Ot(i||t,"end")||st(Li,a),p=st(l)):(l=Ot(i,"start")||st(Ot(t,"start")||Li,a.slice(0,s)),p=Ot(i,"end")||st(l,a.substr(s,u))),{css:a,mismatchOffset:s,mismatchLength:u,start:l,end:p}}function Ot(e,t){let r=e&&e.loc&&e.loc[t];return r?"line"in r?st(r):r:null}function st({offset:e,line:t,column:r},n){let o={offset:e,line:t,column:r};if(n){let i=n.split(/\n|\r\n?|\f/);o.offset+=n.length,o.line+=i.length-1,o.column=i.length===1?o.column+n.length:i.pop().length+1}return o}var je=function(e,t){let r=Ee("SyntaxReferenceError",e+(t?" `"+t+"`":""));return r.reference=t,r},Pi=function(e,t,r,n){let o=Ee("SyntaxMatchError",e),{css:i,mismatchOffset:s,mismatchLength:u,start:c,end:a}=Xs(n,r);return o.rawMessage=e,o.syntax=t?Pe(t):"<generic>",o.css=i,o.mismatchOffset=s,o.mismatchLength=u,o.message=e+` - syntax: `+o.syntax+` - value: `+(i||"<empty string>")+` - --------`+new Array(o.mismatchOffset+1).join("-")+"^",Object.assign(o,c),o.loc={source:r&&r.loc&&r.loc.source||"<unknown>",start:c,end:a},o};var Nt=new Map,He=new Map,zt=45,Mt=$s,vr=Zs,_m=Sr;function Rt(e,t){return t=t||0,e.length-t>=2&&e.charCodeAt(t)===zt&&e.charCodeAt(t+1)===zt}function Sr(e,t){if(t=t||0,e.length-t>=3&&e.charCodeAt(t)===zt&&e.charCodeAt(t+1)!==zt){let r=e.indexOf("-",t+2);if(r!==-1)return e.substring(t,r+1)}return""}function $s(e){if(Nt.has(e))return Nt.get(e);let t=e.toLowerCase(),r=Nt.get(t);if(r===void 0){let n=Rt(t,0),o=n?"":Sr(t,0);r=Object.freeze({basename:t.substr(o.length),name:t,prefix:o,vendor:o,custom:n})}return Nt.set(e,r),r}function Zs(e){if(He.has(e))return He.get(e);let t=e,r=e[0];r==="/"?r=e[1]==="/"?"//":"/":r!=="_"&&r!=="*"&&r!=="$"&&r!=="#"&&r!=="+"&&r!=="&"&&(r="");let n=Rt(t,r.length);if(!n&&(t=t.toLowerCase(),He.has(t))){let u=He.get(t);return He.set(e,u),u}let o=n?"":Sr(t,r.length),i=t.substr(0,r.length+o.length),s=Object.freeze({basename:t.substr(i.length),name:t.substr(r.length),hack:r,vendor:o,prefix:i,custom:n});return He.set(e,s),s}var Ft=["initial","inherit","unset","revert","revert-layer"];var ct=43,he=45,Cr=110,qe=!0,el=!1;function Tr(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function lt(e,t,r){for(;e!==null&&(e.type===13||e.type===25);)e=r(++t);return t}function Se(e,t,r,n){if(!e)return 0;let o=e.value.charCodeAt(t);if(o===ct||o===he){if(r)return 0;t++}for(;t<e.value.length;t++)if(!B(e.value.charCodeAt(t)))return 0;return n+1}function Ar(e,t,r){let n=!1,o=lt(e,t,r);if(e=r(o),e===null)return t;if(e.type!==10)if(Tr(e,ct)||Tr(e,he)){if(n=!0,o=lt(r(++o),o,r),e=r(o),e===null||e.type!==10)return 0}else return t;if(!n){let i=e.value.charCodeAt(0);if(i!==ct&&i!==he)return 0}return Se(e,n?0:1,n,o)}function Er(e,t){let r=0;if(!e)return 0;if(e.type===10)return Se(e,0,el,r);if(e.type===1&&e.value.charCodeAt(0)===he){if(!de(e.value,1,Cr))return 0;switch(e.value.length){case 2:return Ar(t(++r),r,t);case 3:return e.value.charCodeAt(2)!==he?0:(r=lt(t(++r),r,t),e=t(r),Se(e,0,qe,r));default:return e.value.charCodeAt(2)!==he?0:Se(e,3,qe,r)}}else if(e.type===1||Tr(e,ct)&&t(r+1).type===1){if(e.type!==1&&(e=t(++r)),e===null||!de(e.value,0,Cr))return 0;switch(e.value.length){case 1:return Ar(t(++r),r,t);case 2:return e.value.charCodeAt(1)!==he?0:(r=lt(t(++r),r,t),e=t(r),Se(e,0,qe,r));default:return e.value.charCodeAt(1)!==he?0:Se(e,2,qe,r)}}else if(e.type===12){let n=e.value.charCodeAt(0),o=n===ct||n===he?1:0,i=o;for(;i<e.value.length&&B(e.value.charCodeAt(i));i++);return i===o||!de(e.value,i,Cr)?0:i+1===e.value.length?Ar(t(++r),r,t):e.value.charCodeAt(i+1)!==he?0:i+2===e.value.length?(r=lt(t(++r),r,t),e=t(r),Se(e,0,qe,r)):Se(e,i+2,qe,r)}return 0}var tl=43,Ii=45,Di=63,rl=117;function Lr(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function nl(e,t){return e.value.charCodeAt(0)===t}function ut(e,t,r){let n=0;for(let o=t;o<e.value.length;o++){let i=e.value.charCodeAt(o);if(i===Ii&&r&&n!==0)return ut(e,t+n+1,!1),6;if(!ee(i)||++n>6)return 0}return n}function Bt(e,t,r){if(!e)return 0;for(;Lr(r(t),Di);){if(++e>6)return 0;t++}return t}function Pr(e,t){let r=0;if(e===null||e.type!==1||!de(e.value,0,rl)||(e=t(++r),e===null))return 0;if(Lr(e,tl))return e=t(++r),e===null?0:e.type===1?Bt(ut(e,0,!0),++r,t):Lr(e,Di)?Bt(1,++r,t):0;if(e.type===10){let n=ut(e,1,!0);return n===0?0:(e=t(++r),e===null?r:e.type===12||e.type===10?!nl(e,Ii)||!ut(e,1,!1)?0:r+1:Bt(n,r,t))}return e.type===12?Bt(ut(e,1,!0),++r,t):0}var ol=["calc(","-moz-calc(","-webkit-calc("],Ir=new Map([[2,22],[21,22],[19,20],[23,24]]),il=["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],al=["deg","grad","rad","turn"],sl=["s","ms"],ll=["hz","khz"],cl=["dpi","dpcm","dppx","x"],ul=["fr"],pl=["db"],hl=["st"];function le(e,t){return t<e.length?e.charCodeAt(t):0}function Ni(e,t){return ge(e,0,e.length,t)}function zi(e,t){for(let r=0;r<t.length;r++)if(Ni(e,t[r]))return!0;return!1}function Mi(e,t){return t!==e.length-2?!1:le(e,t)===92&&B(le(e,t+1))}function _t(e,t,r){if(e&&e.type==="Range"){let n=Number(r!==void 0&&r!==t.length?t.substr(0,r):t);if(isNaN(n)||e.min!==null&&n<e.min&&typeof e.min!="string"||e.max!==null&&n>e.max&&typeof e.max!="string")return!0}return!1}function ml(e,t){let r=0,n=[],o=0;e:do{switch(e.type){case 24:case 22:case 20:if(e.type!==r)break e;if(r=n.pop(),n.length===0){o++;break e}break;case 2:case 21:case 19:case 23:n.push(r),r=Ir.get(e.type);break}o++}while(e=t(o));return o}function ie(e){return function(t,r,n){return t===null?0:t.type===2&&zi(t.value,ol)?ml(t,r):e(t,r,n)}}function N(e){return function(t){return t===null||t.type!==e?0:1}}function fl(e){if(e===null||e.type!==1)return 0;let t=e.value.toLowerCase();return zi(t,Ft)||Ni(t,"default")?0:1}function dl(e){return e===null||e.type!==1||le(e.value,0)!==45||le(e.value,1)!==45?0:1}function gl(e){if(e===null||e.type!==4)return 0;let t=e.value.length;if(t!==4&&t!==5&&t!==7&&t!==9)return 0;for(let r=1;r<t;r++)if(!ee(le(e.value,r)))return 0;return 1}function bl(e){return e===null||e.type!==4||!ze(le(e.value,1),le(e.value,2),le(e.value,3))?0:1}function xl(e,t){if(!e)return 0;let r=0,n=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==r)break e;r=n.pop();break;case 17:if(r===0)break e;break;case 9:if(r===0&&e.value==="!")break e;break;case 2:case 21:case 19:case 23:n.push(r),r=Ir.get(e.type);break}o++}while(e=t(o));return o}function yl(e,t){if(!e)return 0;let r=0,n=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==r)break e;r=n.pop();break;case 2:case 21:case 19:case 23:n.push(r),r=Ir.get(e.type);break}o++}while(e=t(o));return o}function ye(e){return e&&(e=new Set(e)),function(t,r,n){if(t===null||t.type!==12)return 0;let o=Te(t.value,0);if(e!==null){let i=t.value.indexOf("\\",o),s=i===-1||!Mi(t.value,i)?t.value.substr(o):t.value.substring(o,i);if(e.has(s.toLowerCase())===!1)return 0}return _t(n,t.value,o)?0:1}}function kl(e,t,r){return e===null||e.type!==11||_t(r,e.value,e.value.length-1)?0:1}function Oi(e){return typeof e!="function"&&(e=function(){return 0}),function(t,r,n){return t!==null&&t.type===10&&Number(t.value)===0?1:e(t,r,n)}}function wl(e,t,r){if(e===null)return 0;let n=Te(e.value,0);return!(n===e.value.length)&&!Mi(e.value,n)||_t(r,e.value,n)?0:1}function vl(e,t,r){if(e===null||e.type!==10)return 0;let n=le(e.value,0)===43||le(e.value,0)===45?1:0;for(;n<e.value.length;n++)if(!B(le(e.value,n)))return 0;return _t(r,e.value,n)?0:1}var Dr={"ident-token":N(1),"function-token":N(2),"at-keyword-token":N(3),"hash-token":N(4),"string-token":N(5),"bad-string-token":N(6),"url-token":N(7),"bad-url-token":N(8),"delim-token":N(9),"number-token":N(10),"percentage-token":N(11),"dimension-token":N(12),"whitespace-token":N(13),"CDO-token":N(14),"CDC-token":N(15),"colon-token":N(16),"semicolon-token":N(17),"comma-token":N(18),"[-token":N(19),"]-token":N(20),"(-token":N(21),")-token":N(22),"{-token":N(23),"}-token":N(24),string:N(5),ident:N(1),"custom-ident":fl,"custom-property-name":dl,"hex-color":gl,"id-selector":bl,"an-plus-b":Er,urange:Pr,"declaration-value":xl,"any-value":yl,dimension:ie(ye(null)),angle:ie(ye(al)),decibel:ie(ye(pl)),frequency:ie(ye(ll)),flex:ie(ye(ul)),length:ie(Oi(ye(il))),resolution:ie(ye(cl)),semitones:ie(ye(hl)),time:ie(ye(sl)),percentage:ie(kl),zero:Oi(),number:ie(wl),integer:ie(vl)};var Qi={};b(Qi,{SyntaxError:()=>Ut,generate:()=>Pe,parse:()=>Ge,walk:()=>Vt});function Ut(e,t,r){return Object.assign(Ee("SyntaxError",e),{input:t,offset:r,rawMessage:e,message:e+` - `+t+` ---`+new Array((r||t.length)+1).join("-")+"^"})}var Sl=9,Cl=10,Al=12,Tl=13,El=32,jt=class{constructor(t){this.str=t,this.pos=0}charCodeAt(t){return t<this.str.length?this.str.charCodeAt(t):0}charCode(){return this.charCodeAt(this.pos)}nextCharCode(){return this.charCodeAt(this.pos+1)}nextNonWsCode(t){return this.charCodeAt(this.findWsEnd(t))}findWsEnd(t){for(;t<this.str.length;t++){let r=this.str.charCodeAt(t);if(r!==Tl&&r!==Cl&&r!==Al&&r!==El&&r!==Sl)break}return t}substringToPos(t){return this.str.substring(this.pos,this.pos=t)}eat(t){this.charCode()!==t&&this.error("Expect `"+String.fromCharCode(t)+"`"),this.pos++}peek(){return this.pos<this.str.length?this.str.charAt(this.pos++):""}error(t){throw new Ut(t,this.str,this.pos)}};var Ll=9,Pl=10,Il=12,Dl=13,Ol=32,qi=33,zr=35,Ri=38,Ht=39,Wi=40,Nl=41,Yi=42,Mr=43,Rr=44,Fi=45,Fr=60,Gi=62,Nr=63,zl=64,Gt=91,Br=93,qt=123,Bi=124,_i=125,Ui=8734,pt=new Uint8Array(128).map((e,t)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(t))?1:0),ji={" ":1,"&&":2,"||":3,"|":4};function Wt(e){return e.substringToPos(e.findWsEnd(e.pos))}function We(e){let t=e.pos;for(;t<e.str.length;t++){let r=e.str.charCodeAt(t);if(r>=128||pt[r]===0)break}return e.pos===t&&e.error("Expect a keyword"),e.substringToPos(t)}function Yt(e){let t=e.pos;for(;t<e.str.length;t++){let r=e.str.charCodeAt(t);if(r<48||r>57)break}return e.pos===t&&e.error("Expect a number"),e.substringToPos(t)}function Ml(e){let t=e.str.indexOf("'",e.pos+1);return t===-1&&(e.pos=e.str.length,e.error("Expect an apostrophe")),e.substringToPos(t+1)}function Hi(e){let t=null,r=null;return e.eat(qt),t=Yt(e),e.charCode()===Rr?(e.pos++,e.charCode()!==_i&&(r=Yt(e))):r=t,e.eat(_i),{min:Number(t),max:r?Number(r):0}}function Rl(e){let t=null,r=!1;switch(e.charCode()){case Yi:e.pos++,t={min:0,max:0};break;case Mr:e.pos++,t={min:1,max:0};break;case Nr:e.pos++,t={min:0,max:1};break;case zr:e.pos++,r=!0,e.charCode()===qt?t=Hi(e):e.charCode()===Nr?(e.pos++,t={min:0,max:0}):t={min:1,max:0};break;case qt:t=Hi(e);break;default:return null}return{type:"Multiplier",comma:r,min:t.min,max:t.max,term:null}}function Ye(e,t){let r=Rl(e);return r!==null?(r.term=t,e.charCode()===zr&&e.charCodeAt(e.pos-1)===Mr?Ye(e,r):r):t}function Or(e){let t=e.peek();return t===""?null:{type:"Token",value:t}}function Fl(e){let t;return e.eat(Fr),e.eat(Ht),t=We(e),e.eat(Ht),e.eat(Gi),Ye(e,{type:"Property",name:t})}function Bl(e){let t=null,r=null,n=1;return e.eat(Gt),e.charCode()===Fi&&(e.peek(),n=-1),n==-1&&e.charCode()===Ui?e.peek():(t=n*Number(Yt(e)),pt[e.charCode()]!==0&&(t+=We(e))),Wt(e),e.eat(Rr),Wt(e),e.charCode()===Ui?e.peek():(n=1,e.charCode()===Fi&&(e.peek(),n=-1),r=n*Number(Yt(e)),pt[e.charCode()]!==0&&(r+=We(e))),e.eat(Br),{type:"Range",min:t,max:r}}function _l(e){let t,r=null;return e.eat(Fr),t=We(e),e.charCode()===Wi&&e.nextCharCode()===Nl&&(e.pos+=2,t+="()"),e.charCodeAt(e.findWsEnd(e.pos))===Gt&&(Wt(e),r=Bl(e)),e.eat(Gi),Ye(e,{type:"Type",name:t,opts:r})}function Ul(e){let t=We(e);return e.charCode()===Wi?(e.pos++,{type:"Function",name:t}):Ye(e,{type:"Keyword",name:t})}function jl(e,t){function r(o,i){return{type:"Group",terms:o,combinator:i,disallowEmpty:!1,explicit:!1}}let n;for(t=Object.keys(t).sort((o,i)=>ji[o]-ji[i]);t.length>0;){n=t.shift();let o=0,i=0;for(;o<e.length;o++){let s=e[o];s.type==="Combinator"&&(s.value===n?(i===-1&&(i=o-1),e.splice(o,1),o--):(i!==-1&&o-i>1&&(e.splice(i,o-i,r(e.slice(i,o),n)),o=i+1),i=-1))}i!==-1&&t.length&&e.splice(i,o-i,r(e.slice(i,o),n))}return n}function Vi(e){let t=[],r={},n,o=null,i=e.pos;for(;n=ql(e);)n.type!=="Spaces"&&(n.type==="Combinator"?((o===null||o.type==="Combinator")&&(e.pos=i,e.error("Unexpected combinator")),r[n.value]=!0):o!==null&&o.type!=="Combinator"&&(r[" "]=!0,t.push({type:"Combinator",value:" "})),t.push(n),o=n,i=e.pos);return o!==null&&o.type==="Combinator"&&(e.pos-=i,e.error("Unexpected combinator")),{type:"Group",terms:t,combinator:jl(t,r)||" ",disallowEmpty:!1,explicit:!1}}function Hl(e){let t;return e.eat(Gt),t=Vi(e),e.eat(Br),t.explicit=!0,e.charCode()===qi&&(e.pos++,t.disallowEmpty=!0),t}function ql(e){let t=e.charCode();if(t<128&&pt[t]===1)return Ul(e);switch(t){case Br:break;case Gt:return Ye(e,Hl(e));case Fr:return e.nextCharCode()===Ht?Fl(e):_l(e);case Bi:return{type:"Combinator",value:e.substringToPos(e.pos+(e.nextCharCode()===Bi?2:1))};case Ri:return e.pos++,e.eat(Ri),{type:"Combinator",value:"&&"};case Rr:return e.pos++,{type:"Comma"};case Ht:return Ye(e,{type:"String",value:Ml(e)});case Ol:case Ll:case Pl:case Dl:case Il:return{type:"Spaces",value:Wt(e)};case zl:return t=e.nextCharCode(),t<128&&pt[t]===1?(e.pos++,{type:"AtKeyword",name:We(e)}):Or(e);case Yi:case Mr:case Nr:case zr:case qi:break;case qt:if(t=e.nextCharCode(),t<48||t>57)return Or(e);break;default:return Or(e)}}function Ge(e){let t=new jt(e),r=Vi(t);return t.pos!==e.length&&t.error("Unexpected input"),r.terms.length===1&&r.terms[0].type==="Group"?r.terms[0]:r}var ht=function(){};function Ki(e){return typeof e=="function"?e:ht}function Vt(e,t,r){function n(s){switch(o.call(r,s),s.type){case"Group":s.terms.forEach(n);break;case"Multiplier":n(s.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+s.type)}i.call(r,s)}let o=ht,i=ht;if(typeof t=="function"?o=t:t&&(o=Ki(t.enter),i=Ki(t.leave)),o===ht&&i===ht)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");n(e,r)}var Wl={decorator(e){let t=[],r=null;return{...e,node(n){let o=r;r=n,e.node.call(this,n),r=o},emit(n,o,i){t.push({type:o,value:n,node:i?null:r})},result(){return t}}}};function Yl(e){let t=[];return ve(e,(r,n,o)=>t.push({type:r,value:e.slice(n,o),node:null})),t}function Xi(e,t){return typeof e=="string"?Yl(e):t.generate(e,Wl)}var C={type:"Match"},L={type:"Mismatch"},Kt={type:"DisallowEmpty"},Gl=40,Vl=41;function Z(e,t,r){return t===C&&r===L||e===C&&t===C&&r===C?e:(e.type==="If"&&e.else===L&&t===C&&(t=e.then,e=e.match),{type:"If",match:e,then:t,else:r})}function Zi(e){return e.length>2&&e.charCodeAt(e.length-2)===Gl&&e.charCodeAt(e.length-1)===Vl}function $i(e){return e.type==="Keyword"||e.type==="AtKeyword"||e.type==="Function"||e.type==="Type"&&Zi(e.name)}function _r(e,t,r){switch(e){case" ":{let n=C;for(let o=t.length-1;o>=0;o--){let i=t[o];n=Z(i,n,L)}return n}case"|":{let n=L,o=null;for(let i=t.length-1;i>=0;i--){let s=t[i];if($i(s)&&(o===null&&i>0&&$i(t[i-1])&&(o=Object.create(null),n=Z({type:"Enum",map:o},C,n)),o!==null)){let u=(Zi(s.name)?s.name.slice(0,-1):s.name).toLowerCase();if(!(u in o)){o[u]=s;continue}}o=null,n=Z(s,C,n)}return n}case"&&":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!0};let n=L;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=_r(e,t.filter(function(u){return u!==i}),!1):s=C,n=Z(i,s,n)}return n}case"||":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!1};let n=r?C:L;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=_r(e,t.filter(function(u){return u!==i}),!0):s=C,n=Z(i,s,n)}return n}}}function Kl(e){let t=C,r=Ur(e.term);if(e.max===0)r=Z(r,Kt,L),t=Z(r,null,L),t.then=Z(C,C,t),e.comma&&(t.then.else=Z({type:"Comma",syntax:e},t,L));else for(let n=e.min||1;n<=e.max;n++)e.comma&&t!==C&&(t=Z({type:"Comma",syntax:e},t,L)),t=Z(r,Z(C,C,t),L);if(e.min===0)t=Z(C,C,t);else for(let n=0;n<e.min-1;n++)e.comma&&t!==C&&(t=Z({type:"Comma",syntax:e},t,L)),t=Z(r,t,L);return t}function Ur(e){if(typeof e=="function")return{type:"Generic",fn:e};switch(e.type){case"Group":{let t=_r(e.combinator,e.terms.map(Ur),!1);return e.disallowEmpty&&(t=Z(t,Kt,L)),t}case"Multiplier":return Kl(e);case"Type":case"Property":return{type:e.type,name:e.name,syntax:e};case"Keyword":return{type:e.type,name:e.name.toLowerCase(),syntax:e};case"AtKeyword":return{type:e.type,name:"@"+e.name.toLowerCase(),syntax:e};case"Function":return{type:e.type,name:e.name.toLowerCase()+"(",syntax:e};case"String":return e.value.length===3?{type:"Token",value:e.value.charAt(1),syntax:e}:{type:e.type,value:e.value.substr(1,e.value.length-2).replace(/\\'/g,"'"),syntax:e};case"Token":return{type:e.type,value:e.value,syntax:e};case"Comma":return{type:e.type,syntax:e};default:throw new Error("Unknown node type:",e.type)}}function Qt(e,t){return typeof e=="string"&&(e=Ge(e)),{type:"MatchGraph",match:Ur(e),syntax:t||null,source:e}}var{hasOwnProperty:Ji}=Object.prototype,Ql=0,Xl=1,Hr=2,oa=3,ea="Match",$l="Mismatch",Zl="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",ta=15e3,Jl=0;function ec(e){let t=null,r=null,n=e;for(;n!==null;)r=n.prev,n.prev=t,t=n,n=r;return t}function jr(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++){let n=t.charCodeAt(r),o=e.charCodeAt(r);if(o>=65&&o<=90&&(o=o|32),o!==n)return!1}return!0}function tc(e){return e.type!==9?!1:e.value!=="?"}function ra(e){return e===null?!0:e.type===18||e.type===2||e.type===21||e.type===19||e.type===23||tc(e)}function na(e){return e===null?!0:e.type===22||e.type===20||e.type===24||e.type===9&&e.value==="/"}function rc(e,t,r){function n(){do R++,S=R<e.length?e[R]:null;while(S!==null&&(S.type===13||S.type===25))}function o(ae){let fe=R+ae;return fe<e.length?e[fe]:null}function i(ae,fe){return{nextState:ae,matchStack:z,syntaxStack:p,thenStack:m,tokenIndex:R,prev:fe}}function s(ae){m={nextState:ae,matchStack:z,syntaxStack:p,prev:m}}function u(ae){f=i(ae,f)}function c(){z={type:Xl,syntax:t.syntax,token:S,prev:z},n(),P=null,R>ke&&(ke=R)}function a(){p={syntax:t.syntax,opts:t.syntax.opts||p!==null&&p.opts||null,prev:p},z={type:Hr,syntax:t.syntax,token:z.token,prev:z}}function l(){z.type===Hr?z=z.prev:z={type:oa,syntax:p.syntax,token:z.token,prev:z},p=p.prev}let p=null,m=null,f=null,P=null,te=0,X=null,S=null,R=-1,ke=0,z={type:Ql,syntax:null,token:null,prev:null};for(n();X===null&&++te<ta;)switch(t.type){case"Match":if(m===null){if(S!==null&&(R!==e.length-1||S.value!=="\\0"&&S.value!=="\\9")){t=L;break}X=ea;break}if(t=m.nextState,t===Kt)if(m.matchStack===z){t=L;break}else t=C;for(;m.syntaxStack!==p;)l();m=m.prev;break;case"Mismatch":if(P!==null&&P!==!1)(f===null||R>f.tokenIndex)&&(f=P,P=!1);else if(f===null){X=$l;break}t=f.nextState,m=f.thenStack,p=f.syntaxStack,z=f.matchStack,R=f.tokenIndex,S=R<e.length?e[R]:null,f=f.prev;break;case"MatchGraph":t=t.match;break;case"If":t.else!==L&&u(t.else),t.then!==C&&s(t.then),t=t.match;break;case"MatchOnce":t={type:"MatchOnceBuffer",syntax:t,index:0,mask:0};break;case"MatchOnceBuffer":{let Q=t.syntax.terms;if(t.index===Q.length){if(t.mask===0||t.syntax.all){t=L;break}t=C;break}if(t.mask===(1<<Q.length)-1){t=C;break}for(;t.index<Q.length;t.index++){let J=1<<t.index;if((t.mask&J)===0){u(t),s({type:"AddMatchOnce",syntax:t.syntax,mask:t.mask|J}),t=Q[t.index++];break}}break}case"AddMatchOnce":t={type:"MatchOnceBuffer",syntax:t.syntax,index:0,mask:t.mask};break;case"Enum":if(S!==null){let Q=S.value.toLowerCase();if(Q.indexOf("\\")!==-1&&(Q=Q.replace(/\\[09].*$/,"")),Ji.call(t.map,Q)){t=t.map[Q];break}}t=L;break;case"Generic":{let Q=p!==null?p.opts:null,J=R+Math.floor(t.fn(S,o,Q));if(!isNaN(J)&&J>R){for(;R<J;)c();t=C}else t=L;break}case"Type":case"Property":{let Q=t.type==="Type"?"types":"properties",J=Ji.call(r,Q)?r[Q][t.name]:null;if(!J||!J.match)throw new Error("Bad syntax reference: "+(t.type==="Type"?"<"+t.name+">":"<'"+t.name+"'>"));if(P!==!1&&S!==null&&t.type==="Type"&&(t.name==="custom-ident"&&S.type===1||t.name==="length"&&S.value==="0")){P===null&&(P=i(t,f)),t=L;break}a(),t=J.match;break}case"Keyword":{let Q=t.name;if(S!==null){let J=S.value;if(J.indexOf("\\")!==-1&&(J=J.replace(/\\[09].*$/,"")),jr(J,Q)){c(),t=C;break}}t=L;break}case"AtKeyword":case"Function":if(S!==null&&jr(S.value,t.name)){c(),t=C;break}t=L;break;case"Token":if(S!==null&&S.value===t.value){c(),t=C;break}t=L;break;case"Comma":S!==null&&S.type===18?ra(z.token)?t=L:(c(),t=na(S)?L:C):t=ra(z.token)||na(S)?C:L;break;case"String":let ae="",fe=R;for(;fe<e.length&&ae.length<t.value.length;fe++)ae+=e[fe].value;if(jr(ae,t.value)){for(;R<fe;)c();t=C}else t=L;break;default:throw new Error("Unknown node type: "+t.type)}switch(Jl+=te,X){case null:console.warn("[csstree-match] BREAK after "+ta+" iterations"),X=Zl,z=null;break;case ea:for(;p!==null;)l();break;default:z=null}return{tokens:e,reason:X,iterations:te,match:z,longestMatch:ke}}function qr(e,t,r){let n=rc(e,t,r||{});if(n.match===null)return n;let o=n.match,i=n.match={syntax:t.syntax||null,match:[]},s=[i];for(o=ec(o).prev;o!==null;){switch(o.type){case Hr:i.match.push(i={syntax:o.syntax,match:[]}),s.push(i);break;case oa:s.pop(),i=s[s.length-1];break;default:i.match.push({syntax:o.syntax||null,token:o.token.value,node:o.token.node})}o=o.prev}return n}var Yr={};b(Yr,{getTrace:()=>ia,isKeyword:()=>ic,isProperty:()=>oc,isType:()=>nc});function ia(e){function t(o){return o===null?!1:o.type==="Type"||o.type==="Property"||o.type==="Keyword"}function r(o){if(Array.isArray(o.match)){for(let i=0;i<o.match.length;i++)if(r(o.match[i]))return t(o.syntax)&&n.unshift(o.syntax),!0}else if(o.node===e)return n=t(o.syntax)?[o.syntax]:[],!0;return!1}let n=null;return this.matched!==null&&r(this.matched),n}function nc(e,t){return Wr(this,e,r=>r.type==="Type"&&r.name===t)}function oc(e,t){return Wr(this,e,r=>r.type==="Property"&&r.name===t)}function ic(e){return Wr(this,e,t=>t.type==="Keyword")}function Wr(e,t,r){let n=ia.call(e,t);return n===null?!1:n.some(r)}function aa(e){return"node"in e?e.node:aa(e.match[0])}function sa(e){return"node"in e?e.node:sa(e.match[e.match.length-1])}function Gr(e,t,r,n,o){function i(u){if(u.syntax!==null&&u.syntax.type===n&&u.syntax.name===o){let c=aa(u),a=sa(u);e.syntax.walk(t,function(l,p,m){if(l===c){let f=new I;do{if(f.appendData(p.data),p.data===a)break;p=p.next}while(p!==null);s.push({parent:m,nodes:f})}})}Array.isArray(u.match)&&u.match.forEach(i)}let s=[];return r.matched!==null&&i(r.matched),s}var{hasOwnProperty:mt}=Object.prototype;function Vr(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&e>=0}function la(e){return Boolean(e)&&Vr(e.offset)&&Vr(e.line)&&Vr(e.column)}function ac(e,t){return function(n,o){if(!n||n.constructor!==Object)return o(n,"Type of node should be an Object");for(let i in n){let s=!0;if(mt.call(n,i)!==!1){if(i==="type")n.type!==e&&o(n,"Wrong node type `"+n.type+"`, expected `"+e+"`");else if(i==="loc"){if(n.loc===null)continue;if(n.loc&&n.loc.constructor===Object)if(typeof n.loc.source!="string")i+=".source";else if(!la(n.loc.start))i+=".start";else if(!la(n.loc.end))i+=".end";else continue;s=!1}else if(t.hasOwnProperty(i)){s=!1;for(let u=0;!s&&u<t[i].length;u++){let c=t[i][u];switch(c){case String:s=typeof n[i]=="string";break;case Boolean:s=typeof n[i]=="boolean";break;case null:s=n[i]===null;break;default:typeof c=="string"?s=n[i]&&n[i].type===c:Array.isArray(c)&&(s=n[i]instanceof I)}}}else o(n,"Unknown field `"+i+"` for "+e+" node type");s||o(n,"Bad value for `"+e+"."+i+"`")}}for(let i in t)mt.call(t,i)&&mt.call(n,i)===!1&&o(n,"Field `"+e+"."+i+"` is missed")}}function sc(e,t){let r=t.structure,n={type:String,loc:!0},o={type:'"'+e+'"'};for(let i in r){if(mt.call(r,i)===!1)continue;let s=[],u=n[i]=Array.isArray(r[i])?r[i].slice():[r[i]];for(let c=0;c<u.length;c++){let a=u[c];if(a===String||a===Boolean)s.push(a.name);else if(a===null)s.push("null");else if(typeof a=="string")s.push("<"+a+">");else if(Array.isArray(a))s.push("List");else throw new Error("Wrong value `"+a+"` in `"+e+"."+i+"` structure definition")}o[i]=s.join(" | ")}return{docs:o,check:ac(e,n)}}function ca(e){let t={};if(e.node){for(let r in e.node)if(mt.call(e.node,r)){let n=e.node[r];if(n.structure)t[r]=sc(r,n);else throw new Error("Missed `structure` field in `"+r+"` node type definition")}}return t}var lc=Qt(Ft.join(" | "));function Kr(e,t,r){let n={};for(let o in e)e[o].syntax&&(n[o]=r?e[o].syntax:Pe(e[o].syntax,{compact:t}));return n}function cc(e,t,r){let n={};for(let[o,i]of Object.entries(e))n[o]={prelude:i.prelude&&(r?i.prelude.syntax:Pe(i.prelude.syntax,{compact:t})),descriptors:i.descriptors&&Kr(i.descriptors,t,r)};return n}function uc(e){for(let t=0;t<e.length;t++)if(e[t].value.toLowerCase()==="var(")return!0;return!1}function ce(e,t,r){return{matched:e,iterations:r,error:t,...Yr}}function Ve(e,t,r,n){let o=Xi(r,e.syntax),i;return uc(o)?ce(null,new Error("Matching for a tree with var() is not supported")):(n&&(i=qr(o,e.cssWideKeywordsSyntax,e)),(!n||!i.match)&&(i=qr(o,t.match,e),!i.match)?ce(null,new Pi(i.reason,t.syntax,r,i),i.iterations):ce(i.match,null,i.iterations))}var Ke=class{constructor(t,r,n){if(this.cssWideKeywordsSyntax=lc,this.syntax=r,this.generic=!1,this.atrules=Object.create(null),this.properties=Object.create(null),this.types=Object.create(null),this.structure=n||ca(t),t){if(t.types)for(let o in t.types)this.addType_(o,t.types[o]);if(t.generic){this.generic=!0;for(let o in Dr)this.addType_(o,Dr[o])}if(t.atrules)for(let o in t.atrules)this.addAtrule_(o,t.atrules[o]);if(t.properties)for(let o in t.properties)this.addProperty_(o,t.properties[o])}}checkStructure(t){function r(i,s){o.push({node:i,message:s})}let n=this.structure,o=[];return this.syntax.walk(t,function(i){n.hasOwnProperty(i.type)?n[i.type].check(i,r):r(i,"Unknown node type `"+i.type+"`")}),o.length?o:!1}createDescriptor(t,r,n,o=null){let i={type:r,name:n},s={type:r,name:n,parent:o,serializable:typeof t=="string"||t&&typeof t.type=="string",syntax:null,match:null};return typeof t=="function"?s.match=Qt(t,i):(typeof t=="string"?Object.defineProperty(s,"syntax",{get(){return Object.defineProperty(s,"syntax",{value:Ge(t)}),s.syntax}}):s.syntax=t,Object.defineProperty(s,"match",{get(){return Object.defineProperty(s,"match",{value:Qt(s.syntax,i)}),s.match}})),s}addAtrule_(t,r){!r||(this.atrules[t]={type:"Atrule",name:t,prelude:r.prelude?this.createDescriptor(r.prelude,"AtrulePrelude",t):null,descriptors:r.descriptors?Object.keys(r.descriptors).reduce((n,o)=>(n[o]=this.createDescriptor(r.descriptors[o],"AtruleDescriptor",o,t),n),Object.create(null)):null})}addProperty_(t,r){!r||(this.properties[t]=this.createDescriptor(r,"Property",t))}addType_(t,r){!r||(this.types[t]=this.createDescriptor(r,"Type",t))}checkAtruleName(t){if(!this.getAtrule(t))return new je("Unknown at-rule","@"+t)}checkAtrulePrelude(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t);if(!o.prelude&&r)return new SyntaxError("At-rule `@"+t+"` should not contain a prelude");if(o.prelude&&!r&&!Ve(this,o.prelude,"",!1).matched)return new SyntaxError("At-rule `@"+t+"` should contain a prelude")}checkAtruleDescriptorName(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t),i=Mt(r);if(!o.descriptors)return new SyntaxError("At-rule `@"+t+"` has no known descriptors");if(!o.descriptors[i.name]&&!o.descriptors[i.basename])return new je("Unknown at-rule descriptor",r)}checkPropertyName(t){if(!this.getProperty(t))return new je("Unknown property",t)}matchAtrulePrelude(t,r){let n=this.checkAtrulePrelude(t,r);if(n)return ce(null,n);let o=this.getAtrule(t);return o.prelude?Ve(this,o.prelude,r||"",!1):ce(null,null)}matchAtruleDescriptor(t,r,n){let o=this.checkAtruleDescriptorName(t,r);if(o)return ce(null,o);let i=this.getAtrule(t),s=Mt(r);return Ve(this,i.descriptors[s.name]||i.descriptors[s.basename],n,!1)}matchDeclaration(t){return t.type!=="Declaration"?ce(null,new Error("Not a Declaration node")):this.matchProperty(t.property,t.value)}matchProperty(t,r){if(vr(t).custom)return ce(null,new Error("Lexer matching doesn't applicable for custom properties"));let n=this.checkPropertyName(t);return n?ce(null,n):Ve(this,this.getProperty(t),r,!0)}matchType(t,r){let n=this.getType(t);return n?Ve(this,n,r,!1):ce(null,new je("Unknown type",t))}match(t,r){return typeof t!="string"&&(!t||!t.type)?ce(null,new je("Bad syntax")):((typeof t=="string"||!t.match)&&(t=this.createDescriptor(t,"Type","anonymous")),Ve(this,t,r,!1))}findValueFragments(t,r,n,o){return Gr(this,r,this.matchProperty(t,r),n,o)}findDeclarationValueFragments(t,r,n){return Gr(this,t.value,this.matchDeclaration(t),r,n)}findAllFragments(t,r,n){let o=[];return this.syntax.walk(t,{visit:"Declaration",enter:i=>{o.push.apply(o,this.findDeclarationValueFragments(i,r,n))}}),o}getAtrule(t,r=!0){let n=Mt(t);return(n.vendor&&r?this.atrules[n.name]||this.atrules[n.basename]:this.atrules[n.name])||null}getAtrulePrelude(t,r=!0){let n=this.getAtrule(t,r);return n&&n.prelude||null}getAtruleDescriptor(t,r){return this.atrules.hasOwnProperty(t)&&this.atrules.declarators&&this.atrules[t].declarators[r]||null}getProperty(t,r=!0){let n=vr(t);return(n.vendor&&r?this.properties[n.name]||this.properties[n.basename]:this.properties[n.name])||null}getType(t){return hasOwnProperty.call(this.types,t)?this.types[t]:null}validate(){function t(o,i,s,u){if(s.has(i))return s.get(i);s.set(i,!1),u.syntax!==null&&Vt(u.syntax,function(c){if(c.type!=="Type"&&c.type!=="Property")return;let a=c.type==="Type"?o.types:o.properties,l=c.type==="Type"?r:n;(!hasOwnProperty.call(a,c.name)||t(o,c.name,l,a[c.name]))&&s.set(i,!0)},this)}let r=new Map,n=new Map;for(let o in this.types)t(this,o,r,this.types[o]);for(let o in this.properties)t(this,o,n,this.properties[o]);return r=[...r.keys()].filter(o=>r.get(o)),n=[...n.keys()].filter(o=>n.get(o)),r.length||n.length?{types:r,properties:n}:null}dump(t,r){return{generic:this.generic,types:Kr(this.types,!r,t),properties:Kr(this.properties,!r,t),atrules:cc(this.atrules,!r,t)}}toString(){return JSON.stringify(this.dump())}};var{hasOwnProperty:Qe}=Object.prototype,pc={generic:!0,types:Qr,atrules:{prelude:pa,descriptors:pa},properties:Qr,parseContext:hc,scope:ma,atrule:["parse"],pseudo:["parse"],node:["name","structure","parse","generate","walkContext"]};function Xt(e){return e&&e.constructor===Object}function ha(e){return Xt(e)?{...e}:e}function hc(e,t){return Object.assign(e,t)}function ma(e,t){for(let r in t)Qe.call(t,r)&&(Xt(e[r])?ma(e[r],t[r]):e[r]=ha(t[r]));return e}function ua(e,t){return typeof t=="string"&&/^\s*\|/.test(t)?typeof e=="string"?e+t:t.replace(/^\s*\|\s*/,""):t||null}function Qr(e,t){if(typeof t=="string")return ua(e,t);let r={...e};for(let n in t)Qe.call(t,n)&&(r[n]=ua(Qe.call(e,n)?e[n]:void 0,t[n]));return r}function pa(e,t){let r=Qr(e,t);return!Xt(r)||Object.keys(r).length?r:null}function ft(e,t,r){for(let n in r)if(Qe.call(r,n)!==!1){if(r[n]===!0)Qe.call(t,n)&&(e[n]=ha(t[n]));else if(r[n]){if(typeof r[n]=="function"){let o=r[n];e[n]=o({},e[n]),e[n]=o(e[n]||{},t[n])}else if(Xt(r[n])){let o={};for(let i in e[n])o[i]=ft({},e[n][i],r[n]);for(let i in t[n])o[i]=ft(o[i]||{},t[n][i],r[n]);e[n]=o}else if(Array.isArray(r[n])){let o={},i=r[n].reduce(function(s,u){return s[u]=!0,s},{});for(let[s,u]of Object.entries(e[n]||{}))o[s]={},u&&ft(o[s],u,i);for(let s in t[n])Qe.call(t[n],s)&&(o[s]||(o[s]={}),t[n]&&t[n][s]&&ft(o[s],t[n][s],i));e[n]=o}}}return e}var $t=(e,t)=>ft(e,t,pc);function fa(e){let t=Xo(e),r=Ei(e),n=wi(e),{fromPlainObject:o,toPlainObject:i}=vi(r),s={lexer:null,createLexer:u=>new Ke(u,s,s.lexer.structure),tokenize:ve,parse:t,generate:n,walk:r,find:r.find,findLast:r.findLast,findAll:r.findAll,fromPlainObject:o,toPlainObject:i,fork(u){let c=$t({},e);return fa(typeof u=="function"?u(c,Object.assign):$t(c,u))}};return s.lexer=new Ke({generic:!0,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},s),s}var Xr=e=>fa($t({},e));var da={generic:!0,types:{"absolute-size":"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large","alpha-value":"<number>|<percentage>","angle-percentage":"<angle>|<percentage>","angular-color-hint":"<angle-percentage>","angular-color-stop":"<color>&&<color-stop-angle>?","angular-color-stop-list":"[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>","animateable-feature":"scroll-position|contents|<custom-ident>",attachment:"scroll|fixed|local","attr()":"attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attribute-selector":"'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )","auto-track-list":"[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?","baseline-position":"[first|last]? baseline","basic-shape":"<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>","bg-image":"none|<image>","bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","bg-position":"[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]","bg-size":"[<length-percentage>|auto]{1,2}|cover|contain","blur()":"blur( <length> )","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",box:"border-box|padding-box|content-box","brightness()":"brightness( <number-percentage> )","calc()":"calc( <calc-sum> )","calc-sum":"<calc-product> [['+'|'-'] <calc-product>]*","calc-product":"<calc-value> ['*' <calc-value>|'/' <number>]*","calc-value":"<number>|<dimension>|<percentage>|( <calc-sum> )","cf-final-image":"<image>|<color>","cf-mixing-image":"<percentage>?&&<image>","circle()":"circle( [<shape-radius>]? [at <position>]? )","clamp()":"clamp( <calc-sum>#{3} )","class-selector":"'.' <ident-token>","clip-source":"<url>",color:"<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<hex-color>|<named-color>|currentcolor|<deprecated-system-color>","color-stop":"<color-stop-length>|<color-stop-angle>","color-stop-angle":"<angle-percentage>{1,2}","color-stop-length":"<length-percentage>{1,2}","color-stop-list":"[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>",combinator:"'>'|'+'|'~'|['||']","common-lig-values":"[common-ligatures|no-common-ligatures]","compat-auto":"searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[<type-selector>? <subclass-selector>* [<pseudo-element-selector> <pseudo-class-selector>*]*]!","compound-selector-list":"<compound-selector>#","complex-selector":"<compound-selector> [<combinator>? <compound-selector>]*","complex-selector-list":"<complex-selector>#","conic-gradient()":"conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","contextual-alt-values":"[contextual|no-contextual]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"<image>","contrast()":"contrast( [<number-percentage>] )",counter:"<counter()>|<counters()>","counter()":"counter( <counter-name> , <counter-style>? )","counter-name":"<custom-ident>","counter-style":"<counter-style-name>|symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <counter-name> , <string> , <counter-style>? )","cross-fade()":"cross-fade( <cf-mixing-image> , <cf-final-image>? )","cubic-bezier-timing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"<display-outside>?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( <length>{2,3} <color>? )","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )","ellipse()":"ellipse( [<shape-radius>{2}]? [at <position>]? )","ending-shape":"circle|ellipse","env()":"env( <custom-ident> , <declaration-value>? )","explicit-track-list":"[<line-names>? <track-size>]+ <line-names>?","family-name":"<string>|<custom-ident>+","feature-tag-value":"<string> [<integer>|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":"<feature-type> '{' <feature-value-declaration-list> '}'","feature-value-block-list":"<feature-value-block>+","feature-value-declaration":"<custom-ident> : <integer>+ ;","feature-value-declaration-list":"<feature-value-declaration>","feature-value-name":"<custom-ident>","fill-rule":"nonzero|evenodd","filter-function":"<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>","filter-function-list":"[<filter-function>|<url>]+","final-bg-layer":"<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","fit-content()":"fit-content( [<length>|<percentage>] )","fixed-breadth":"<length-percentage>","fixed-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <fixed-size>]+ <line-names>? )","fixed-size":"<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>","font-variant-css21":"[normal|small-caps]","font-weight-absolute":"normal|bold|<number [1,1000]>","frequency-percentage":"<frequency>|<percentage>","general-enclosed":"[<function-token> <any-value> )]|( <ident> <any-value> )","generic-family":"serif|sans-serif|cursive|fantasy|monospace|-apple-system","generic-name":"serif|sans-serif|cursive|fantasy|monospace","geometry-box":"<shape-box>|fill-box|stroke-box|view-box",gradient:"<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>","grayscale()":"grayscale( <number-percentage> )","grid-line":"auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )","hsla()":"hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )",hue:"<number>|<angle>","hue-rotate()":"hue-rotate( <angle> )","hwb()":"hwb( [<hue>|none] [<percentage>|none] [<percentage>|none] [/ [<alpha-value>|none]]? )",image:"<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>","image()":"image( <image-tags>? [<image-src>? , <color>?]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[<image>|<string>] [<resolution>||type( <string> )]","image-src":"<url>|<string>","image-tags":"ltr|rtl","inflexible-breadth":"<length>|<percentage>|min-content|max-content|auto","inset()":"inset( <length-percentage>{1,4} [round <'border-radius'>]? )","invert()":"invert( <number-percentage> )","keyframes-name":"<custom-ident>|<string>","keyframe-block":"<keyframe-selector># { <declaration-list> }","keyframe-block-list":"<keyframe-block>+","keyframe-selector":"from|to|<percentage>","layer()":"layer( <layer-name> )","layer-name":"<ident> ['.' <ident>]*","leader()":"leader( <leader-type> )","leader-type":"dotted|solid|space|<string>","length-percentage":"<length>|<percentage>","line-names":"'[' <custom-ident>* ']'","line-name-list":"[<line-names>|<name-repeat>]+","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"<length>|thin|medium|thick","linear-color-hint":"<length-percentage>","linear-color-stop":"<color> <color-stop-length>?","linear-gradient()":"linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","mask-layer":"<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>","mask-position":"[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?","mask-reference":"none|<image>|<mask-source>","mask-source":"<url>","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( <number>#{6} )","matrix3d()":"matrix3d( <number>#{16} )","max()":"max( <calc-sum># )","media-and":"<media-in-parens> [and <media-in-parens>]+","media-condition":"<media-not>|<media-and>|<media-or>|<media-in-parens>","media-condition-without-or":"<media-not>|<media-and>|<media-in-parens>","media-feature":"( [<mf-plain>|<mf-boolean>|<mf-range>] )","media-in-parens":"( <media-condition> )|<media-feature>|<general-enclosed>","media-not":"not <media-in-parens>","media-or":"<media-in-parens> [or <media-in-parens>]+","media-query":"<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?","media-query-list":"<media-query>#","media-type":"<ident>","mf-boolean":"<mf-name>","mf-name":"<ident>","mf-plain":"<mf-name> : <mf-value>","mf-range":"<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>","mf-value":"<number>|<dimension>|<ident>|<ratio>","min()":"min( <calc-sum># )","minmax()":"minmax( [<length>|<percentage>|min-content|max-content|auto] , [<length>|<percentage>|<flex>|min-content|max-content|auto] )","name-repeat":"repeat( [<integer [1,\u221E]>|auto-fill] , <line-names>+ )","named-color":"transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>","namespace-prefix":"<ident>","ns-prefix":"[<ident-token>|'*']? '|'","number-percentage":"<number>|<percentage>","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]",nth:"<an-plus-b>|even|odd","opacity()":"opacity( [<number-percentage>] )","overflow-position":"unsafe|safe","outline-radius":"<length>|<percentage>","page-body":"<declaration>? [; <page-body>]?|<page-margin-box> <page-body>","page-margin-box":"<page-margin-box-type> '{' <declaration-list> '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector-list":"[<page-selector>#]?","page-selector":"<pseudo-page>+|<ident> <pseudo-page>*","page-size":"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger","path()":"path( [<fill-rule> ,]? <string> )","paint()":"paint( <ident> , <declaration-value>? )","perspective()":"perspective( <length> )","polygon()":"polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]","pseudo-class-selector":"':' <ident-token>|':' <function-token> <any-value> ')'","pseudo-element-selector":"':' <pseudo-class-selector>","pseudo-page":": [left|right|first|blank]",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-gradient()":"radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","relative-selector":"<combinator>? <complex-selector>","relative-selector-list":"<relative-selector>#","relative-size":"larger|smaller","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-conic-gradient()":"repeating-conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","repeating-linear-gradient()":"repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","repeating-radial-gradient()":"repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","rgb()":"rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )","rgba()":"rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )","rotate()":"rotate( [<angle>|<zero>] )","rotate3d()":"rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )","rotateX()":"rotateX( [<angle>|<zero>] )","rotateY()":"rotateY( [<angle>|<zero>] )","rotateZ()":"rotateZ( [<angle>|<zero>] )","saturate()":"saturate( <number-percentage> )","scale()":"scale( <number> , <number>? )","scale3d()":"scale3d( <number> , <number> , <number> )","scaleX()":"scaleX( <number> )","scaleY()":"scaleY( <number> )","scaleZ()":"scaleZ( <number> )","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","shape-radius":"<length-percentage>|closest-side|farthest-side","skew()":"skew( [<angle>|<zero>] , [<angle>|<zero>]? )","skewX()":"skewX( [<angle>|<zero>] )","skewY()":"skewY( [<angle>|<zero>] )","sepia()":"sepia( <number-percentage> )",shadow:"inset?&&<length>{2,4}&&<color>?","shadow-t":"[<length>{2,3}&&<color>?]",shape:"rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )","shape-box":"<box>|margin-box","side-or-corner":"[left|right]||[top|bottom]","single-animation":"<time>||<easing-function>||<time>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]","single-animation-direction":"normal|reverse|alternate|alternate-reverse","single-animation-fill-mode":"none|forwards|backwards|both","single-animation-iteration-count":"infinite|<number>","single-animation-play-state":"running|paused","single-animation-timeline":"auto|none|<timeline-name>","single-transition":"[none|<single-transition-property>]||<time>||<easing-function>||<time>","single-transition-property":"all|<custom-ident>",size:"closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}","step-position":"jump-start|jump-end|jump-none|jump-both|start|end","step-timing-function":"step-start|step-end|steps( <integer> [, <step-position>]? )","subclass-selector":"<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>","supports-condition":"not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*","supports-in-parens":"( <supports-condition> )|<supports-feature>|<general-enclosed>","supports-feature":"<supports-decl>|<supports-selector-fn>","supports-decl":"( <declaration> )","supports-selector-fn":"selector( <complex-selector> )",symbol:"<string>|<image>|<custom-ident>",target:"<target-counter()>|<target-counters()>|<target-text()>","target-counter()":"target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )","target-counters()":"target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )","target-text()":"target-text( [<string>|<url>] , [content|before|after|first-letter]? )","time-percentage":"<time>|<percentage>","timeline-name":"<custom-ident>|<string>","easing-function":"linear|<cubic-bezier-timing-function>|<step-timing-function>","track-breadth":"<length-percentage>|<flex>|min-content|max-content|auto","track-list":"[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?","track-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <track-size>]+ <line-names>? )","track-size":"<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( [<length>|<percentage>] )","transform-function":"<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>","transform-list":"<transform-function>+","translate()":"translate( <length-percentage> , <length-percentage>? )","translate3d()":"translate3d( <length-percentage> , <length-percentage> , <length> )","translateX()":"translateX( <length-percentage> )","translateY()":"translateY( <length-percentage> )","translateZ()":"translateZ( <length> )","type-or-unit":"string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%","type-selector":"<wq-name>|<ns-prefix>? '*'","var()":"var( <custom-property-name> , <declaration-value>? )","viewport-length":"auto|<length-percentage>","visual-box":"content-box|padding-box|border-box","wq-name":"<ns-prefix>? <ident-token>","-legacy-gradient":"<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>","-legacy-linear-gradient":"-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-repeating-linear-gradient":"-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-linear-gradient-arguments":"[<angle>|<side-or-corner>]? , <color-stop-list>","-legacy-radial-gradient":"-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-repeating-radial-gradient":"-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-radial-gradient-arguments":"[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>","-legacy-radial-gradient-size":"closest-side|closest-corner|farthest-side|farthest-corner|contain|cover","-legacy-radial-gradient-shape":"circle|ellipse","-non-standard-font":"-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body","-non-standard-color":"-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text","-non-standard-image-rendering":"optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast","-non-standard-overflow":"-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable","-non-standard-width":"fill-available|min-intrinsic|intrinsic|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content|-webkit-min-content|-webkit-max-content","-webkit-gradient()":"-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )","-webkit-gradient-color-stop":"from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )","-webkit-gradient-point":"[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]","-webkit-gradient-radius":"<length>|<percentage>","-webkit-gradient-type":"linear|radial","-webkit-mask-box-repeat":"repeat|stretch|round","-webkit-mask-clip-style":"border|border-box|padding|padding-box|content|content-box|text","-ms-filter-function-list":"<-ms-filter-function>+","-ms-filter-function":"<-ms-filter-function-progid>|<-ms-filter-function-legacy>","-ms-filter-function-progid":"'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]","-ms-filter-function-legacy":"<ident-token>|<function-token> <any-value>? )","-ms-filter":"<string>",age:"child|young|old","attr-name":"<wq-name>","attr-fallback":"<any-value>","bg-clip":"<box>|border|text","border-radius":"<length-percentage>{1,2}",bottom:"<length>|auto","generic-voice":"[<age>? <gender> <integer>?]",gender:"male|female|neutral","lab()":"lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","lch()":"lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )",left:"<length>|auto","mask-image":"<mask-reference>#",paint:"none|<color>|<url> [none|<color>]?|context-fill|context-stroke",ratio:"<number [0,\u221E]> [/ <number [0,\u221E]>]?","reversed-counter-name":"reversed( <counter-name> )",right:"<length>|auto","svg-length":"<percentage>|<length>|<number>","svg-writing-mode":"lr-tb|rl-tb|tb-rl|lr|rl|tb",top:"<length>|auto","track-group":"'(' [<string>* <track-minmax> <string>*]+ ')' ['[' <positive-integer> ']']?|<track-minmax>","track-list-v0":"[<string>* <track-group> <string>*]+|none","track-minmax":"minmax( <track-breadth> , <track-breadth> )|auto|<track-breadth>|fit-content",x:"<number>",y:"<number>",declaration:"<ident-token> : <declaration-value>? ['!' important]?","declaration-list":"[<declaration>? ';']* <declaration>?",url:"url( <string> <url-modifier>* )|<url-token>","url-modifier":"<ident>|<function-token> <any-value> )","number-zero-one":"<number [0,1]>","number-one-or-greater":"<number [1,\u221E]>","positive-integer":"<integer [0,\u221E]>","-non-standard-display":"-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box"},properties:{"--*":"<declaration-value>","-ms-accelerator":"false|true","-ms-block-progression":"tb|rl|bt|lr","-ms-content-zoom-chaining":"none|chained","-ms-content-zooming":"none|zoom","-ms-content-zoom-limit":"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>","-ms-content-zoom-limit-max":"<percentage>","-ms-content-zoom-limit-min":"<percentage>","-ms-content-zoom-snap":"<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>","-ms-content-zoom-snap-points":"snapInterval( <percentage> , <percentage> )|snapList( <percentage># )","-ms-content-zoom-snap-type":"none|proximity|mandatory","-ms-filter":"<string>","-ms-flow-from":"[none|<custom-ident>]#","-ms-flow-into":"[none|<custom-ident>]#","-ms-grid-columns":"none|<track-list>|<auto-track-list>","-ms-grid-rows":"none|<track-list>|<auto-track-list>","-ms-high-contrast-adjust":"auto|none","-ms-hyphenate-limit-chars":"auto|<integer>{1,3}","-ms-hyphenate-limit-lines":"no-limit|<integer>","-ms-hyphenate-limit-zone":"<percentage>|<length>","-ms-ime-align":"auto|after","-ms-overflow-style":"auto|none|scrollbar|-ms-autohiding-scrollbar","-ms-scrollbar-3dlight-color":"<color>","-ms-scrollbar-arrow-color":"<color>","-ms-scrollbar-base-color":"<color>","-ms-scrollbar-darkshadow-color":"<color>","-ms-scrollbar-face-color":"<color>","-ms-scrollbar-highlight-color":"<color>","-ms-scrollbar-shadow-color":"<color>","-ms-scrollbar-track-color":"<color>","-ms-scroll-chaining":"chained|none","-ms-scroll-limit":"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>","-ms-scroll-limit-x-max":"auto|<length>","-ms-scroll-limit-x-min":"<length>","-ms-scroll-limit-y-max":"auto|<length>","-ms-scroll-limit-y-min":"<length>","-ms-scroll-rails":"none|railed","-ms-scroll-snap-points-x":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-points-y":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-type":"none|proximity|mandatory","-ms-scroll-snap-x":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>","-ms-scroll-snap-y":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>","-ms-scroll-translation":"none|vertical-to-horizontal","-ms-text-autospace":"none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space","-ms-touch-select":"grippers|none","-ms-user-select":"none|element|text","-ms-wrap-flow":"auto|both|start|end|maximum|clear","-ms-wrap-margin":"<length>","-ms-wrap-through":"wrap|none","-moz-appearance":"none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized","-moz-binding":"<url>|none","-moz-border-bottom-colors":"<color>+|none","-moz-border-left-colors":"<color>+|none","-moz-border-right-colors":"<color>+|none","-moz-border-top-colors":"<color>+|none","-moz-context-properties":"none|[fill|fill-opacity|stroke|stroke-opacity]#","-moz-float-edge":"border-box|content-box|margin-box|padding-box","-moz-force-broken-image-icon":"0|1","-moz-image-region":"<shape>|auto","-moz-orient":"inline|block|horizontal|vertical","-moz-outline-radius":"<outline-radius>{1,4} [/ <outline-radius>{1,4}]?","-moz-outline-radius-bottomleft":"<outline-radius>","-moz-outline-radius-bottomright":"<outline-radius>","-moz-outline-radius-topleft":"<outline-radius>","-moz-outline-radius-topright":"<outline-radius>","-moz-stack-sizing":"ignore|stretch-to-fit","-moz-text-blink":"none|blink","-moz-user-focus":"ignore|normal|select-after|select-before|select-menu|select-same|select-all|none","-moz-user-input":"auto|none|enabled|disabled","-moz-user-modify":"read-only|read-write|write-only","-moz-window-dragging":"drag|no-drag","-moz-window-shadow":"default|menu|tooltip|sheet|none","-webkit-appearance":"none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button","-webkit-border-before":"<'border-width'>||<'border-style'>||<color>","-webkit-border-before-color":"<color>","-webkit-border-before-style":"<'border-style'>","-webkit-border-before-width":"<'border-width'>","-webkit-box-reflect":"[above|below|right|left]? <length>? <image>?","-webkit-line-clamp":"none|<integer>","-webkit-mask":"[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#","-webkit-mask-attachment":"<attachment>#","-webkit-mask-clip":"[<box>|border|padding|content|text]#","-webkit-mask-composite":"<composite-style>#","-webkit-mask-image":"<mask-reference>#","-webkit-mask-origin":"[<box>|border|padding|content]#","-webkit-mask-position":"<position>#","-webkit-mask-position-x":"[<length-percentage>|left|center|right]#","-webkit-mask-position-y":"[<length-percentage>|top|center|bottom]#","-webkit-mask-repeat":"<repeat-style>#","-webkit-mask-repeat-x":"repeat|no-repeat|space|round","-webkit-mask-repeat-y":"repeat|no-repeat|space|round","-webkit-mask-size":"<bg-size>#","-webkit-overflow-scrolling":"auto|touch","-webkit-tap-highlight-color":"<color>","-webkit-text-fill-color":"<color>","-webkit-text-stroke":"<length>||<color>","-webkit-text-stroke-color":"<color>","-webkit-text-stroke-width":"<length>","-webkit-touch-callout":"default|none","-webkit-user-modify":"read-only|read-write|read-write-plaintext-only","accent-color":"auto|<color>","align-content":"normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>","align-items":"normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]","align-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>","align-tracks":"[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#",all:"initial|inherit|unset|revert|revert-layer",animation:"<single-animation>#","animation-delay":"<time>#","animation-direction":"<single-animation-direction>#","animation-duration":"<time>#","animation-fill-mode":"<single-animation-fill-mode>#","animation-iteration-count":"<single-animation-iteration-count>#","animation-name":"[none|<keyframes-name>]#","animation-play-state":"<single-animation-play-state>#","animation-timing-function":"<easing-function>#","animation-timeline":"<single-animation-timeline>#",appearance:"none|auto|textfield|menulist-button|<compat-auto>","aspect-ratio":"auto|<ratio>",azimuth:"<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards","backdrop-filter":"none|<filter-function-list>","backface-visibility":"visible|hidden",background:"[<bg-layer> ,]* <final-bg-layer>","background-attachment":"<attachment>#","background-blend-mode":"<blend-mode>#","background-clip":"<bg-clip>#","background-color":"<color>","background-image":"<bg-image>#","background-origin":"<box>#","background-position":"<bg-position>#","background-position-x":"[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#","background-position-y":"[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#","background-repeat":"<repeat-style>#","background-size":"<bg-size>#","block-overflow":"clip|ellipsis|<string>","block-size":"<'width'>",border:"<line-width>||<line-style>||<color>","border-block":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-color":"<'border-top-color'>{1,2}","border-block-style":"<'border-top-style'>","border-block-width":"<'border-top-width'>","border-block-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-end-color":"<'border-top-color'>","border-block-end-style":"<'border-top-style'>","border-block-end-width":"<'border-top-width'>","border-block-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-start-color":"<'border-top-color'>","border-block-start-style":"<'border-top-style'>","border-block-start-width":"<'border-top-width'>","border-bottom":"<line-width>||<line-style>||<color>","border-bottom-color":"<'border-top-color'>","border-bottom-left-radius":"<length-percentage>{1,2}","border-bottom-right-radius":"<length-percentage>{1,2}","border-bottom-style":"<line-style>","border-bottom-width":"<line-width>","border-collapse":"collapse|separate","border-color":"<color>{1,4}","border-end-end-radius":"<length-percentage>{1,2}","border-end-start-radius":"<length-percentage>{1,2}","border-image":"<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>","border-image-outset":"[<length>|<number>]{1,4}","border-image-repeat":"[stretch|repeat|round|space]{1,2}","border-image-slice":"<number-percentage>{1,4}&&fill?","border-image-source":"none|<image>","border-image-width":"[<length-percentage>|<number>|auto]{1,4}","border-inline":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-color":"<'border-top-color'>{1,2}","border-inline-style":"<'border-top-style'>","border-inline-width":"<'border-top-width'>","border-inline-end-color":"<'border-top-color'>","border-inline-end-style":"<'border-top-style'>","border-inline-end-width":"<'border-top-width'>","border-inline-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-start-color":"<'border-top-color'>","border-inline-start-style":"<'border-top-style'>","border-inline-start-width":"<'border-top-width'>","border-left":"<line-width>||<line-style>||<color>","border-left-color":"<color>","border-left-style":"<line-style>","border-left-width":"<line-width>","border-radius":"<length-percentage>{1,4} [/ <length-percentage>{1,4}]?","border-right":"<line-width>||<line-style>||<color>","border-right-color":"<color>","border-right-style":"<line-style>","border-right-width":"<line-width>","border-spacing":"<length> <length>?","border-start-end-radius":"<length-percentage>{1,2}","border-start-start-radius":"<length-percentage>{1,2}","border-style":"<line-style>{1,4}","border-top":"<line-width>||<line-style>||<color>","border-top-color":"<color>","border-top-left-radius":"<length-percentage>{1,2}","border-top-right-radius":"<length-percentage>{1,2}","border-top-style":"<line-style>","border-top-width":"<line-width>","border-width":"<line-width>{1,4}",bottom:"<length>|<percentage>|auto","box-align":"start|center|end|baseline|stretch","box-decoration-break":"slice|clone","box-direction":"normal|reverse|inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single|multiple","box-ordinal-group":"<integer>","box-orient":"horizontal|vertical|inline-axis|block-axis|inherit","box-pack":"start|center|end|justify","box-shadow":"none|<shadow>#","box-sizing":"content-box|border-box","break-after":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-before":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-inside":"auto|avoid|avoid-page|avoid-column|avoid-region","caption-side":"top|bottom|block-start|block-end|inline-start|inline-end","caret-color":"auto|<color>",clear:"none|left|right|both|inline-start|inline-end",clip:"<shape>|auto","clip-path":"<clip-source>|[<basic-shape>||<geometry-box>]|none",color:"<color>","print-color-adjust":"economy|exact","color-scheme":"normal|[light|dark|<custom-ident>]+&&only?","column-count":"<integer>|auto","column-fill":"auto|balance|balance-all","column-gap":"normal|<length-percentage>","column-rule":"<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>","column-rule-color":"<color>","column-rule-style":"<'border-style'>","column-rule-width":"<'border-width'>","column-span":"none|all","column-width":"<length>|auto",columns:"<'column-width'>||<'column-count'>",contain:"none|strict|content|[size||layout||style||paint]",content:"normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>]+]?","content-visibility":"visible|auto|hidden","counter-increment":"[<counter-name> <integer>?]+|none","counter-reset":"[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none","counter-set":"[<counter-name> <integer>?]+|none",cursor:"[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",direction:"ltr|rtl",display:"[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>","empty-cells":"show|hide",filter:"none|<filter-function-list>|<-ms-filter-function-list>",flex:"none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]","flex-basis":"content|<'width'>","flex-direction":"row|row-reverse|column|column-reverse","flex-flow":"<'flex-direction'>||<'flex-wrap'>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap|wrap|wrap-reverse",float:"left|right|none|inline-start|inline-end",font:"[[<'font-style'>||<font-variant-css21>||<'font-weight'>||<'font-stretch'>]? <'font-size'> [/ <'line-height'>]? <'font-family'>]|caption|icon|menu|message-box|small-caption|status-bar","font-family":"[<family-name>|<generic-family>]#","font-feature-settings":"normal|<feature-tag-value>#","font-kerning":"auto|normal|none","font-language-override":"normal|<string>","font-optical-sizing":"auto|none","font-variation-settings":"normal|[<string> <number>]#","font-size":"<absolute-size>|<relative-size>|<length-percentage>","font-size-adjust":"none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]","font-smooth":"auto|never|always|<absolute-size>|<length>","font-stretch":"<font-stretch-absolute>","font-style":"normal|italic|oblique <angle>?","font-synthesis":"none|[weight||style||small-caps]","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-alternates":"normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]","font-variant-caps":"normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps","font-variant-east-asian":"normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-ligatures":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]","font-variant-numeric":"normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]","font-variant-position":"normal|sub|super","font-weight":"<font-weight-absolute>|bolder|lighter","forced-color-adjust":"auto|none",gap:"<'row-gap'> <'column-gap'>?",grid:"<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>","grid-area":"<grid-line> [/ <grid-line>]{0,3}","grid-auto-columns":"<track-size>+","grid-auto-flow":"[row|column]||dense","grid-auto-rows":"<track-size>+","grid-column":"<grid-line> [/ <grid-line>]?","grid-column-end":"<grid-line>","grid-column-gap":"<length-percentage>","grid-column-start":"<grid-line>","grid-gap":"<'grid-row-gap'> <'grid-column-gap'>?","grid-row":"<grid-line> [/ <grid-line>]?","grid-row-end":"<grid-line>","grid-row-gap":"<length-percentage>","grid-row-start":"<grid-line>","grid-template":"none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?","grid-template-areas":"none|<string>+","grid-template-columns":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","grid-template-rows":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","hanging-punctuation":"none|[first||[force-end|allow-end]||last]",height:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","hyphenate-character":"auto|<string>",hyphens:"none|manual|auto","image-orientation":"from-image|<angle>|[<angle>? flip]","image-rendering":"auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>","image-resolution":"[from-image||<resolution>]&&snap?","ime-mode":"auto|normal|active|inactive|disabled","initial-letter":"normal|[<number> <integer>?]","initial-letter-align":"[auto|alphabetic|hanging|ideographic]","inline-size":"<'width'>","input-security":"auto|none",inset:"<'top'>{1,4}","inset-block":"<'top'>{1,2}","inset-block-end":"<'top'>","inset-block-start":"<'top'>","inset-inline":"<'top'>{1,2}","inset-inline-end":"<'top'>","inset-inline-start":"<'top'>",isolation:"auto|isolate","justify-content":"normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]","justify-items":"normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]","justify-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]","justify-tracks":"[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",left:"<length>|<percentage>|auto","letter-spacing":"normal|<length-percentage>","line-break":"auto|loose|normal|strict|anywhere","line-clamp":"none|<integer>","line-height":"normal|<number>|<length>|<percentage>","line-height-step":"<length>","list-style":"<'list-style-type'>||<'list-style-position'>||<'list-style-image'>","list-style-image":"<image>|none","list-style-position":"inside|outside","list-style-type":"<counter-style>|<string>|none",margin:"[<length>|<percentage>|auto]{1,4}","margin-block":"<'margin-left'>{1,2}","margin-block-end":"<'margin-left'>","margin-block-start":"<'margin-left'>","margin-bottom":"<length>|<percentage>|auto","margin-inline":"<'margin-left'>{1,2}","margin-inline-end":"<'margin-left'>","margin-inline-start":"<'margin-left'>","margin-left":"<length>|<percentage>|auto","margin-right":"<length>|<percentage>|auto","margin-top":"<length>|<percentage>|auto","margin-trim":"none|in-flow|all",mask:"<mask-layer>#","mask-border":"<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>","mask-border-mode":"luminance|alpha","mask-border-outset":"[<length>|<number>]{1,4}","mask-border-repeat":"[stretch|repeat|round|space]{1,2}","mask-border-slice":"<number-percentage>{1,4} fill?","mask-border-source":"none|<image>","mask-border-width":"[<length-percentage>|<number>|auto]{1,4}","mask-clip":"[<geometry-box>|no-clip]#","mask-composite":"<compositing-operator>#","mask-image":"<mask-reference>#","mask-mode":"<masking-mode>#","mask-origin":"<geometry-box>#","mask-position":"<position>#","mask-repeat":"<repeat-style>#","mask-size":"<bg-size>#","mask-type":"luminance|alpha","masonry-auto-flow":"[pack|next]||[definite-first|ordered]","math-style":"normal|compact","max-block-size":"<'max-width'>","max-height":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","max-inline-size":"<'max-width'>","max-lines":"none|<integer>","max-width":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","min-block-size":"<'min-width'>","min-height":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","min-inline-size":"<'min-width'>","min-width":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","mix-blend-mode":"<blend-mode>|plus-lighter","object-fit":"fill|contain|cover|none|scale-down","object-position":"<position>",offset:"[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?","offset-anchor":"auto|<position>","offset-distance":"<length-percentage>","offset-path":"none|ray( [<angle>&&<size>&&contain?] )|<path()>|<url>|[<basic-shape>||<geometry-box>]","offset-position":"auto|<position>","offset-rotate":"[auto|reverse]||<angle>",opacity:"<alpha-value>",order:"<integer>",orphans:"<integer>",outline:"[<'outline-color'>||<'outline-style'>||<'outline-width'>]","outline-color":"<color>|invert","outline-offset":"<length>","outline-style":"auto|<'border-style'>","outline-width":"<line-width>",overflow:"[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>","overflow-anchor":"auto|none","overflow-block":"visible|hidden|clip|scroll|auto","overflow-clip-box":"padding-box|content-box","overflow-clip-margin":"<visual-box>||<length [0,\u221E]>","overflow-inline":"visible|hidden|clip|scroll|auto","overflow-wrap":"normal|break-word|anywhere","overflow-x":"visible|hidden|clip|scroll|auto","overflow-y":"visible|hidden|clip|scroll|auto","overscroll-behavior":"[contain|none|auto]{1,2}","overscroll-behavior-block":"contain|none|auto","overscroll-behavior-inline":"contain|none|auto","overscroll-behavior-x":"contain|none|auto","overscroll-behavior-y":"contain|none|auto",padding:"[<length>|<percentage>]{1,4}","padding-block":"<'padding-left'>{1,2}","padding-block-end":"<'padding-left'>","padding-block-start":"<'padding-left'>","padding-bottom":"<length>|<percentage>","padding-inline":"<'padding-left'>{1,2}","padding-inline-end":"<'padding-left'>","padding-inline-start":"<'padding-left'>","padding-left":"<length>|<percentage>","padding-right":"<length>|<percentage>","padding-top":"<length>|<percentage>","page-break-after":"auto|always|avoid|left|right|recto|verso","page-break-before":"auto|always|avoid|left|right|recto|verso","page-break-inside":"auto|avoid","paint-order":"normal|[fill||stroke||markers]",perspective:"none|<length>","perspective-origin":"<position>","place-content":"<'align-content'> <'justify-content'>?","place-items":"<'align-items'> <'justify-items'>?","place-self":"<'align-self'> <'justify-self'>?","pointer-events":"auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",position:"static|relative|absolute|sticky|fixed|-webkit-sticky",quotes:"none|auto|[<string> <string>]+",resize:"none|both|horizontal|vertical|block|inline",right:"<length>|<percentage>|auto",rotate:"none|<angle>|[x|y|z|<number>{3}]&&<angle>","row-gap":"normal|<length-percentage>","ruby-align":"start|center|space-between|space-around","ruby-merge":"separate|collapse|auto","ruby-position":"[alternate||[over|under]]|inter-character",scale:"none|<number>{1,3}","scrollbar-color":"auto|<color>{2}","scrollbar-gutter":"auto|stable&&both-edges?","scrollbar-width":"auto|thin|none","scroll-behavior":"auto|smooth","scroll-margin":"<length>{1,4}","scroll-margin-block":"<length>{1,2}","scroll-margin-block-start":"<length>","scroll-margin-block-end":"<length>","scroll-margin-bottom":"<length>","scroll-margin-inline":"<length>{1,2}","scroll-margin-inline-start":"<length>","scroll-margin-inline-end":"<length>","scroll-margin-left":"<length>","scroll-margin-right":"<length>","scroll-margin-top":"<length>","scroll-padding":"[auto|<length-percentage>]{1,4}","scroll-padding-block":"[auto|<length-percentage>]{1,2}","scroll-padding-block-start":"auto|<length-percentage>","scroll-padding-block-end":"auto|<length-percentage>","scroll-padding-bottom":"auto|<length-percentage>","scroll-padding-inline":"[auto|<length-percentage>]{1,2}","scroll-padding-inline-start":"auto|<length-percentage>","scroll-padding-inline-end":"auto|<length-percentage>","scroll-padding-left":"auto|<length-percentage>","scroll-padding-right":"auto|<length-percentage>","scroll-padding-top":"auto|<length-percentage>","scroll-snap-align":"[none|start|end|center]{1,2}","scroll-snap-coordinate":"none|<position>#","scroll-snap-destination":"<position>","scroll-snap-points-x":"none|repeat( <length-percentage> )","scroll-snap-points-y":"none|repeat( <length-percentage> )","scroll-snap-stop":"normal|always","scroll-snap-type":"none|[x|y|block|inline|both] [mandatory|proximity]?","scroll-snap-type-x":"none|mandatory|proximity","scroll-snap-type-y":"none|mandatory|proximity","shape-image-threshold":"<alpha-value>","shape-margin":"<length-percentage>","shape-outside":"none|[<shape-box>||<basic-shape>]|<image>","tab-size":"<integer>|<length>","table-layout":"auto|fixed","text-align":"start|end|left|right|center|justify|match-parent","text-align-last":"auto|start|end|left|right|center|justify","text-combine-upright":"none|all|[digits <integer>?]","text-decoration":"<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>","text-decoration-color":"<color>","text-decoration-line":"none|[underline||overline||line-through||blink]|spelling-error|grammar-error","text-decoration-skip":"none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]","text-decoration-skip-ink":"auto|all|none","text-decoration-style":"solid|double|dotted|dashed|wavy","text-decoration-thickness":"auto|from-font|<length>|<percentage>","text-emphasis":"<'text-emphasis-style'>||<'text-emphasis-color'>","text-emphasis-color":"<color>","text-emphasis-position":"[over|under]&&[right|left]","text-emphasis-style":"none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>","text-indent":"<length-percentage>&&hanging?&&each-line?","text-justify":"auto|inter-character|inter-word|none","text-orientation":"mixed|upright|sideways","text-overflow":"[clip|ellipsis|<string>]{1,2}","text-rendering":"auto|optimizeSpeed|optimizeLegibility|geometricPrecision","text-shadow":"none|<shadow-t>#","text-size-adjust":"none|auto|<percentage>","text-transform":"none|capitalize|uppercase|lowercase|full-width|full-size-kana","text-underline-offset":"auto|<length>|<percentage>","text-underline-position":"auto|from-font|[under||[left|right]]",top:"<length>|<percentage>|auto","touch-action":"auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",transform:"none|<transform-list>","transform-box":"content-box|border-box|fill-box|stroke-box|view-box","transform-origin":"[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?","transform-style":"flat|preserve-3d",transition:"<single-transition>#","transition-delay":"<time>#","transition-duration":"<time>#","transition-property":"none|<single-transition-property>#","transition-timing-function":"<easing-function>#",translate:"none|<length-percentage> [<length-percentage> <length>?]?","unicode-bidi":"normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext","user-select":"auto|text|none|contain|all","vertical-align":"baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>",visibility:"visible|hidden|collapse","white-space":"normal|pre|nowrap|pre-wrap|pre-line|break-spaces",widows:"<integer>",width:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|fill|stretch|intrinsic|-moz-max-content|-webkit-max-content|-moz-fit-content|-webkit-fit-content","will-change":"auto|<animateable-feature>#","word-break":"normal|break-all|keep-all|break-word","word-spacing":"normal|<length>","word-wrap":"normal|break-word","writing-mode":"horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>","z-index":"auto|<integer>",zoom:"normal|reset|<number>|<percentage>","-moz-background-clip":"padding|border","-moz-border-radius-bottomleft":"<'border-bottom-left-radius'>","-moz-border-radius-bottomright":"<'border-bottom-right-radius'>","-moz-border-radius-topleft":"<'border-top-left-radius'>","-moz-border-radius-topright":"<'border-bottom-right-radius'>","-moz-control-character-visibility":"visible|hidden","-moz-osx-font-smoothing":"auto|grayscale","-moz-user-select":"none|text|all|-moz-none","-ms-flex-align":"start|end|center|baseline|stretch","-ms-flex-item-align":"auto|start|end|center|baseline|stretch","-ms-flex-line-pack":"start|end|center|justify|distribute|stretch","-ms-flex-negative":"<'flex-shrink'>","-ms-flex-pack":"start|end|center|justify|distribute","-ms-flex-order":"<integer>","-ms-flex-positive":"<'flex-grow'>","-ms-flex-preferred-size":"<'flex-basis'>","-ms-interpolation-mode":"nearest-neighbor|bicubic","-ms-grid-column-align":"start|end|center|stretch","-ms-grid-row-align":"start|end|center|stretch","-ms-hyphenate-limit-last":"none|always|column|page|spread","-webkit-background-clip":"[<box>|border|padding|content|text]#","-webkit-column-break-after":"always|auto|avoid","-webkit-column-break-before":"always|auto|avoid","-webkit-column-break-inside":"always|auto|avoid","-webkit-font-smoothing":"auto|none|antialiased|subpixel-antialiased","-webkit-mask-box-image":"[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?","-webkit-print-color-adjust":"economy|exact","-webkit-text-security":"none|circle|disc|square","-webkit-user-drag":"none|element|auto","-webkit-user-select":"auto|none|text|all","alignment-baseline":"auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical","baseline-shift":"baseline|sub|super|<svg-length>",behavior:"<url>+","clip-rule":"nonzero|evenodd",cue:"<'cue-before'> <'cue-after'>?","cue-after":"<url> <decibel>?|none","cue-before":"<url> <decibel>?|none","dominant-baseline":"auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge",fill:"<paint>","fill-opacity":"<number-zero-one>","fill-rule":"nonzero|evenodd","glyph-orientation-horizontal":"<angle>","glyph-orientation-vertical":"<angle>",kerning:"auto|<svg-length>",marker:"none|<url>","marker-end":"none|<url>","marker-mid":"none|<url>","marker-start":"none|<url>",pause:"<'pause-before'> <'pause-after'>?","pause-after":"<time>|none|x-weak|weak|medium|strong|x-strong","pause-before":"<time>|none|x-weak|weak|medium|strong|x-strong",rest:"<'rest-before'> <'rest-after'>?","rest-after":"<time>|none|x-weak|weak|medium|strong|x-strong","rest-before":"<time>|none|x-weak|weak|medium|strong|x-strong","shape-rendering":"auto|optimizeSpeed|crispEdges|geometricPrecision",src:"[<url> [format( <string># )]?|local( <family-name> )]#",speak:"auto|none|normal","speak-as":"normal|spell-out||digits||[literal-punctuation|no-punctuation]",stroke:"<paint>","stroke-dasharray":"none|[<svg-length>+]#","stroke-dashoffset":"<svg-length>","stroke-linecap":"butt|round|square","stroke-linejoin":"miter|round|bevel","stroke-miterlimit":"<number-one-or-greater>","stroke-opacity":"<number-zero-one>","stroke-width":"<svg-length>","text-anchor":"start|middle|end","unicode-range":"<urange>#","voice-balance":"<number>|left|center|right|leftwards|rightwards","voice-duration":"auto|<time>","voice-family":"[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve","voice-pitch":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-range":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-rate":"[normal|x-slow|slow|medium|fast|x-fast]||<percentage>","voice-stress":"normal|strong|moderate|none|reduced","voice-volume":"silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]"},atrules:{charset:{prelude:"<string>",descriptors:null},"counter-style":{prelude:"<counter-style-name>",descriptors:{"additive-symbols":"[<integer>&&<symbol>]#",fallback:"<counter-style-name>",negative:"<symbol> <symbol>?",pad:"<integer>&&<symbol>",prefix:"<symbol>",range:"[[<integer>|infinite]{2}]#|auto","speak-as":"auto|bullets|numbers|words|spell-out|<counter-style-name>",suffix:"<symbol>",symbols:"<symbol>+",system:"cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"}},document:{prelude:"[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",descriptors:null},"font-face":{prelude:null,descriptors:{"ascent-override":"normal|<percentage>","descent-override":"normal|<percentage>","font-display":"[auto|block|swap|fallback|optional]","font-family":"<family-name>","font-feature-settings":"normal|<feature-tag-value>#","font-variation-settings":"normal|[<string> <number>]#","font-stretch":"<font-stretch-absolute>{1,2}","font-style":"normal|italic|oblique <angle>{0,2}","font-weight":"<font-weight-absolute>{1,2}","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","line-gap-override":"normal|<percentage>","size-adjust":"<percentage>",src:"[<url> [format( <string># )]?|local( <family-name> )]#","unicode-range":"<urange>#"}},"font-feature-values":{prelude:"<family-name>#",descriptors:null},import:{prelude:"[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?",descriptors:null},keyframes:{prelude:"<keyframes-name>",descriptors:null},layer:{prelude:"[<layer-name>#|<layer-name>?]",descriptors:null},media:{prelude:"<media-query-list>",descriptors:null},namespace:{prelude:"<namespace-prefix>? [<string>|<url>]",descriptors:null},page:{prelude:"<page-selector-list>",descriptors:{bleed:"auto|<length>",marks:"none|[crop||cross]",size:"<length>{1,2}|auto|[<page-size>||[portrait|landscape]]"}},property:{prelude:"<custom-property-name>",descriptors:{syntax:"<string>",inherits:"true|false","initial-value":"<string>"}},"scroll-timeline":{prelude:"<timeline-name>",descriptors:null},supports:{prelude:"<supports-condition>",descriptors:null},viewport:{prelude:null,descriptors:{height:"<viewport-length>{1,2}","max-height":"<viewport-length>","max-width":"<viewport-length>","max-zoom":"auto|<number>|<percentage>","min-height":"<viewport-length>","min-width":"<viewport-length>","min-zoom":"auto|<number>|<percentage>",orientation:"auto|portrait|landscape","user-zoom":"zoom|fixed","viewport-fit":"auto|contain|cover",width:"<viewport-length>{1,2}",zoom:"auto|<number>|<percentage>"}}}};var bt={};b(bt,{AnPlusB:()=>Jr,Atrule:()=>tn,AtrulePrelude:()=>nn,AttributeSelector:()=>sn,Block:()=>cn,Brackets:()=>pn,CDC:()=>mn,CDO:()=>dn,ClassSelector:()=>bn,Combinator:()=>yn,Comment:()=>wn,Declaration:()=>Sn,DeclarationList:()=>An,Dimension:()=>En,Function:()=>Pn,Hash:()=>Dn,IdSelector:()=>Mn,Identifier:()=>Nn,MediaFeature:()=>Fn,MediaQuery:()=>_n,MediaQueryList:()=>jn,Nth:()=>qn,Number:()=>Yn,Operator:()=>Vn,Parentheses:()=>Qn,Percentage:()=>$n,PseudoClassSelector:()=>Jn,PseudoElementSelector:()=>to,Ratio:()=>no,Raw:()=>io,Rule:()=>so,Selector:()=>co,SelectorList:()=>po,String:()=>bo,StyleSheet:()=>yo,TypeSelector:()=>vo,UnicodeRange:()=>Ao,Url:()=>Do,Value:()=>No,WhiteSpace:()=>Mo});var Jr={};b(Jr,{generate:()=>gc,name:()=>fc,parse:()=>Zr,structure:()=>dc});var me=43,re=45,Zt=110,Ie=!0,mc=!1;function Jt(e,t){let r=this.tokenStart+e,n=this.charCodeAt(r);for((n===me||n===re)&&(t&&this.error("Number sign is not allowed"),r++);r<this.tokenEnd;r++)B(this.charCodeAt(r))||this.error("Integer is expected",r)}function Xe(e){return Jt.call(this,0,e)}function Ce(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let r="";switch(t){case Zt:r="N is expected";break;case re:r="HyphenMinus is expected";break}this.error(r,this.tokenStart+e)}}function $r(){let e=0,t=0,r=this.tokenType;for(;r===13||r===25;)r=this.lookupType(++e);if(r!==10)if(this.isDelim(me,e)||this.isDelim(re,e)){t=this.isDelim(me,e)?me:re;do r=this.lookupType(++e);while(r===13||r===25);r!==10&&(this.skip(e),Xe.call(this,Ie))}else return null;return e>0&&this.skip(e),t===0&&(r=this.charCodeAt(this.tokenStart),r!==me&&r!==re&&this.error("Number sign is expected")),Xe.call(this,t!==0),t===re?"-"+this.consume(10):this.consume(10)}var fc="AnPlusB",dc={a:[String,null],b:[String,null]};function Zr(){let e=this.tokenStart,t=null,r=null;if(this.tokenType===10)Xe.call(this,mc),r=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,re))switch(t="-1",Ce.call(this,1,Zt),this.tokenEnd-this.tokenStart){case 2:this.next(),r=$r.call(this);break;case 3:Ce.call(this,2,re),this.next(),this.skipSC(),Xe.call(this,Ie),r="-"+this.consume(10);break;default:Ce.call(this,2,re),Jt.call(this,3,Ie),this.next(),r=this.substrToCursor(e+2)}else if(this.tokenType===1||this.isDelim(me)&&this.lookupType(1)===1){let n=0;switch(t="1",this.isDelim(me)&&(n=1,this.next()),Ce.call(this,0,Zt),this.tokenEnd-this.tokenStart){case 1:this.next(),r=$r.call(this);break;case 2:Ce.call(this,1,re),this.next(),this.skipSC(),Xe.call(this,Ie),r="-"+this.consume(10);break;default:Ce.call(this,1,re),Jt.call(this,2,Ie),this.next(),r=this.substrToCursor(e+n+1)}}else if(this.tokenType===12){let n=this.charCodeAt(this.tokenStart),o=n===me||n===re,i=this.tokenStart+o;for(;i<this.tokenEnd&&B(this.charCodeAt(i));i++);i===this.tokenStart+o&&this.error("Integer is expected",this.tokenStart+o),Ce.call(this,i-this.tokenStart,Zt),t=this.substring(e,i),i+1===this.tokenEnd?(this.next(),r=$r.call(this)):(Ce.call(this,i-this.tokenStart+1,re),i+2===this.tokenEnd?(this.next(),this.skipSC(),Xe.call(this,Ie),r="-"+this.consume(10)):(Jt.call(this,i-this.tokenStart+2,Ie),this.next(),r=this.substrToCursor(i+1)))}else this.error();return t!==null&&t.charCodeAt(0)===me&&(t=t.substr(1)),r!==null&&r.charCodeAt(0)===me&&(r=r.substr(1)),{type:"AnPlusB",loc:this.getLocation(e,this.tokenStart),a:t,b:r}}function gc(e){if(e.a){let t=e.a==="+1"&&"n"||e.a==="1"&&"n"||e.a==="-1"&&"-n"||e.a+"n";if(e.b){let r=e.b[0]==="-"||e.b[0]==="+"?e.b:"+"+e.b;this.tokenize(t+r)}else this.tokenize(t)}else this.tokenize(e.b)}var tn={};b(tn,{generate:()=>wc,name:()=>xc,parse:()=>en,structure:()=>kc,walkContext:()=>yc});function ga(e){return this.Raw(e,this.consumeUntilLeftCurlyBracketOrSemicolon,!0)}function bc(){for(let e=1,t;t=this.lookupType(e);e++){if(t===24)return!0;if(t===23||t===3)return!1}return!1}var xc="Atrule",yc="atrule",kc={name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]};function en(){let e=this.tokenStart,t,r,n=null,o=null;switch(this.eat(3),t=this.substrToCursor(e+1),r=t.toLowerCase(),this.skipSC(),this.eof===!1&&this.tokenType!==23&&this.tokenType!==17&&(this.parseAtrulePrelude?n=this.parseWithFallback(this.AtrulePrelude.bind(this,t),ga):n=ga.call(this,this.tokenIndex),this.skipSC()),this.tokenType){case 17:this.next();break;case 23:hasOwnProperty.call(this.atrule,r)&&typeof this.atrule[r].block=="function"?o=this.atrule[r].block.call(this):o=this.Block(bc.call(this));break}return{type:"Atrule",loc:this.getLocation(e,this.tokenStart),name:t,prelude:n,block:o}}function wc(e){this.token(3,"@"+e.name),e.prelude!==null&&this.node(e.prelude),e.block?this.node(e.block):this.token(17,";")}var nn={};b(nn,{generate:()=>Ac,name:()=>vc,parse:()=>rn,structure:()=>Cc,walkContext:()=>Sc});var vc="AtrulePrelude",Sc="atrulePrelude",Cc={children:[[]]};function rn(e){let t=null;return e!==null&&(e=e.toLowerCase()),this.skipSC(),hasOwnProperty.call(this.atrule,e)&&typeof this.atrule[e].prelude=="function"?t=this.atrule[e].prelude.call(this):t=this.readSequence(this.scope.AtrulePrelude),this.skipSC(),this.eof!==!0&&this.tokenType!==23&&this.tokenType!==17&&this.error("Semicolon or block is expected"),{type:"AtrulePrelude",loc:this.getLocationFromList(t),children:t}}function Ac(e){this.children(e)}var sn={};b(sn,{generate:()=>Nc,name:()=>Dc,parse:()=>an,structure:()=>Oc});var Tc=36,ba=42,er=61,Ec=94,on=124,Lc=126;function Pc(){this.eof&&this.error("Unexpected end of input");let e=this.tokenStart,t=!1;return this.isDelim(ba)?(t=!0,this.next()):this.isDelim(on)||this.eat(1),this.isDelim(on)?this.charCodeAt(this.tokenStart+1)!==er?(this.next(),this.eat(1)):t&&this.error("Identifier is expected",this.tokenEnd):t&&this.error("Vertical line is expected"),{type:"Identifier",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function Ic(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==er&&t!==Lc&&t!==Ec&&t!==Tc&&t!==ba&&t!==on&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.next(),t!==er&&(this.isDelim(er)||this.error("Equal sign is expected"),this.next()),this.substrToCursor(e)}var Dc="AttributeSelector",Oc={name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]};function an(){let e=this.tokenStart,t,r=null,n=null,o=null;return this.eat(19),this.skipSC(),t=Pc.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(r=Ic.call(this),this.skipSC(),n=this.tokenType===5?this.String():this.Identifier(),this.skipSC()),this.tokenType===1&&(o=this.consume(1),this.skipSC())),this.eat(20),{type:"AttributeSelector",loc:this.getLocation(e,this.tokenStart),name:t,matcher:r,value:n,flags:o}}function Nc(e){this.token(9,"["),this.node(e.name),e.matcher!==null&&(this.tokenize(e.matcher),this.node(e.value)),e.flags!==null&&this.token(1,e.flags),this.token(9,"]")}var cn={};b(cn,{generate:()=>_c,name:()=>Rc,parse:()=>ln,structure:()=>Bc,walkContext:()=>Fc});function ya(e){return this.Raw(e,null,!0)}function zc(){return this.parseWithFallback(this.Rule,ya)}function xa(e){return this.Raw(e,this.consumeUntilSemicolonIncluded,!0)}function Mc(){if(this.tokenType===17)return xa.call(this,this.tokenIndex);let e=this.parseWithFallback(this.Declaration,xa);return this.tokenType===17&&this.next(),e}var Rc="Block",Fc="block",Bc={children:[["Atrule","Rule","Declaration"]]};function ln(e){let t=e?Mc:zc,r=this.tokenStart,n=this.createList();this.eat(23);e:for(;!this.eof;)switch(this.tokenType){case 24:break e;case 13:case 25:this.next();break;case 3:n.push(this.parseWithFallback(this.Atrule,ya));break;default:n.push(t.call(this))}return this.eof||this.eat(24),{type:"Block",loc:this.getLocation(r,this.tokenStart),children:n}}function _c(e){this.token(23,"{"),this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")}),this.token(24,"}")}var pn={};b(pn,{generate:()=>Hc,name:()=>Uc,parse:()=>un,structure:()=>jc});var Uc="Brackets",jc={children:[[]]};function un(e,t){let r=this.tokenStart,n=null;return this.eat(19),n=e.call(this,t),this.eof||this.eat(20),{type:"Brackets",loc:this.getLocation(r,this.tokenStart),children:n}}function Hc(e){this.token(9,"["),this.children(e),this.token(9,"]")}var mn={};b(mn,{generate:()=>Yc,name:()=>qc,parse:()=>hn,structure:()=>Wc});var qc="CDC",Wc=[];function hn(){let e=this.tokenStart;return this.eat(15),{type:"CDC",loc:this.getLocation(e,this.tokenStart)}}function Yc(){this.token(15,"-->")}var dn={};b(dn,{generate:()=>Kc,name:()=>Gc,parse:()=>fn,structure:()=>Vc});var Gc="CDO",Vc=[];function fn(){let e=this.tokenStart;return this.eat(14),{type:"CDO",loc:this.getLocation(e,this.tokenStart)}}function Kc(){this.token(14,"<!--")}var bn={};b(bn,{generate:()=>Zc,name:()=>Xc,parse:()=>gn,structure:()=>$c});var Qc=46,Xc="ClassSelector",$c={name:String};function gn(){return this.eatDelim(Qc),{type:"ClassSelector",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function Zc(e){this.token(9,"."),this.token(1,e.name)}var yn={};b(yn,{generate:()=>ou,name:()=>ru,parse:()=>xn,structure:()=>nu});var Jc=43,ka=47,eu=62,tu=126,ru="Combinator",nu={name:String};function xn(){let e=this.tokenStart,t;switch(this.tokenType){case 13:t=" ";break;case 9:switch(this.charCodeAt(this.tokenStart)){case eu:case Jc:case tu:this.next();break;case ka:this.next(),this.eatIdent("deep"),this.eatDelim(ka);break;default:this.error("Combinator is expected")}t=this.substrToCursor(e);break}return{type:"Combinator",loc:this.getLocation(e,this.tokenStart),name:t}}function ou(e){this.tokenize(e.name)}var wn={};b(wn,{generate:()=>cu,name:()=>su,parse:()=>kn,structure:()=>lu});var iu=42,au=47,su="Comment",lu={value:String};function kn(){let e=this.tokenStart,t=this.tokenEnd;return this.eat(25),t-e+2>=2&&this.charCodeAt(t-2)===iu&&this.charCodeAt(t-1)===au&&(t-=2),{type:"Comment",loc:this.getLocation(e,this.tokenStart),value:this.substring(e+2,t)}}function cu(e){this.token(25,"/*"+e.value+"*/")}var Sn={};b(Sn,{generate:()=>wu,name:()=>xu,parse:()=>vn,structure:()=>ku,walkContext:()=>yu});var va=33,uu=35,pu=36,hu=38,mu=42,fu=43,wa=47;function du(e){return this.Raw(e,this.consumeUntilExclamationMarkOrSemicolon,!0)}function gu(e){return this.Raw(e,this.consumeUntilExclamationMarkOrSemicolon,!1)}function bu(){let e=this.tokenIndex,t=this.Value();return t.type!=="Raw"&&this.eof===!1&&this.tokenType!==17&&this.isDelim(va)===!1&&this.isBalanceEdge(e)===!1&&this.error(),t}var xu="Declaration",yu="declaration",ku={important:[Boolean,String],property:String,value:["Value","Raw"]};function vn(){let e=this.tokenStart,t=this.tokenIndex,r=vu.call(this),n=Rt(r),o=n?this.parseCustomProperty:this.parseValue,i=n?gu:du,s=!1,u;this.skipSC(),this.eat(16);let c=this.tokenIndex;if(n||this.skipSC(),o?u=this.parseWithFallback(bu,i):u=i.call(this,this.tokenIndex),n&&u.type==="Value"&&u.children.isEmpty){for(let a=c-this.tokenIndex;a<=0;a++)if(this.lookupType(a)===13){u.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}return this.isDelim(va)&&(s=Su.call(this),this.skipSC()),this.eof===!1&&this.tokenType!==17&&this.isBalanceEdge(t)===!1&&this.error(),{type:"Declaration",loc:this.getLocation(e,this.tokenStart),important:s,property:r,value:u}}function wu(e){this.token(1,e.property),this.token(16,":"),this.node(e.value),e.important&&(this.token(9,"!"),this.token(1,e.important===!0?"important":e.important))}function vu(){let e=this.tokenStart;if(this.tokenType===9)switch(this.charCodeAt(this.tokenStart)){case mu:case pu:case fu:case uu:case hu:this.next();break;case wa:this.next(),this.isDelim(wa)&&this.next();break}return this.tokenType===4?this.eat(4):this.eat(1),this.substrToCursor(e)}function Su(){this.eat(9),this.skipSC();let e=this.consume(1);return e==="important"?!0:e}var An={};b(An,{generate:()=>Eu,name:()=>Au,parse:()=>Cn,structure:()=>Tu});function Cu(e){return this.Raw(e,this.consumeUntilSemicolonIncluded,!0)}var Au="DeclarationList",Tu={children:[["Declaration"]]};function Cn(){let e=this.createList();e:for(;!this.eof;)switch(this.tokenType){case 13:case 25:case 17:this.next();break;default:e.push(this.parseWithFallback(this.Declaration,Cu))}return{type:"DeclarationList",loc:this.getLocationFromList(e),children:e}}function Eu(e){this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")})}var En={};b(En,{generate:()=>Iu,name:()=>Lu,parse:()=>Tn,structure:()=>Pu});var Lu="Dimension",Pu={value:String,unit:String};function Tn(){let e=this.tokenStart,t=this.consumeNumber(12);return{type:"Dimension",loc:this.getLocation(e,this.tokenStart),value:t,unit:this.substring(e+t.length,this.tokenStart)}}function Iu(e){this.token(12,e.value+e.unit)}var Pn={};b(Pn,{generate:()=>zu,name:()=>Du,parse:()=>Ln,structure:()=>Nu,walkContext:()=>Ou});var Du="Function",Ou="function",Nu={name:String,children:[[]]};function Ln(e,t){let r=this.tokenStart,n=this.consumeFunctionName(),o=n.toLowerCase(),i;return i=t.hasOwnProperty(o)?t[o].call(this,t):e.call(this,t),this.eof||this.eat(22),{type:"Function",loc:this.getLocation(r,this.tokenStart),name:n,children:i}}function zu(e){this.token(2,e.name+"("),this.children(e),this.token(22,")")}var Dn={};b(Dn,{generate:()=>Bu,name:()=>Ru,parse:()=>In,structure:()=>Fu,xxx:()=>Mu});var Mu="XXX",Ru="Hash",Fu={value:String};function In(){let e=this.tokenStart;return this.eat(4),{type:"Hash",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e+1)}}function Bu(e){this.token(4,"#"+e.value)}var Nn={};b(Nn,{generate:()=>ju,name:()=>_u,parse:()=>On,structure:()=>Uu});var _u="Identifier",Uu={name:String};function On(){return{type:"Identifier",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function ju(e){this.token(1,e.name)}var Mn={};b(Mn,{generate:()=>Wu,name:()=>Hu,parse:()=>zn,structure:()=>qu});var Hu="IdSelector",qu={name:String};function zn(){let e=this.tokenStart;return this.eat(4),{type:"IdSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function Wu(e){this.token(9,"#"+e.name)}var Fn={};b(Fn,{generate:()=>Vu,name:()=>Yu,parse:()=>Rn,structure:()=>Gu});var Yu="MediaFeature",Gu={name:String,value:["Identifier","Number","Dimension","Ratio",null]};function Rn(){let e=this.tokenStart,t,r=null;if(this.eat(21),this.skipSC(),t=this.consume(1),this.skipSC(),this.tokenType!==22){switch(this.eat(16),this.skipSC(),this.tokenType){case 10:this.lookupNonWSType(1)===9?r=this.Ratio():r=this.Number();break;case 12:r=this.Dimension();break;case 1:r=this.Identifier();break;default:this.error("Number, dimension, ratio or identifier is expected")}this.skipSC()}return this.eat(22),{type:"MediaFeature",loc:this.getLocation(e,this.tokenStart),name:t,value:r}}function Vu(e){this.token(21,"("),this.token(1,e.name),e.value!==null&&(this.token(16,":"),this.node(e.value)),this.token(22,")")}var _n={};b(_n,{generate:()=>Xu,name:()=>Ku,parse:()=>Bn,structure:()=>Qu});var Ku="MediaQuery",Qu={children:[["Identifier","MediaFeature","WhiteSpace"]]};function Bn(){let e=this.createList(),t=null;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 1:t=this.Identifier();break;case 21:t=this.MediaFeature();break;default:break e}e.push(t)}return t===null&&this.error("Identifier or parenthesis is expected"),{type:"MediaQuery",loc:this.getLocationFromList(e),children:e}}function Xu(e){this.children(e)}var jn={};b(jn,{generate:()=>Ju,name:()=>$u,parse:()=>Un,structure:()=>Zu});var $u="MediaQueryList",Zu={children:[["MediaQuery"]]};function Un(){let e=this.createList();for(this.skipSC();!this.eof&&(e.push(this.MediaQuery()),this.tokenType===18);)this.next();return{type:"MediaQueryList",loc:this.getLocationFromList(e),children:e}}function Ju(e){this.children(e,()=>this.token(18,","))}var qn={};b(qn,{generate:()=>rp,name:()=>ep,parse:()=>Hn,structure:()=>tp});var ep="Nth",tp={nth:["AnPlusB","Identifier"],selector:["SelectorList",null]};function Hn(){this.skipSC();let e=this.tokenStart,t=e,r=null,n;return this.lookupValue(0,"odd")||this.lookupValue(0,"even")?n=this.Identifier():n=this.AnPlusB(),t=this.tokenStart,this.skipSC(),this.lookupValue(0,"of")&&(this.next(),r=this.SelectorList(),t=this.tokenStart),{type:"Nth",loc:this.getLocation(e,t),nth:n,selector:r}}function rp(e){this.node(e.nth),e.selector!==null&&(this.token(1,"of"),this.node(e.selector))}var Yn={};b(Yn,{generate:()=>ip,name:()=>np,parse:()=>Wn,structure:()=>op});var np="Number",op={value:String};function Wn(){return{type:"Number",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consume(10)}}function ip(e){this.token(10,e.value)}var Vn={};b(Vn,{generate:()=>lp,name:()=>ap,parse:()=>Gn,structure:()=>sp});var ap="Operator",sp={value:String};function Gn(){let e=this.tokenStart;return this.next(),{type:"Operator",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function lp(e){this.tokenize(e.value)}var Qn={};b(Qn,{generate:()=>pp,name:()=>cp,parse:()=>Kn,structure:()=>up});var cp="Parentheses",up={children:[[]]};function Kn(e,t){let r=this.tokenStart,n=null;return this.eat(21),n=e.call(this,t),this.eof||this.eat(22),{type:"Parentheses",loc:this.getLocation(r,this.tokenStart),children:n}}function pp(e){this.token(21,"("),this.children(e),this.token(22,")")}var $n={};b($n,{generate:()=>fp,name:()=>hp,parse:()=>Xn,structure:()=>mp});var hp="Percentage",mp={value:String};function Xn(){return{type:"Percentage",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function fp(e){this.token(11,e.value+"%")}var Jn={};b(Jn,{generate:()=>xp,name:()=>dp,parse:()=>Zn,structure:()=>bp,walkContext:()=>gp});var dp="PseudoClassSelector",gp="function",bp={name:String,children:[["Raw"],null]};function Zn(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):r=this.consume(1),{type:"PseudoClassSelector",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function xp(e){this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var to={};b(to,{generate:()=>vp,name:()=>yp,parse:()=>eo,structure:()=>wp,walkContext:()=>kp});var yp="PseudoElementSelector",kp="function",wp={name:String,children:[["Raw"],null]};function eo(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):r=this.consume(1),{type:"PseudoElementSelector",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function vp(e){this.token(16,":"),this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var no={};b(no,{generate:()=>Ep,name:()=>Ap,parse:()=>ro,structure:()=>Tp});var Sp=47,Cp=46;function Sa(){this.skipSC();let e=this.consume(10);for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);!B(r)&&r!==Cp&&this.error("Unsigned number is expected",this.tokenStart-e.length+t)}return Number(e)===0&&this.error("Zero number is not allowed",this.tokenStart-e.length),e}var Ap="Ratio",Tp={left:String,right:String};function ro(){let e=this.tokenStart,t=Sa.call(this),r;return this.skipSC(),this.eatDelim(Sp),r=Sa.call(this),{type:"Ratio",loc:this.getLocation(e,this.tokenStart),left:t,right:r}}function Ep(e){this.token(10,e.left),this.token(9,"/"),this.token(10,e.right)}var io={};b(io,{generate:()=>Dp,name:()=>Pp,parse:()=>oo,structure:()=>Ip});function Lp(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}var Pp="Raw",Ip={value:String};function oo(e,t,r){let n=this.getTokenStart(e),o;return this.skipUntilBalanced(e,t||this.consumeUntilBalanceEnd),r&&this.tokenStart>n?o=Lp.call(this):o=this.tokenStart,{type:"Raw",loc:this.getLocation(n,o),value:this.substring(n,o)}}function Dp(e){this.tokenize(e.value)}var so={};b(so,{generate:()=>Rp,name:()=>Np,parse:()=>ao,structure:()=>Mp,walkContext:()=>zp});function Ca(e){return this.Raw(e,this.consumeUntilLeftCurlyBracket,!0)}function Op(){let e=this.SelectorList();return e.type!=="Raw"&&this.eof===!1&&this.tokenType!==23&&this.error(),e}var Np="Rule",zp="rule",Mp={prelude:["SelectorList","Raw"],block:["Block"]};function ao(){let e=this.tokenIndex,t=this.tokenStart,r,n;return this.parseRulePrelude?r=this.parseWithFallback(Op,Ca):r=Ca.call(this,e),n=this.Block(!0),{type:"Rule",loc:this.getLocation(t,this.tokenStart),prelude:r,block:n}}function Rp(e){this.node(e.prelude),this.node(e.block)}var co={};b(co,{generate:()=>_p,name:()=>Fp,parse:()=>lo,structure:()=>Bp});var Fp="Selector",Bp={children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator","WhiteSpace"]]};function lo(){let e=this.readSequence(this.scope.Selector);return this.getFirstListNode(e)===null&&this.error("Selector is expected"),{type:"Selector",loc:this.getLocationFromList(e),children:e}}function _p(e){this.children(e)}var po={};b(po,{generate:()=>qp,name:()=>Up,parse:()=>uo,structure:()=>Hp,walkContext:()=>jp});var Up="SelectorList",jp="selector",Hp={children:[["Selector","Raw"]]};function uo(){let e=this.createList();for(;!this.eof;){if(e.push(this.Selector()),this.tokenType===18){this.next();continue}break}return{type:"SelectorList",loc:this.getLocationFromList(e),children:e}}function qp(e){this.children(e,()=>this.token(18,","))}var bo={};b(bo,{generate:()=>Gp,name:()=>Wp,parse:()=>go,structure:()=>Yp});var fo={};b(fo,{decode:()=>dt,encode:()=>mo});var ho=92,Aa=34,Ta=39;function dt(e){let t=e.length,r=e.charCodeAt(0),n=r===Aa||r===Ta?1:0,o=n===1&&t>1&&e.charCodeAt(t-1)===r?t-2:t-1,i="";for(let s=n;s<=o;s++){let u=e.charCodeAt(s);if(u===ho){if(s===o){s!==t-1&&(i=e.substr(s+1));break}if(u=e.charCodeAt(++s),$(ho,u)){let c=s-1,a=se(e,c);s=a-1,i+=Re(e.substring(c+1,a))}else u===13&&e.charCodeAt(s+1)===10&&s++}else i+=e[s]}return i}function mo(e,t){let r=t?"'":'"',n=t?Ta:Aa,o="",i=!1;for(let s=0;s<e.length;s++){let u=e.charCodeAt(s);if(u===0){o+="\uFFFD";continue}if(u<=31||u===127){o+="\\"+u.toString(16),i=!0;continue}u===n||u===ho?(o+="\\"+e.charAt(s),i=!1):(i&&(ee(u)||pe(u))&&(o+=" "),o+=e.charAt(s),i=!1)}return r+o+r}var Wp="String",Yp={value:String};function go(){return{type:"String",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:dt(this.consume(5))}}function Gp(e){this.token(5,mo(e.value))}var yo={};b(yo,{generate:()=>$p,name:()=>Kp,parse:()=>xo,structure:()=>Xp,walkContext:()=>Qp});var Vp=33;function Ea(e){return this.Raw(e,null,!1)}var Kp="StyleSheet",Qp="stylesheet",Xp={children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]};function xo(){let e=this.tokenStart,t=this.createList(),r;e:for(;!this.eof;){switch(this.tokenType){case 13:this.next();continue;case 25:if(this.charCodeAt(this.tokenStart+2)!==Vp){this.next();continue}r=this.Comment();break;case 14:r=this.CDO();break;case 15:r=this.CDC();break;case 3:r=this.parseWithFallback(this.Atrule,Ea);break;default:r=this.parseWithFallback(this.Rule,Ea)}t.push(r)}return{type:"StyleSheet",loc:this.getLocation(e,this.tokenStart),children:t}}function $p(e){this.children(e)}var vo={};b(vo,{generate:()=>th,name:()=>Jp,parse:()=>wo,structure:()=>eh});var Zp=42,La=124;function ko(){this.tokenType!==1&&this.isDelim(Zp)===!1&&this.error("Identifier or asterisk is expected"),this.next()}var Jp="TypeSelector",eh={name:String};function wo(){let e=this.tokenStart;return this.isDelim(La)?(this.next(),ko.call(this)):(ko.call(this),this.isDelim(La)&&(this.next(),ko.call(this))),{type:"TypeSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function th(e){this.tokenize(e.name)}var Ao={};b(Ao,{generate:()=>ah,name:()=>oh,parse:()=>Co,structure:()=>ih});var Pa=43,Ia=45,So=63;function gt(e,t){let r=0;for(let n=this.tokenStart+e;n<this.tokenEnd;n++){let o=this.charCodeAt(n);if(o===Ia&&t&&r!==0)return gt.call(this,e+r+1,!1),-1;ee(o)||this.error(t&&r!==0?"Hyphen minus"+(r<6?" or hex digit":"")+" is expected":r<6?"Hex digit is expected":"Unexpected input",n),++r>6&&this.error("Too many hex digits",n)}return this.next(),r}function tr(e){let t=0;for(;this.isDelim(So);)++t>e&&this.error("Too many question marks"),this.next()}function rh(e){this.charCodeAt(this.tokenStart)!==e&&this.error((e===Pa?"Plus sign":"Hyphen minus")+" is expected")}function nh(){let e=0;switch(this.tokenType){case 10:if(e=gt.call(this,1,!0),this.isDelim(So)){tr.call(this,6-e);break}if(this.tokenType===12||this.tokenType===10){rh.call(this,Ia),gt.call(this,1,!1);break}break;case 12:e=gt.call(this,1,!0),e>0&&tr.call(this,6-e);break;default:if(this.eatDelim(Pa),this.tokenType===1){e=gt.call(this,0,!0),e>0&&tr.call(this,6-e);break}if(this.isDelim(So)){this.next(),tr.call(this,5);break}this.error("Hex digit or question mark is expected")}}var oh="UnicodeRange",ih={value:String};function Co(){let e=this.tokenStart;return this.eatIdent("u"),nh.call(this),{type:"UnicodeRange",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function ah(e){this.tokenize(e.value)}var Do={};b(Do,{generate:()=>mh,name:()=>ph,parse:()=>Io,structure:()=>hh});var Po={};b(Po,{decode:()=>Eo,encode:()=>Lo});var sh=32,To=92,lh=34,ch=39,uh=40,Da=41;function Eo(e){let t=e.length,r=4,n=e.charCodeAt(t-1)===Da?t-2:t-1,o="";for(;r<n&&pe(e.charCodeAt(r));)r++;for(;r<n&&pe(e.charCodeAt(n));)n--;for(let i=r;i<=n;i++){let s=e.charCodeAt(i);if(s===To){if(i===n){i!==t-1&&(o=e.substr(i+1));break}if(s=e.charCodeAt(++i),$(To,s)){let u=i-1,c=se(e,u);i=c-1,o+=Re(e.substring(u+1,c))}else s===13&&e.charCodeAt(i+1)===10&&i++}else o+=e[i]}return o}function Lo(e){let t="",r=!1;for(let n=0;n<e.length;n++){let o=e.charCodeAt(n);if(o===0){t+="\uFFFD";continue}if(o<=31||o===127){t+="\\"+o.toString(16),r=!0;continue}o===sh||o===To||o===lh||o===ch||o===uh||o===Da?(t+="\\"+e.charAt(n),r=!1):(r&&ee(o)&&(t+=" "),t+=e.charAt(n),r=!1)}return"url("+t+")"}var ph="Url",hh={value:String};function Io(){let e=this.tokenStart,t;switch(this.tokenType){case 7:t=Eo(this.consume(7));break;case 2:this.cmpStr(this.tokenStart,this.tokenEnd,"url(")||this.error("Function name must be `url`"),this.eat(2),this.skipSC(),t=dt(this.consume(5)),this.skipSC(),this.eof||this.eat(22);break;default:this.error("Url or Function is expected")}return{type:"Url",loc:this.getLocation(e,this.tokenStart),value:t}}function mh(e){this.token(7,Lo(e.value))}var No={};b(No,{generate:()=>gh,name:()=>fh,parse:()=>Oo,structure:()=>dh});var fh="Value",dh={children:[[]]};function Oo(){let e=this.tokenStart,t=this.readSequence(this.scope.Value);return{type:"Value",loc:this.getLocation(e,this.tokenStart),children:t}}function gh(e){this.children(e)}var Mo={};b(Mo,{generate:()=>kh,name:()=>xh,parse:()=>zo,structure:()=>yh});var bh=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),xh="WhiteSpace",yh={value:String};function zo(){return this.eat(13),bh}function kh(e){this.token(13,e.value)}var Oa={generic:!0,...da,node:bt};var Ro={};b(Ro,{AtrulePrelude:()=>za,Selector:()=>Ra,Value:()=>Ua});var wh=35,vh=42,Na=43,Sh=45,Ch=47,Ah=117;function xt(e){switch(this.tokenType){case 4:return this.Hash();case 18:return this.Operator();case 21:return this.Parentheses(this.readSequence,e.recognizer);case 19:return this.Brackets(this.readSequence,e.recognizer);case 5:return this.String();case 12:return this.Dimension();case 11:return this.Percentage();case 10:return this.Number();case 2:return this.cmpStr(this.tokenStart,this.tokenEnd,"url(")?this.Url():this.Function(this.readSequence,e.recognizer);case 7:return this.Url();case 1:return this.cmpChar(this.tokenStart,Ah)&&this.cmpChar(this.tokenStart+1,Na)?this.UnicodeRange():this.Identifier();case 9:{let t=this.charCodeAt(this.tokenStart);if(t===Ch||t===vh||t===Na||t===Sh)return this.Operator();t===wh&&this.error("Hex or identifier is expected",this.tokenStart+1);break}}}var za={getNode:xt};var Th=35,Eh=42,Lh=43,Ph=47,Ma=46,Ih=62,Dh=124,Oh=126;function Nh(e,t){t.last!==null&&t.last.type!=="Combinator"&&e!==null&&e.type!=="Combinator"&&t.push({type:"Combinator",loc:null,name:" "})}function zh(){switch(this.tokenType){case 19:return this.AttributeSelector();case 4:return this.IdSelector();case 16:return this.lookupType(1)===16?this.PseudoElementSelector():this.PseudoClassSelector();case 1:return this.TypeSelector();case 10:case 11:return this.Percentage();case 12:this.charCodeAt(this.tokenStart)===Ma&&this.error("Identifier is expected",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case Lh:case Ih:case Oh:case Ph:return this.Combinator();case Ma:return this.ClassSelector();case Eh:case Dh:return this.TypeSelector();case Th:return this.IdSelector()}break}}}var Ra={onWhiteSpace:Nh,getNode:zh};function Fa(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function Ba(){let e=this.createList();if(this.skipSC(),e.push(this.Identifier()),this.skipSC(),this.tokenType===18){e.push(this.Operator());let t=this.tokenIndex,r=this.parseCustomProperty?this.Value(null):this.Raw(this.tokenIndex,this.consumeUntilExclamationMarkOrSemicolon,!1);if(r.type==="Value"&&r.children.isEmpty){for(let n=t-this.tokenIndex;n<=0;n++)if(this.lookupType(n)===13){r.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}e.push(r)}return e}function _a(e){return e!==null&&e.type==="Operator"&&(e.value[e.value.length-1]==="-"||e.value[e.value.length-1]==="+")}var Ua={getNode:xt,onWhiteSpace(e,t){_a(e)&&(e.value=" "+e.value),_a(t.last)&&(t.last.value+=" ")},expression:Fa,var:Ba};var ja={parse:{prelude:null,block(){return this.Block(!0)}}};var Ha={parse:{prelude(){let e=this.createList();switch(this.skipSC(),this.tokenType){case 5:e.push(this.String());break;case 7:case 2:e.push(this.Url());break;default:this.error("String or url() is expected")}return(this.lookupNonWSType(0)===1||this.lookupNonWSType(0)===21)&&e.push(this.MediaQueryList()),e},block:null}};var qa={parse:{prelude(){return this.createSingleNodeList(this.MediaQueryList())},block(){return this.Block(!1)}}};var Wa={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}};function Mh(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function Rh(){return this.skipSC(),this.tokenType===1&&this.lookupNonWSType(1)===16?this.createSingleNodeList(this.Declaration()):Ya.call(this)}function Ya(){let e=this.createList(),t;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 2:t=this.Function(Mh,this.scope.AtrulePrelude);break;case 1:t=this.Identifier();break;case 21:t=this.Parentheses(Rh,this.scope.AtrulePrelude);break;default:break e}e.push(t)}return e}var Ga={parse:{prelude(){let e=Ya.call(this);return this.getFirstListNode(e)===null&&this.error("Condition is expected"),e},block(){return this.Block(!1)}}};var Va={"font-face":ja,import:Ha,media:qa,page:Wa,supports:Ga};var De={parse(){return this.createSingleNodeList(this.SelectorList())}},Fh={parse(){return this.createSingleNodeList(this.Selector())}},Ka={parse(){return this.createSingleNodeList(this.Identifier())}},rr={parse(){return this.createSingleNodeList(this.Nth())}},Qa={dir:Ka,has:De,lang:Ka,matches:De,is:De,"-moz-any":De,"-webkit-any":De,where:De,not:De,"nth-child":rr,"nth-last-child":rr,"nth-last-of-type":rr,"nth-of-type":rr,slotted:Fh};var Fo={};b(Fo,{AnPlusB:()=>Zr,Atrule:()=>en,AtrulePrelude:()=>rn,AttributeSelector:()=>an,Block:()=>ln,Brackets:()=>un,CDC:()=>hn,CDO:()=>fn,ClassSelector:()=>gn,Combinator:()=>xn,Comment:()=>kn,Declaration:()=>vn,DeclarationList:()=>Cn,Dimension:()=>Tn,Function:()=>Ln,Hash:()=>In,IdSelector:()=>zn,Identifier:()=>On,MediaFeature:()=>Rn,MediaQuery:()=>Bn,MediaQueryList:()=>Un,Nth:()=>Hn,Number:()=>Wn,Operator:()=>Gn,Parentheses:()=>Kn,Percentage:()=>Xn,PseudoClassSelector:()=>Zn,PseudoElementSelector:()=>eo,Ratio:()=>ro,Raw:()=>oo,Rule:()=>ao,Selector:()=>lo,SelectorList:()=>uo,String:()=>go,StyleSheet:()=>xo,TypeSelector:()=>wo,UnicodeRange:()=>Co,Url:()=>Io,Value:()=>Oo,WhiteSpace:()=>zo});var Xa={parseContext:{default:"StyleSheet",stylesheet:"StyleSheet",atrule:"Atrule",atrulePrelude(e){return this.AtrulePrelude(e.atrule?String(e.atrule):null)},mediaQueryList:"MediaQueryList",mediaQuery:"MediaQuery",rule:"Rule",selectorList:"SelectorList",selector:"Selector",block(){return this.Block(!0)},declarationList:"DeclarationList",declaration:"Declaration",value:"Value"},scope:Ro,atrule:Va,pseudo:Qa,node:Fo};var $a={node:bt};var Za=Xr({...Oa,...Xa,...$a});var Zg="2.2.0";function Bo(e){let t={};for(let r in e){let n=e[r];n&&(Array.isArray(n)||n instanceof I?n=n.map(Bo):n.constructor===Object&&(n=Bo(n))),t[r]=n}return t}var es={};b(es,{decode:()=>Bh,encode:()=>_h});var Ja=92;function Bh(e){let t=e.length-1,r="";for(let n=0;n<e.length;n++){let o=e.charCodeAt(n);if(o===Ja){if(n===t)break;if(o=e.charCodeAt(++n),$(Ja,o)){let i=n-1,s=se(e,i);n=s-1,r+=Re(e.substring(i+1,s))}else o===13&&e.charCodeAt(n+1)===10&&n++}else r+=e[n]}return r}function _h(e){let t="";if(e.length===1&&e.charCodeAt(0)===45)return"\\-";for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n===0){t+="\uFFFD";continue}if(n<=31||n===127||n>=48&&n<=57&&(r===0||r===1&&e.charCodeAt(0)===45)){t+="\\"+n.toString(16)+" ";continue}Ne(n)?t+=e.charAt(r):t+="\\"+e.charAt(r)}return t}var{tokenize:ob,parse:ib,generate:ab,lexer:sb,createLexer:lb,walk:cb,find:ub,findLast:pb,findAll:hb,toPlainObject:mb,fromPlainObject:fb,fork:db}=Za;export{Ke as Lexer,I as List,nt as TokenStream,Bo as clone,lb as createLexer,Xr as createSyntax,Qi as definitionSyntax,ub as find,hb as findAll,pb as findLast,db as fork,fb as fromPlainObject,ab as generate,es as ident,Rt as isCustomProperty,Mt as keyword,sb as lexer,ib as parse,vr as property,fo as string,mb as toPlainObject,Fe as tokenNames,Ze as tokenTypes,ob as tokenize,Po as url,_m as vendorPrefix,Zg as version,cb as walk}; diff --git a/node_modules/csso/node_modules/css-tree/dist/csstree.js b/node_modules/csso/node_modules/css-tree/dist/csstree.js deleted file mode 100644 index 7e3fd51b..00000000 --- a/node_modules/csso/node_modules/css-tree/dist/csstree.js +++ /dev/null @@ -1,11 +0,0 @@ -var csstree=(()=>{var rs=Object.create;var wt=Object.defineProperty;var ns=Object.getOwnPropertyDescriptor;var os=Object.getOwnPropertyNames;var is=Object.getPrototypeOf,as=Object.prototype.hasOwnProperty;var ze=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),b=(e,t)=>{for(var r in t)wt(e,r,{get:t[r],enumerable:!0})},jo=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of os(t))!as.call(e,o)&&o!==r&&wt(e,o,{get:()=>t[o],enumerable:!(n=ns(t,o))||n.enumerable});return e};var ss=(e,t,r)=>(r=e!=null?rs(is(e)):{},jo(t||!e||!e.__esModule?wt(r,"default",{value:e,enumerable:!0}):r,e)),ls=e=>jo(wt({},"__esModule",{value:!0}),e);var ti=ze(br=>{var ei="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");br.encode=function(e){if(0<=e&&e<ei.length)return ei[e];throw new TypeError("Must be between 0 and 63: "+e)};br.decode=function(e){var t=65,r=90,n=97,o=122,i=48,s=57,u=43,c=47,a=26,l=52;return t<=e&&e<=r?e-t:n<=e&&e<=o?e-n+a:i<=e&&e<=s?e-i+l:e==u?62:e==c?63:-1}});var ai=ze(yr=>{var ri=ti(),xr=5,ni=1<<xr,oi=ni-1,ii=ni;function ks(e){return e<0?(-e<<1)+1:(e<<1)+0}function ws(e){var t=(e&1)===1,r=e>>1;return t?-r:r}yr.encode=function(t){var r="",n,o=ks(t);do n=o&oi,o>>>=xr,o>0&&(n|=ii),r+=ri.encode(n);while(o>0);return r};yr.decode=function(t,r,n){var o=t.length,i=0,s=0,u,c;do{if(r>=o)throw new Error("Expected more digits in base 64 VLQ value.");if(c=ri.decode(t.charCodeAt(r++)),c===-1)throw new Error("Invalid base64 digit: "+t.charAt(r-1));u=!!(c&ii),c&=oi,i=i+(c<<s),s+=xr}while(u);n.value=ws(i),n.rest=r}});var Dt=ze(K=>{function vs(e,t,r){if(t in e)return e[t];if(arguments.length===3)return r;throw new Error('"'+t+'" is a required argument.')}K.getArg=vs;var si=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,Ss=/^data:.+\,.+$/;function ot(e){var t=e.match(si);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}K.urlParse=ot;function qe(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}K.urlGenerate=qe;var Cs=32;function As(e){var t=[];return function(r){for(var n=0;n<t.length;n++)if(t[n].input===r){var o=t[0];return t[0]=t[n],t[n]=o,t[0].result}var i=e(r);return t.unshift({input:r,result:i}),t.length>Cs&&t.pop(),i}}var kr=As(function(t){var r=t,n=ot(t);if(n){if(!n.path)return t;r=n.path}for(var o=K.isAbsolute(r),i=[],s=0,u=0;;)if(s=u,u=r.indexOf("/",s),u===-1){i.push(r.slice(s));break}else for(i.push(r.slice(s,u));u<r.length&&r[u]==="/";)u++;for(var c,a=0,u=i.length-1;u>=0;u--)c=i[u],c==="."?i.splice(u,1):c===".."?a++:a>0&&(c===""?(i.splice(u+1,a),a=0):(i.splice(u,2),a--));return r=i.join("/"),r===""&&(r=o?"/":"."),n?(n.path=r,qe(n)):r});K.normalize=kr;function li(e,t){e===""&&(e="."),t===""&&(t=".");var r=ot(t),n=ot(e);if(n&&(e=n.path||"/"),r&&!r.scheme)return n&&(r.scheme=n.scheme),qe(r);if(r||t.match(Ss))return t;if(n&&!n.host&&!n.path)return n.host=t,qe(n);var o=t.charAt(0)==="/"?t:kr(e.replace(/\/+$/,"")+"/"+t);return n?(n.path=o,qe(n)):o}K.join=li;K.isAbsolute=function(e){return e.charAt(0)==="/"||si.test(e)};function Ts(e,t){e===""&&(e="."),e=e.replace(/\/$/,"");for(var r=0;t.indexOf(e+"/")!==0;){var n=e.lastIndexOf("/");if(n<0||(e=e.slice(0,n),e.match(/^([^\/]+:\/)?\/*$/)))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)}K.relative=Ts;var ci=function(){var e=Object.create(null);return!("__proto__"in e)}();function ui(e){return e}function Es(e){return pi(e)?"$"+e:e}K.toSetString=ci?ui:Es;function Ls(e){return pi(e)?e.slice(1):e}K.fromSetString=ci?ui:Ls;function pi(e){if(!e)return!1;var t=e.length;if(t<9||e.charCodeAt(t-1)!==95||e.charCodeAt(t-2)!==95||e.charCodeAt(t-3)!==111||e.charCodeAt(t-4)!==116||e.charCodeAt(t-5)!==111||e.charCodeAt(t-6)!==114||e.charCodeAt(t-7)!==112||e.charCodeAt(t-8)!==95||e.charCodeAt(t-9)!==95)return!1;for(var r=t-10;r>=0;r--)if(e.charCodeAt(r)!==36)return!1;return!0}function Ps(e,t,r){var n=be(e.source,t.source);return n!==0||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:be(e.name,t.name)}K.compareByOriginalPositions=Ps;function Is(e,t,r){var n;return n=e.originalLine-t.originalLine,n!==0||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:be(e.name,t.name)}K.compareByOriginalPositionsNoSource=Is;function Ds(e,t,r){var n=e.generatedLine-t.generatedLine;return n!==0||(n=e.generatedColumn-t.generatedColumn,n!==0||r)||(n=be(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:be(e.name,t.name)}K.compareByGeneratedPositionsDeflated=Ds;function Os(e,t,r){var n=e.generatedColumn-t.generatedColumn;return n!==0||r||(n=be(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:be(e.name,t.name)}K.compareByGeneratedPositionsDeflatedNoLine=Os;function be(e,t){return e===t?0:e===null?1:t===null?-1:e>t?1:-1}function Ns(e,t){var r=e.generatedLine-t.generatedLine;return r!==0||(r=e.generatedColumn-t.generatedColumn,r!==0)||(r=be(e.source,t.source),r!==0)||(r=e.originalLine-t.originalLine,r!==0)||(r=e.originalColumn-t.originalColumn,r!==0)?r:be(e.name,t.name)}K.compareByGeneratedPositionsInflated=Ns;function zs(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}K.parseSourceMapInput=zs;function Ms(e,t,r){if(t=t||"",e&&(e[e.length-1]!=="/"&&t[0]!=="/"&&(e+="/"),t=e+t),r){var n=ot(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var o=n.path.lastIndexOf("/");o>=0&&(n.path=n.path.substring(0,o+1))}t=li(qe(n),t)}return kr(t)}K.computeSourceURL=Ms});var mi=ze(hi=>{var wr=Dt(),vr=Object.prototype.hasOwnProperty,Pe=typeof Map<"u";function xe(){this._array=[],this._set=Pe?new Map:Object.create(null)}xe.fromArray=function(t,r){for(var n=new xe,o=0,i=t.length;o<i;o++)n.add(t[o],r);return n};xe.prototype.size=function(){return Pe?this._set.size:Object.getOwnPropertyNames(this._set).length};xe.prototype.add=function(t,r){var n=Pe?t:wr.toSetString(t),o=Pe?this.has(t):vr.call(this._set,n),i=this._array.length;(!o||r)&&this._array.push(t),o||(Pe?this._set.set(t,i):this._set[n]=i)};xe.prototype.has=function(t){if(Pe)return this._set.has(t);var r=wr.toSetString(t);return vr.call(this._set,r)};xe.prototype.indexOf=function(t){if(Pe){var r=this._set.get(t);if(r>=0)return r}else{var n=wr.toSetString(t);if(vr.call(this._set,n))return this._set[n]}throw new Error('"'+t+'" is not in the set.')};xe.prototype.at=function(t){if(t>=0&&t<this._array.length)return this._array[t];throw new Error("No element indexed by "+t)};xe.prototype.toArray=function(){return this._array.slice()};hi.ArraySet=xe});var gi=ze(di=>{var fi=Dt();function Rs(e,t){var r=e.generatedLine,n=t.generatedLine,o=e.generatedColumn,i=t.generatedColumn;return n>r||n==r&&i>=o||fi.compareByGeneratedPositionsInflated(e,t)<=0}function Ot(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Ot.prototype.unsortedForEach=function(t,r){this._array.forEach(t,r)};Ot.prototype.add=function(t){Rs(this._last,t)?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))};Ot.prototype.toArray=function(){return this._sorted||(this._array.sort(fi.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};di.MappingList=Ot});var xi=ze(bi=>{var it=ai(),H=Dt(),Nt=mi().ArraySet,Fs=gi().MappingList;function oe(e){e||(e={}),this._file=H.getArg(e,"file",null),this._sourceRoot=H.getArg(e,"sourceRoot",null),this._skipValidation=H.getArg(e,"skipValidation",!1),this._sources=new Nt,this._names=new Nt,this._mappings=new Fs,this._sourcesContents=null}oe.prototype._version=3;oe.fromSourceMap=function(t){var r=t.sourceRoot,n=new oe({file:t.file,sourceRoot:r});return t.eachMapping(function(o){var i={generated:{line:o.generatedLine,column:o.generatedColumn}};o.source!=null&&(i.source=o.source,r!=null&&(i.source=H.relative(r,i.source)),i.original={line:o.originalLine,column:o.originalColumn},o.name!=null&&(i.name=o.name)),n.addMapping(i)}),t.sources.forEach(function(o){var i=o;r!==null&&(i=H.relative(r,o)),n._sources.has(i)||n._sources.add(i);var s=t.sourceContentFor(o);s!=null&&n.setSourceContent(o,s)}),n};oe.prototype.addMapping=function(t){var r=H.getArg(t,"generated"),n=H.getArg(t,"original",null),o=H.getArg(t,"source",null),i=H.getArg(t,"name",null);this._skipValidation||this._validateMapping(r,n,o,i),o!=null&&(o=String(o),this._sources.has(o)||this._sources.add(o)),i!=null&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:o,name:i})};oe.prototype.setSourceContent=function(t,r){var n=t;this._sourceRoot!=null&&(n=H.relative(this._sourceRoot,n)),r!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[H.toSetString(n)]=r):this._sourcesContents&&(delete this._sourcesContents[H.toSetString(n)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};oe.prototype.applySourceMap=function(t,r,n){var o=r;if(r==null){if(t.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);o=t.file}var i=this._sourceRoot;i!=null&&(o=H.relative(i,o));var s=new Nt,u=new Nt;this._mappings.unsortedForEach(function(c){if(c.source===o&&c.originalLine!=null){var a=t.originalPositionFor({line:c.originalLine,column:c.originalColumn});a.source!=null&&(c.source=a.source,n!=null&&(c.source=H.join(n,c.source)),i!=null&&(c.source=H.relative(i,c.source)),c.originalLine=a.line,c.originalColumn=a.column,a.name!=null&&(c.name=a.name))}var l=c.source;l!=null&&!s.has(l)&&s.add(l);var p=c.name;p!=null&&!u.has(p)&&u.add(p)},this),this._sources=s,this._names=u,t.sources.forEach(function(c){var a=t.sourceContentFor(c);a!=null&&(n!=null&&(c=H.join(n,c)),i!=null&&(c=H.relative(i,c)),this.setSourceContent(c,a))},this)};oe.prototype._validateMapping=function(t,r,n,o){if(r&&typeof r.line!="number"&&typeof r.column!="number")throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if(!(t&&"line"in t&&"column"in t&&t.line>0&&t.column>=0&&!r&&!n&&!o)){if(t&&"line"in t&&"column"in t&&r&&"line"in r&&"column"in r&&t.line>0&&t.column>=0&&r.line>0&&r.column>=0&&n)return;throw new Error("Invalid mapping: "+JSON.stringify({generated:t,source:n,original:r,name:o}))}};oe.prototype._serializeMappings=function(){for(var t=0,r=1,n=0,o=0,i=0,s=0,u="",c,a,l,p,m=this._mappings.toArray(),f=0,P=m.length;f<P;f++){if(a=m[f],c="",a.generatedLine!==r)for(t=0;a.generatedLine!==r;)c+=";",r++;else if(f>0){if(!H.compareByGeneratedPositionsInflated(a,m[f-1]))continue;c+=","}c+=it.encode(a.generatedColumn-t),t=a.generatedColumn,a.source!=null&&(p=this._sources.indexOf(a.source),c+=it.encode(p-s),s=p,c+=it.encode(a.originalLine-1-o),o=a.originalLine-1,c+=it.encode(a.originalColumn-n),n=a.originalColumn,a.name!=null&&(l=this._names.indexOf(a.name),c+=it.encode(l-i),i=l)),u+=c}return u};oe.prototype._generateSourcesContent=function(t,r){return t.map(function(n){if(!this._sourcesContents)return null;r!=null&&(n=H.relative(r,n));var o=H.toSetString(n);return Object.prototype.hasOwnProperty.call(this._sourcesContents,o)?this._sourcesContents[o]:null},this)};oe.prototype.toJSON=function(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(t.file=this._file),this._sourceRoot!=null&&(t.sourceRoot=this._sourceRoot),this._sourcesContents&&(t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot)),t};oe.prototype.toString=function(){return JSON.stringify(this.toJSON())};bi.SourceMapGenerator=oe});var tm={};b(tm,{Lexer:()=>De,List:()=>I,TokenStream:()=>je,clone:()=>lr,createLexer:()=>Vh,createSyntax:()=>er,definitionSyntax:()=>qr,find:()=>Qh,findAll:()=>$h,findLast:()=>Xh,fork:()=>em,fromPlainObject:()=>Jh,generate:()=>Yh,ident:()=>Uo,isCustomProperty:()=>ct,keyword:()=>lt,lexer:()=>Gh,parse:()=>Wh,property:()=>Bt,string:()=>or,toPlainObject:()=>Zh,tokenNames:()=>Ee,tokenTypes:()=>Me,tokenize:()=>qh,url:()=>ar,vendorPrefix:()=>Zs,version:()=>Uh,walk:()=>Kh});var Me={};b(Me,{AtKeyword:()=>D,BadString:()=>Ae,BadUrl:()=>Y,CDC:()=>j,CDO:()=>ue,Colon:()=>O,Comma:()=>G,Comment:()=>E,Delim:()=>g,Dimension:()=>y,EOF:()=>Je,Function:()=>x,Hash:()=>v,Ident:()=>h,LeftCurlyBracket:()=>M,LeftParenthesis:()=>T,LeftSquareBracket:()=>U,Number:()=>d,Percentage:()=>A,RightCurlyBracket:()=>W,RightParenthesis:()=>w,RightSquareBracket:()=>V,Semicolon:()=>_,String:()=>q,Url:()=>F,WhiteSpace:()=>k});var Je=0,h=1,x=2,D=3,v=4,q=5,Ae=6,F=7,Y=8,g=9,d=10,A=11,y=12,k=13,ue=14,j=15,O=16,_=17,G=18,U=19,V=20,T=21,w=22,M=23,W=24,E=25;function B(e){return e>=48&&e<=57}function ee(e){return B(e)||e>=65&&e<=70||e>=97&&e<=102}function St(e){return e>=65&&e<=90}function cs(e){return e>=97&&e<=122}function us(e){return St(e)||cs(e)}function ps(e){return e>=128}function vt(e){return us(e)||ps(e)||e===95}function Re(e){return vt(e)||B(e)||e===45}function hs(e){return e>=0&&e<=8||e===11||e>=14&&e<=31||e===127}function et(e){return e===10||e===13||e===12}function pe(e){return et(e)||e===32||e===9}function $(e,t){return!(e!==92||et(t)||t===0)}function Fe(e,t,r){return e===45?vt(t)||t===45||$(t,r):vt(e)?!0:e===92?$(e,t):!1}function Ct(e,t,r){return e===43||e===45?B(t)?2:t===46&&B(r)?3:0:e===46?B(t)?2:0:B(e)?1:0}function At(e){return e===65279||e===65534?1:0}var cr=new Array(128),ms=128,tt=130,ur=131,Tt=132,pr=133;for(let e=0;e<cr.length;e++)cr[e]=pe(e)&&tt||B(e)&&ur||vt(e)&&Tt||hs(e)&&pr||e||ms;function Et(e){return e<128?cr[e]:Tt}function Be(e,t){return t<e.length?e.charCodeAt(t):0}function Lt(e,t,r){return r===13&&Be(e,t+1)===10?2:1}function de(e,t,r){let n=e.charCodeAt(t);return St(n)&&(n=n|32),n===r}function ge(e,t,r,n){if(r-t!==n.length||t<0||r>e.length)return!1;for(let o=t;o<r;o++){let i=n.charCodeAt(o-t),s=e.charCodeAt(o);if(St(s)&&(s=s|32),s!==i)return!1}return!0}function Ho(e,t){for(;t>=0&&pe(e.charCodeAt(t));t--);return t+1}function rt(e,t){for(;t<e.length&&pe(e.charCodeAt(t));t++);return t}function hr(e,t){for(;t<e.length&&B(e.charCodeAt(t));t++);return t}function se(e,t){if(t+=2,ee(Be(e,t-1))){for(let n=Math.min(e.length,t+5);t<n&&ee(Be(e,t));t++);let r=Be(e,t);pe(r)&&(t+=Lt(e,t,r))}return t}function nt(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(!Re(r)){if($(r,Be(e,t+1))){t=se(e,t)-1;continue}break}}return t}function Te(e,t){let r=e.charCodeAt(t);if((r===43||r===45)&&(r=e.charCodeAt(t+=1)),B(r)&&(t=hr(e,t+1),r=e.charCodeAt(t)),r===46&&B(e.charCodeAt(t+1))&&(t+=2,t=hr(e,t)),de(e,t,101)){let n=0;r=e.charCodeAt(t+1),(r===45||r===43)&&(n=1,r=e.charCodeAt(t+2)),B(r)&&(t=hr(e,t+1+n+1))}return t}function Pt(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(r===41){t++;break}$(r,Be(e,t+1))&&(t=se(e,t))}return t}function _e(e){if(e.length===1&&!ee(e.charCodeAt(0)))return e[0];let t=parseInt(e,16);return(t===0||t>=55296&&t<=57343||t>1114111)&&(t=65533),String.fromCodePoint(t)}var Ee=["EOF-token","ident-token","function-token","at-keyword-token","hash-token","string-token","bad-string-token","url-token","bad-url-token","delim-token","number-token","percentage-token","dimension-token","whitespace-token","CDO-token","CDC-token","colon-token","semicolon-token","comma-token","[-token","]-token","(-token",")-token","{-token","}-token"];function Ue(e=null,t){return e===null||e.length<t?new Uint32Array(Math.max(t+1024,16384)):e}var qo=10,fs=12,Wo=13;function Yo(e){let t=e.source,r=t.length,n=t.length>0?At(t.charCodeAt(0)):0,o=Ue(e.lines,r),i=Ue(e.columns,r),s=e.startLine,u=e.startColumn;for(let c=n;c<r;c++){let a=t.charCodeAt(c);o[c]=s,i[c]=u++,(a===qo||a===Wo||a===fs)&&(a===Wo&&c+1<r&&t.charCodeAt(c+1)===qo&&(c++,o[c]=s,i[c]=u),s++,u=1)}o[r]=s,i[r]=u,e.lines=o,e.columns=i,e.computed=!0}var It=class{constructor(){this.lines=null,this.columns=null,this.computed=!1}setSource(t,r=0,n=1,o=1){this.source=t,this.startOffset=r,this.startLine=n,this.startColumn=o,this.computed=!1}getLocation(t,r){return this.computed||Yo(this),{source:r,offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]}}getLocationRange(t,r,n){return this.computed||Yo(this),{source:n,start:{offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]},end:{offset:this.startOffset+r,line:this.lines[r],column:this.columns[r]}}}};var ne=16777215,we=24,ds=new Map([[2,22],[21,22],[19,20],[23,24]]),je=class{constructor(t,r){this.setSource(t,r)}reset(){this.eof=!1,this.tokenIndex=-1,this.tokenType=0,this.tokenStart=this.firstCharOffset,this.tokenEnd=this.firstCharOffset}setSource(t="",r=()=>{}){t=String(t||"");let n=t.length,o=Ue(this.offsetAndType,t.length+1),i=Ue(this.balance,t.length+1),s=0,u=0,c=0,a=-1;for(this.offsetAndType=null,this.balance=null,r(t,(l,p,m)=>{switch(l){default:i[s]=n;break;case u:{let f=c≠for(c=i[f],u=c>>we,i[s]=f,i[f++]=s;f<s;f++)i[f]===n&&(i[f]=s);break}case 21:case 2:case 19:case 23:i[s]=c,u=ds.get(l),c=u<<we|s;break}o[s++]=l<<we|m,a===-1&&(a=p)}),o[s]=0<<we|n,i[s]=n,i[n]=n;c!==0;){let l=c≠c=i[l],i[l]=n}this.source=t,this.firstCharOffset=a===-1?0:a,this.tokenCount=s,this.offsetAndType=o,this.balance=i,this.reset(),this.next()}lookupType(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t]>>we:0}lookupOffset(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t-1]&ne:this.source.length}lookupValue(t,r){return t+=this.tokenIndex,t<this.tokenCount?ge(this.source,this.offsetAndType[t-1]&ne,this.offsetAndType[t]&ne,r):!1}getTokenStart(t){return t===this.tokenIndex?this.tokenStart:t>0?t<this.tokenCount?this.offsetAndType[t-1]&ne:this.offsetAndType[this.tokenCount]&ne:this.firstCharOffset}substrToCursor(t){return this.source.substring(t,this.tokenStart)}isBalanceEdge(t){return this.balance[this.tokenIndex]<t}isDelim(t,r){return r?this.lookupType(r)===9&&this.source.charCodeAt(this.lookupOffset(r))===t:this.tokenType===9&&this.source.charCodeAt(this.tokenStart)===t}skip(t){let r=this.tokenIndex+t;r<this.tokenCount?(this.tokenIndex=r,this.tokenStart=this.offsetAndType[r-1]&ne,r=this.offsetAndType[r],this.tokenType=r>>we,this.tokenEnd=r&ne):(this.tokenIndex=this.tokenCount,this.next())}next(){let t=this.tokenIndex+1;t<this.tokenCount?(this.tokenIndex=t,this.tokenStart=this.tokenEnd,t=this.offsetAndType[t],this.tokenType=t>>we,this.tokenEnd=t&ne):(this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=0,this.tokenStart=this.tokenEnd=this.source.length)}skipSC(){for(;this.tokenType===13||this.tokenType===25;)this.next()}skipUntilBalanced(t,r){let n=t,o,i;e:for(;n<this.tokenCount;n++){if(o=this.balance[n],o<t)break e;switch(i=n>0?this.offsetAndType[n-1]&ne:this.firstCharOffset,r(this.source.charCodeAt(i))){case 1:break e;case 2:n++;break e;default:this.balance[o]===n&&(n=o)}}this.skip(n-this.tokenIndex)}forEachToken(t){for(let r=0,n=this.firstCharOffset;r<this.tokenCount;r++){let o=n,i=this.offsetAndType[r],s=i&ne,u=i>>we;n=s,t(u,o,s,r)}}dump(){let t=new Array(this.tokenCount);return this.forEachToken((r,n,o,i)=>{t[i]={idx:i,type:Ee[r],chunk:this.source.substring(n,o),balance:this.balance[i]}}),t}};function ve(e,t){function r(p){return p<u?e.charCodeAt(p):0}function n(){if(a=Te(e,a),Fe(r(a),r(a+1),r(a+2))){l=12,a=nt(e,a);return}if(r(a)===37){l=11,a++;return}l=10}function o(){let p=a;if(a=nt(e,a),ge(e,p,a,"url")&&r(a)===40){if(a=rt(e,a+1),r(a)===34||r(a)===39){l=2,a=p+4;return}s();return}if(r(a)===40){l=2,a++;return}l=1}function i(p){for(p||(p=r(a++)),l=5;a<e.length;a++){let m=e.charCodeAt(a);switch(Et(m)){case p:a++;return;case tt:if(et(m)){a+=Lt(e,a,m),l=6;return}break;case 92:if(a===e.length-1)break;let f=r(a+1);et(f)?a+=Lt(e,a+1,f):$(m,f)&&(a=se(e,a)-1);break}}}function s(){for(l=7,a=rt(e,a);a<e.length;a++){let p=e.charCodeAt(a);switch(Et(p)){case 41:a++;return;case tt:if(a=rt(e,a),r(a)===41||a>=e.length){a<e.length&&a++;return}a=Pt(e,a),l=8;return;case 34:case 39:case 40:case pr:a=Pt(e,a),l=8;return;case 92:if($(p,r(a+1))){a=se(e,a)-1;break}a=Pt(e,a),l=8;return}}}e=String(e||"");let u=e.length,c=At(r(0)),a=c,l;for(;a<u;){let p=e.charCodeAt(a);switch(Et(p)){case tt:l=13,a=rt(e,a+1);break;case 34:i();break;case 35:Re(r(a+1))||$(r(a+1),r(a+2))?(l=4,a=nt(e,a+1)):(l=9,a++);break;case 39:i();break;case 40:l=21,a++;break;case 41:l=22,a++;break;case 43:Ct(p,r(a+1),r(a+2))?n():(l=9,a++);break;case 44:l=18,a++;break;case 45:Ct(p,r(a+1),r(a+2))?n():r(a+1)===45&&r(a+2)===62?(l=15,a=a+3):Fe(p,r(a+1),r(a+2))?o():(l=9,a++);break;case 46:Ct(p,r(a+1),r(a+2))?n():(l=9,a++);break;case 47:r(a+1)===42?(l=25,a=e.indexOf("*/",a+2),a=a===-1?e.length:a+2):(l=9,a++);break;case 58:l=16,a++;break;case 59:l=17,a++;break;case 60:r(a+1)===33&&r(a+2)===45&&r(a+3)===45?(l=14,a=a+4):(l=9,a++);break;case 64:Fe(r(a+1),r(a+2),r(a+3))?(l=3,a=nt(e,a+1)):(l=9,a++);break;case 91:l=19,a++;break;case 92:$(p,r(a+1))?o():(l=9,a++);break;case 93:l=20,a++;break;case 123:l=23,a++;break;case 125:l=24,a++;break;case ur:n();break;case Tt:o();break;default:l=9,a++}t(l,c,c=a)}}var He=null,I=class{static createItem(t){return{prev:null,next:null,data:t}}constructor(){this.head=null,this.tail=null,this.cursor=null}createItem(t){return I.createItem(t)}allocateCursor(t,r){let n;return He!==null?(n=He,He=He.cursor,n.prev=t,n.next=r,n.cursor=this.cursor):n={prev:t,next:r,cursor:this.cursor},this.cursor=n,n}releaseCursor(){let{cursor:t}=this;this.cursor=t.cursor,t.prev=null,t.next=null,t.cursor=He,He=t}updateCursors(t,r,n,o){let{cursor:i}=this;for(;i!==null;)i.prev===t&&(i.prev=r),i.next===n&&(i.next=o),i=i.cursor}*[Symbol.iterator](){for(let t=this.head;t!==null;t=t.next)yield t.data}get size(){let t=0;for(let r=this.head;r!==null;r=r.next)t++;return t}get isEmpty(){return this.head===null}get first(){return this.head&&this.head.data}get last(){return this.tail&&this.tail.data}fromArray(t){let r=null;this.head=null;for(let n of t){let o=I.createItem(n);r!==null?r.next=o:this.head=o,o.prev=r,r=o}return this.tail=r,this}toArray(){return[...this]}toJSON(){return[...this]}forEach(t,r=this){let n=this.allocateCursor(null,this.head);for(;n.next!==null;){let o=n.next;n.next=o.next,t.call(r,o.data,o,this)}this.releaseCursor()}forEachRight(t,r=this){let n=this.allocateCursor(this.tail,null);for(;n.prev!==null;){let o=n.prev;n.prev=o.prev,t.call(r,o.data,o,this)}this.releaseCursor()}reduce(t,r,n=this){let o=this.allocateCursor(null,this.head),i=r,s;for(;o.next!==null;)s=o.next,o.next=s.next,i=t.call(n,i,s.data,s,this);return this.releaseCursor(),i}reduceRight(t,r,n=this){let o=this.allocateCursor(this.tail,null),i=r,s;for(;o.prev!==null;)s=o.prev,o.prev=s.prev,i=t.call(n,i,s.data,s,this);return this.releaseCursor(),i}some(t,r=this){for(let n=this.head;n!==null;n=n.next)if(t.call(r,n.data,n,this))return!0;return!1}map(t,r=this){let n=new I;for(let o=this.head;o!==null;o=o.next)n.appendData(t.call(r,o.data,o,this));return n}filter(t,r=this){let n=new I;for(let o=this.head;o!==null;o=o.next)t.call(r,o.data,o,this)&&n.appendData(o.data);return n}nextUntil(t,r,n=this){if(t===null)return;let o=this.allocateCursor(null,t);for(;o.next!==null;){let i=o.next;if(o.next=i.next,r.call(n,i.data,i,this))break}this.releaseCursor()}prevUntil(t,r,n=this){if(t===null)return;let o=this.allocateCursor(t,null);for(;o.prev!==null;){let i=o.prev;if(o.prev=i.prev,r.call(n,i.data,i,this))break}this.releaseCursor()}clear(){this.head=null,this.tail=null}copy(){let t=new I;for(let r of this)t.appendData(r);return t}prepend(t){return this.updateCursors(null,t,this.head,t),this.head!==null?(this.head.prev=t,t.next=this.head):this.tail=t,this.head=t,this}prependData(t){return this.prepend(I.createItem(t))}append(t){return this.insert(t)}appendData(t){return this.insert(I.createItem(t))}insert(t,r=null){if(r!==null)if(this.updateCursors(r.prev,t,r,t),r.prev===null){if(this.head!==r)throw new Error("before doesn't belong to list");this.head=t,r.prev=t,t.next=r,this.updateCursors(null,t)}else r.prev.next=t,t.prev=r.prev,r.prev=t,t.next=r;else this.updateCursors(this.tail,t,null,t),this.tail!==null?(this.tail.next=t,t.prev=this.tail):this.head=t,this.tail=t;return this}insertData(t,r){return this.insert(I.createItem(t),r)}remove(t){if(this.updateCursors(t,t.prev,t,t.next),t.prev!==null)t.prev.next=t.next;else{if(this.head!==t)throw new Error("item doesn't belong to list");this.head=t.next}if(t.next!==null)t.next.prev=t.prev;else{if(this.tail!==t)throw new Error("item doesn't belong to list");this.tail=t.prev}return t.prev=null,t.next=null,t}push(t){this.insert(I.createItem(t))}pop(){return this.tail!==null?this.remove(this.tail):null}unshift(t){this.prepend(I.createItem(t))}shift(){return this.head!==null?this.remove(this.head):null}prependList(t){return this.insertList(t,this.head)}appendList(t){return this.insertList(t)}insertList(t,r){return t.head===null?this:(r!=null?(this.updateCursors(r.prev,t.tail,r,t.head),r.prev!==null?(r.prev.next=t.head,t.head.prev=r.prev):this.head=t.head,r.prev=t.tail,t.tail.next=r):(this.updateCursors(this.tail,t.tail,null,t.head),this.tail!==null?(this.tail.next=t.head,t.head.prev=this.tail):this.head=t.head,this.tail=t.tail),t.head=null,t.tail=null,this)}replace(t,r){"head"in r?this.insertList(r,t):this.insert(r,t),this.remove(t)}};function Le(e,t){let r=Object.create(SyntaxError.prototype),n=new Error;return Object.assign(r,{name:e,message:t,get stack(){return(n.stack||"").replace(/^(.+\n){1,3}/,`${e}: ${t} -`)}})}var mr=100,Go=60,Vo=" ";function Ko({source:e,line:t,column:r},n){function o(l,p){return i.slice(l,p).map((m,f)=>String(l+f+1).padStart(c)+" |"+m).join(` -`)}let i=e.split(/\r\n?|\n|\f/),s=Math.max(1,t-n)-1,u=Math.min(t+n,i.length+1),c=Math.max(4,String(u).length)+1,a=0;r+=(Vo.length-1)*(i[t-1].substr(0,r-1).match(/\t/g)||[]).length,r>mr&&(a=r-Go+3,r=Go-2);for(let l=s;l<=u;l++)l>=0&&l<i.length&&(i[l]=i[l].replace(/\t/g,Vo),i[l]=(a>0&&i[l].length>a?"\u2026":"")+i[l].substr(a,mr-2)+(i[l].length>a+mr-1?"\u2026":""));return[o(s,t),new Array(r+c+2).join("-")+"^",o(t,u)].filter(Boolean).join(` -`)}function fr(e,t,r,n,o){return Object.assign(Le("SyntaxError",e),{source:t,offset:r,line:n,column:o,sourceFragment(s){return Ko({source:t,line:n,column:o},isNaN(s)?0:s)},get formattedMessage(){return`Parse error: ${e} -`+Ko({source:t,line:n,column:o},2)}})}function Qo(e){let t=this.createList(),r=!1,n={recognizer:e};for(;!this.eof;){switch(this.tokenType){case 25:this.next();continue;case 13:r=!0,this.next();continue}let o=e.getNode.call(this,n);if(o===void 0)break;r&&(e.onWhiteSpace&&e.onWhiteSpace.call(this,o,t,n),r=!1),t.push(o)}return r&&e.onWhiteSpace&&e.onWhiteSpace.call(this,null,t,n),t}var Xo=()=>{},gs=33,bs=35,dr=59,$o=123,Zo=0;function xs(e){return function(){return this[e]()}}function gr(e){let t=Object.create(null);for(let r in e){let n=e[r],o=n.parse||n;o&&(t[r]=o)}return t}function ys(e){let t={context:Object.create(null),scope:Object.assign(Object.create(null),e.scope),atrule:gr(e.atrule),pseudo:gr(e.pseudo),node:gr(e.node)};for(let r in e.parseContext)switch(typeof e.parseContext[r]){case"function":t.context[r]=e.parseContext[r];break;case"string":t.context[r]=xs(e.parseContext[r]);break}return{config:t,...t,...t.node}}function Jo(e){let t="",r="<unknown>",n=!1,o=Xo,i=!1,s=new It,u=Object.assign(new je,ys(e||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:Qo,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket(a){return a===$o?1:0},consumeUntilLeftCurlyBracketOrSemicolon(a){return a===$o||a===dr?1:0},consumeUntilExclamationMarkOrSemicolon(a){return a===gs||a===dr?1:0},consumeUntilSemicolonIncluded(a){return a===dr?2:0},createList(){return new I},createSingleNodeList(a){return new I().appendData(a)},getFirstListNode(a){return a&&a.first},getLastListNode(a){return a&&a.last},parseWithFallback(a,l){let p=this.tokenIndex;try{return a.call(this)}catch(m){if(i)throw m;let f=l.call(this,p);return i=!0,o(m,f),i=!1,f}},lookupNonWSType(a){let l;do if(l=this.lookupType(a++),l!==13)return l;while(l!==Zo);return Zo},charCodeAt(a){return a>=0&&a<t.length?t.charCodeAt(a):0},substring(a,l){return t.substring(a,l)},substrToCursor(a){return this.source.substring(a,this.tokenStart)},cmpChar(a,l){return de(t,a,l)},cmpStr(a,l,p){return ge(t,a,l,p)},consume(a){let l=this.tokenStart;return this.eat(a),this.substrToCursor(l)},consumeFunctionName(){let a=t.substring(this.tokenStart,this.tokenEnd-1);return this.eat(2),a},consumeNumber(a){let l=t.substring(this.tokenStart,Te(t,this.tokenStart));return this.eat(a),l},eat(a){if(this.tokenType!==a){let l=Ee[a].slice(0,-6).replace(/-/g," ").replace(/^./,f=>f.toUpperCase()),p=`${/[[\](){}]/.test(l)?`"${l}"`:l} is expected`,m=this.tokenStart;switch(a){case 1:this.tokenType===2||this.tokenType===7?(m=this.tokenEnd-1,p="Identifier is expected but function found"):p="Identifier is expected";break;case 4:this.isDelim(bs)&&(this.next(),m++,p="Name is expected");break;case 11:this.tokenType===10&&(m=this.tokenEnd,p="Percent sign is expected");break}this.error(p,m)}this.next()},eatIdent(a){(this.tokenType!==1||this.lookupValue(0,a)===!1)&&this.error(`Identifier "${a}" is expected`),this.next()},eatDelim(a){this.isDelim(a)||this.error(`Delim "${String.fromCharCode(a)}" is expected`),this.next()},getLocation(a,l){return n?s.getLocationRange(a,l,r):null},getLocationFromList(a){if(n){let l=this.getFirstListNode(a),p=this.getLastListNode(a);return s.getLocationRange(l!==null?l.loc.start.offset-s.startOffset:this.tokenStart,p!==null?p.loc.end.offset-s.startOffset:this.tokenStart,r)}return null},error(a,l){let p=typeof l<"u"&&l<t.length?s.getLocation(l):this.eof?s.getLocation(Ho(t,t.length-1)):s.getLocation(this.tokenStart);throw new fr(a||"Unexpected input",t,p.offset,p.line,p.column)}});return Object.assign(function(a,l){t=a,l=l||{},u.setSource(t,ve),s.setSource(t,l.offset,l.line,l.column),r=l.filename||"<unknown>",n=Boolean(l.positions),o=typeof l.onParseError=="function"?l.onParseError:Xo,i=!1,u.parseAtrulePrelude="parseAtrulePrelude"in l?Boolean(l.parseAtrulePrelude):!0,u.parseRulePrelude="parseRulePrelude"in l?Boolean(l.parseRulePrelude):!0,u.parseValue="parseValue"in l?Boolean(l.parseValue):!0,u.parseCustomProperty="parseCustomProperty"in l?Boolean(l.parseCustomProperty):!1;let{context:p="default",onComment:m}=l;if(!(p in u.context))throw new Error("Unknown context `"+p+"`");typeof m=="function"&&u.forEachToken((P,te,X)=>{if(P===25){let S=u.getLocation(te,X),R=ge(t,X-2,X,"*/")?t.slice(te+2,X-2):t.slice(te+2,X);m(R,S)}});let f=u.context[p].call(u,l);return u.eof||u.error(),f},{SyntaxError:fr,config:u.config})}var ki=ss(xi(),1),yi=new Set(["Atrule","Selector","Declaration"]);function wi(e){let t=new ki.SourceMapGenerator,r={line:1,column:0},n={line:0,column:0},o={line:1,column:0},i={generated:o},s=1,u=0,c=!1,a=e.node;e.node=function(m){if(m.loc&&m.loc.start&&yi.has(m.type)){let f=m.loc.start.line,P=m.loc.start.column-1;(n.line!==f||n.column!==P)&&(n.line=f,n.column=P,r.line=s,r.column=u,c&&(c=!1,(r.line!==o.line||r.column!==o.column)&&t.addMapping(i)),c=!0,t.addMapping({source:m.loc.source,original:n,generated:r}))}a.call(this,m),c&&yi.has(m.type)&&(o.line=s,o.column=u)};let l=e.emit;e.emit=function(m,f,P){for(let te=0;te<m.length;te++)m.charCodeAt(te)===10?(s++,u=0):u++;l(m,f,P)};let p=e.result;return e.result=function(){return c&&t.addMapping(i),{css:p(),map:t}},e}var zt={};b(zt,{safe:()=>Cr,spec:()=>js});var Bs=43,_s=45,Sr=(e,t)=>{if(e===9&&(e=t),typeof e=="string"){let r=e.charCodeAt(0);return r>127?32768:r<<8}return e},vi=[[1,1],[1,2],[1,7],[1,8],[1,"-"],[1,10],[1,11],[1,12],[1,15],[1,21],[3,1],[3,2],[3,7],[3,8],[3,"-"],[3,10],[3,11],[3,12],[3,15],[4,1],[4,2],[4,7],[4,8],[4,"-"],[4,10],[4,11],[4,12],[4,15],[12,1],[12,2],[12,7],[12,8],[12,"-"],[12,10],[12,11],[12,12],[12,15],["#",1],["#",2],["#",7],["#",8],["#","-"],["#",10],["#",11],["#",12],["#",15],["-",1],["-",2],["-",7],["-",8],["-","-"],["-",10],["-",11],["-",12],["-",15],[10,1],[10,2],[10,7],[10,8],[10,10],[10,11],[10,12],[10,"%"],[10,15],["@",1],["@",2],["@",7],["@",8],["@","-"],["@",15],[".",10],[".",11],[".",12],["+",10],["+",11],["+",12],["/","*"]],Us=vi.concat([[1,4],[12,4],[4,4],[3,21],[3,5],[3,16],[11,11],[11,12],[11,2],[11,"-"],[22,1],[22,2],[22,11],[22,12],[22,4],[22,"-"]]);function Si(e){let t=new Set(e.map(([r,n])=>Sr(r)<<16|Sr(n)));return function(r,n,o){let i=Sr(n,o),s=o.charCodeAt(0);return(s===_s&&n!==1&&n!==2&&n!==15||s===Bs?t.has(r<<16|s<<8):t.has(r<<16|i))&&this.emit(" ",13,!0),i}}var js=Si(vi),Cr=Si(Us);var Hs=92;function qs(e,t){if(typeof t=="function"){let r=null;e.children.forEach(n=>{r!==null&&t.call(this,r),this.node(n),r=n});return}e.children.forEach(this.node,this)}function Ws(e){ve(e,(t,r,n)=>{this.token(t,e.slice(r,n))})}function Ci(e){let t=new Map;for(let r in e.node){let n=e.node[r];typeof(n.generate||n)=="function"&&t.set(r,n.generate||n)}return function(r,n){let o="",i=0,s={node(c){if(t.has(c.type))t.get(c.type).call(u,c);else throw new Error("Unknown node type: "+c.type)},tokenBefore:Cr,token(c,a){i=this.tokenBefore(i,c,a),this.emit(a,c,!1),c===9&&a.charCodeAt(0)===Hs&&this.emit(` -`,13,!0)},emit(c){o+=c},result(){return o}};n&&(typeof n.decorator=="function"&&(s=n.decorator(s)),n.sourceMap&&(s=wi(s)),n.mode in zt&&(s.tokenBefore=zt[n.mode]));let u={node:c=>s.node(c),children:qs,token:(c,a)=>s.token(c,a),tokenize:Ws};return s.node(r),s.result()}}function Ai(e){return{fromPlainObject(t){return e(t,{enter(r){r.children&&!(r.children instanceof I)&&(r.children=new I().fromArray(r.children))}}),t},toPlainObject(t){return e(t,{leave(r){r.children&&r.children instanceof I&&(r.children=r.children.toArray())}}),t}}}var{hasOwnProperty:Ar}=Object.prototype,at=function(){};function Ti(e){return typeof e=="function"?e:at}function Ei(e,t){return function(r,n,o){r.type===t&&e.call(this,r,n,o)}}function Ys(e,t){let r=t.structure,n=[];for(let o in r){if(Ar.call(r,o)===!1)continue;let i=r[o],s={name:o,type:!1,nullable:!1};Array.isArray(i)||(i=[i]);for(let u of i)u===null?s.nullable=!0:typeof u=="string"?s.type="node":Array.isArray(u)&&(s.type="list");s.type&&n.push(s)}return n.length?{context:t.walkContext,fields:n}:null}function Gs(e){let t={};for(let r in e.node)if(Ar.call(e.node,r)){let n=e.node[r];if(!n.structure)throw new Error("Missed `structure` field in `"+r+"` node type definition");t[r]=Ys(r,n)}return t}function Li(e,t){let r=e.fields.slice(),n=e.context,o=typeof n=="string";return t&&r.reverse(),function(i,s,u,c){let a;o&&(a=s[n],s[n]=i);for(let l of r){let p=i[l.name];if(!l.nullable||p){if(l.type==="list"){if(t?p.reduceRight(c,!1):p.reduce(c,!1))return!0}else if(u(p))return!0}}o&&(s[n]=a)}}function Pi({StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}){return{Atrule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Rule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Declaration:{StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}}}function Ii(e){let t=Gs(e),r={},n={},o=Symbol("break-walk"),i=Symbol("skip-node");for(let a in t)Ar.call(t,a)&&t[a]!==null&&(r[a]=Li(t[a],!1),n[a]=Li(t[a],!0));let s=Pi(r),u=Pi(n),c=function(a,l){function p(S,R,ke){let z=m.call(X,S,R,ke);return z===o?!0:z===i?!1:!!(P.hasOwnProperty(S.type)&&P[S.type](S,X,p,te)||f.call(X,S,R,ke)===o)}let m=at,f=at,P=r,te=(S,R,ke,z)=>S||p(R,ke,z),X={break:o,skip:i,root:a,stylesheet:null,atrule:null,atrulePrelude:null,rule:null,selector:null,block:null,declaration:null,function:null};if(typeof l=="function")m=l;else if(l&&(m=Ti(l.enter),f=Ti(l.leave),l.reverse&&(P=n),l.visit)){if(s.hasOwnProperty(l.visit))P=l.reverse?u[l.visit]:s[l.visit];else if(!t.hasOwnProperty(l.visit))throw new Error("Bad value `"+l.visit+"` for `visit` option (should be: "+Object.keys(t).sort().join(", ")+")");m=Ei(m,l.visit),f=Ei(f,l.visit)}if(m===at&&f===at)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");p(a)};return c.break=o,c.skip=i,c.find=function(a,l){let p=null;return c(a,function(m,f,P){if(l.call(this,m,f,P))return p=m,o}),p},c.findLast=function(a,l){let p=null;return c(a,{reverse:!0,enter(m,f,P){if(l.call(this,m,f,P))return p=m,o}}),p},c.findAll=function(a,l){let p=[];return c(a,function(m,f,P){l.call(this,m,f,P)&&p.push(m)}),p},c}function Vs(e){return e}function Ks(e){let{min:t,max:r,comma:n}=e;return t===0&&r===0?n?"#?":"*":t===0&&r===1?"?":t===1&&r===0?n?"#":"+":t===1&&r===1?"":(n?"#":"")+(t===r?"{"+t+"}":"{"+t+","+(r!==0?r:"")+"}")}function Qs(e){switch(e.type){case"Range":return" ["+(e.min===null?"-\u221E":e.min)+","+(e.max===null?"\u221E":e.max)+"]";default:throw new Error("Unknown node type `"+e.type+"`")}}function Xs(e,t,r,n){let o=e.combinator===" "||n?e.combinator:" "+e.combinator+" ",i=e.terms.map(s=>Tr(s,t,r,n)).join(o);return e.explicit||r?(n||i[0]===","?"[":"[ ")+i+(n?"]":" ]"):i}function Tr(e,t,r,n){let o;switch(e.type){case"Group":o=Xs(e,t,r,n)+(e.disallowEmpty?"!":"");break;case"Multiplier":return Tr(e.term,t,r,n)+t(Ks(e),e);case"Type":o="<"+e.name+(e.opts?t(Qs(e.opts),e.opts):"")+">";break;case"Property":o="<'"+e.name+"'>";break;case"Keyword":o=e.name;break;case"AtKeyword":o="@"+e.name;break;case"Function":o=e.name+"(";break;case"String":case"Token":o=e.value;break;case"Comma":o=",";break;default:throw new Error("Unknown node type `"+e.type+"`")}return t(o,e)}function Ie(e,t){let r=Vs,n=!1,o=!1;return typeof t=="function"?r=t:t&&(n=Boolean(t.forceBraces),o=Boolean(t.compact),typeof t.decorate=="function"&&(r=t.decorate)),Tr(e,r,n,o)}var Di={offset:0,line:1,column:1};function $s(e,t){let r=e.tokens,n=e.longestMatch,o=n<r.length&&r[n].node||null,i=o!==t?o:null,s=0,u=0,c=0,a="",l,p;for(let m=0;m<r.length;m++){let f=r[m].value;m===n&&(u=f.length,s=a.length),i!==null&&r[m].node===i&&(m<=n?c++:c=0),a+=f}return n===r.length||c>1?(l=Mt(i||t,"end")||st(Di,a),p=st(l)):(l=Mt(i,"start")||st(Mt(t,"start")||Di,a.slice(0,s)),p=Mt(i,"end")||st(l,a.substr(s,u))),{css:a,mismatchOffset:s,mismatchLength:u,start:l,end:p}}function Mt(e,t){let r=e&&e.loc&&e.loc[t];return r?"line"in r?st(r):r:null}function st({offset:e,line:t,column:r},n){let o={offset:e,line:t,column:r};if(n){let i=n.split(/\n|\r\n?|\f/);o.offset+=n.length,o.line+=i.length-1,o.column=i.length===1?o.column+n.length:i.pop().length+1}return o}var We=function(e,t){let r=Le("SyntaxReferenceError",e+(t?" `"+t+"`":""));return r.reference=t,r},Oi=function(e,t,r,n){let o=Le("SyntaxMatchError",e),{css:i,mismatchOffset:s,mismatchLength:u,start:c,end:a}=$s(n,r);return o.rawMessage=e,o.syntax=t?Ie(t):"<generic>",o.css=i,o.mismatchOffset=s,o.mismatchLength=u,o.message=e+` - syntax: `+o.syntax+` - value: `+(i||"<empty string>")+` - --------`+new Array(o.mismatchOffset+1).join("-")+"^",Object.assign(o,c),o.loc={source:r&&r.loc&&r.loc.source||"<unknown>",start:c,end:a},o};var Rt=new Map,Ye=new Map,Ft=45,lt=Js,Bt=el,Zs=Er;function ct(e,t){return t=t||0,e.length-t>=2&&e.charCodeAt(t)===Ft&&e.charCodeAt(t+1)===Ft}function Er(e,t){if(t=t||0,e.length-t>=3&&e.charCodeAt(t)===Ft&&e.charCodeAt(t+1)!==Ft){let r=e.indexOf("-",t+2);if(r!==-1)return e.substring(t,r+1)}return""}function Js(e){if(Rt.has(e))return Rt.get(e);let t=e.toLowerCase(),r=Rt.get(t);if(r===void 0){let n=ct(t,0),o=n?"":Er(t,0);r=Object.freeze({basename:t.substr(o.length),name:t,prefix:o,vendor:o,custom:n})}return Rt.set(e,r),r}function el(e){if(Ye.has(e))return Ye.get(e);let t=e,r=e[0];r==="/"?r=e[1]==="/"?"//":"/":r!=="_"&&r!=="*"&&r!=="$"&&r!=="#"&&r!=="+"&&r!=="&"&&(r="");let n=ct(t,r.length);if(!n&&(t=t.toLowerCase(),Ye.has(t))){let u=Ye.get(t);return Ye.set(e,u),u}let o=n?"":Er(t,r.length),i=t.substr(0,r.length+o.length),s=Object.freeze({basename:t.substr(i.length),name:t.substr(r.length),hack:r,vendor:o,prefix:i,custom:n});return Ye.set(e,s),s}var _t=["initial","inherit","unset","revert","revert-layer"];var pt=43,he=45,Lr=110,Ge=!0,rl=!1;function Ir(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function ut(e,t,r){for(;e!==null&&(e.type===13||e.type===25);)e=r(++t);return t}function Se(e,t,r,n){if(!e)return 0;let o=e.value.charCodeAt(t);if(o===pt||o===he){if(r)return 0;t++}for(;t<e.value.length;t++)if(!B(e.value.charCodeAt(t)))return 0;return n+1}function Pr(e,t,r){let n=!1,o=ut(e,t,r);if(e=r(o),e===null)return t;if(e.type!==10)if(Ir(e,pt)||Ir(e,he)){if(n=!0,o=ut(r(++o),o,r),e=r(o),e===null||e.type!==10)return 0}else return t;if(!n){let i=e.value.charCodeAt(0);if(i!==pt&&i!==he)return 0}return Se(e,n?0:1,n,o)}function Dr(e,t){let r=0;if(!e)return 0;if(e.type===10)return Se(e,0,rl,r);if(e.type===1&&e.value.charCodeAt(0)===he){if(!de(e.value,1,Lr))return 0;switch(e.value.length){case 2:return Pr(t(++r),r,t);case 3:return e.value.charCodeAt(2)!==he?0:(r=ut(t(++r),r,t),e=t(r),Se(e,0,Ge,r));default:return e.value.charCodeAt(2)!==he?0:Se(e,3,Ge,r)}}else if(e.type===1||Ir(e,pt)&&t(r+1).type===1){if(e.type!==1&&(e=t(++r)),e===null||!de(e.value,0,Lr))return 0;switch(e.value.length){case 1:return Pr(t(++r),r,t);case 2:return e.value.charCodeAt(1)!==he?0:(r=ut(t(++r),r,t),e=t(r),Se(e,0,Ge,r));default:return e.value.charCodeAt(1)!==he?0:Se(e,2,Ge,r)}}else if(e.type===12){let n=e.value.charCodeAt(0),o=n===pt||n===he?1:0,i=o;for(;i<e.value.length&&B(e.value.charCodeAt(i));i++);return i===o||!de(e.value,i,Lr)?0:i+1===e.value.length?Pr(t(++r),r,t):e.value.charCodeAt(i+1)!==he?0:i+2===e.value.length?(r=ut(t(++r),r,t),e=t(r),Se(e,0,Ge,r)):Se(e,i+2,Ge,r)}return 0}var nl=43,Ni=45,zi=63,ol=117;function Or(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function il(e,t){return e.value.charCodeAt(0)===t}function ht(e,t,r){let n=0;for(let o=t;o<e.value.length;o++){let i=e.value.charCodeAt(o);if(i===Ni&&r&&n!==0)return ht(e,t+n+1,!1),6;if(!ee(i)||++n>6)return 0}return n}function Ut(e,t,r){if(!e)return 0;for(;Or(r(t),zi);){if(++e>6)return 0;t++}return t}function Nr(e,t){let r=0;if(e===null||e.type!==1||!de(e.value,0,ol)||(e=t(++r),e===null))return 0;if(Or(e,nl))return e=t(++r),e===null?0:e.type===1?Ut(ht(e,0,!0),++r,t):Or(e,zi)?Ut(1,++r,t):0;if(e.type===10){let n=ht(e,1,!0);return n===0?0:(e=t(++r),e===null?r:e.type===12||e.type===10?!il(e,Ni)||!ht(e,1,!1)?0:r+1:Ut(n,r,t))}return e.type===12?Ut(ht(e,1,!0),++r,t):0}var al=["calc(","-moz-calc(","-webkit-calc("],zr=new Map([[2,22],[21,22],[19,20],[23,24]]),sl=["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],ll=["deg","grad","rad","turn"],cl=["s","ms"],ul=["hz","khz"],pl=["dpi","dpcm","dppx","x"],hl=["fr"],ml=["db"],fl=["st"];function le(e,t){return t<e.length?e.charCodeAt(t):0}function Ri(e,t){return ge(e,0,e.length,t)}function Fi(e,t){for(let r=0;r<t.length;r++)if(Ri(e,t[r]))return!0;return!1}function Bi(e,t){return t!==e.length-2?!1:le(e,t)===92&&B(le(e,t+1))}function jt(e,t,r){if(e&&e.type==="Range"){let n=Number(r!==void 0&&r!==t.length?t.substr(0,r):t);if(isNaN(n)||e.min!==null&&n<e.min&&typeof e.min!="string"||e.max!==null&&n>e.max&&typeof e.max!="string")return!0}return!1}function dl(e,t){let r=0,n=[],o=0;e:do{switch(e.type){case 24:case 22:case 20:if(e.type!==r)break e;if(r=n.pop(),n.length===0){o++;break e}break;case 2:case 21:case 19:case 23:n.push(r),r=zr.get(e.type);break}o++}while(e=t(o));return o}function ie(e){return function(t,r,n){return t===null?0:t.type===2&&Fi(t.value,al)?dl(t,r):e(t,r,n)}}function N(e){return function(t){return t===null||t.type!==e?0:1}}function gl(e){if(e===null||e.type!==1)return 0;let t=e.value.toLowerCase();return Fi(t,_t)||Ri(t,"default")?0:1}function bl(e){return e===null||e.type!==1||le(e.value,0)!==45||le(e.value,1)!==45?0:1}function xl(e){if(e===null||e.type!==4)return 0;let t=e.value.length;if(t!==4&&t!==5&&t!==7&&t!==9)return 0;for(let r=1;r<t;r++)if(!ee(le(e.value,r)))return 0;return 1}function yl(e){return e===null||e.type!==4||!Fe(le(e.value,1),le(e.value,2),le(e.value,3))?0:1}function kl(e,t){if(!e)return 0;let r=0,n=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==r)break e;r=n.pop();break;case 17:if(r===0)break e;break;case 9:if(r===0&&e.value==="!")break e;break;case 2:case 21:case 19:case 23:n.push(r),r=zr.get(e.type);break}o++}while(e=t(o));return o}function wl(e,t){if(!e)return 0;let r=0,n=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==r)break e;r=n.pop();break;case 2:case 21:case 19:case 23:n.push(r),r=zr.get(e.type);break}o++}while(e=t(o));return o}function ye(e){return e&&(e=new Set(e)),function(t,r,n){if(t===null||t.type!==12)return 0;let o=Te(t.value,0);if(e!==null){let i=t.value.indexOf("\\",o),s=i===-1||!Bi(t.value,i)?t.value.substr(o):t.value.substring(o,i);if(e.has(s.toLowerCase())===!1)return 0}return jt(n,t.value,o)?0:1}}function vl(e,t,r){return e===null||e.type!==11||jt(r,e.value,e.value.length-1)?0:1}function Mi(e){return typeof e!="function"&&(e=function(){return 0}),function(t,r,n){return t!==null&&t.type===10&&Number(t.value)===0?1:e(t,r,n)}}function Sl(e,t,r){if(e===null)return 0;let n=Te(e.value,0);return!(n===e.value.length)&&!Bi(e.value,n)||jt(r,e.value,n)?0:1}function Cl(e,t,r){if(e===null||e.type!==10)return 0;let n=le(e.value,0)===43||le(e.value,0)===45?1:0;for(;n<e.value.length;n++)if(!B(le(e.value,n)))return 0;return jt(r,e.value,n)?0:1}var Mr={"ident-token":N(1),"function-token":N(2),"at-keyword-token":N(3),"hash-token":N(4),"string-token":N(5),"bad-string-token":N(6),"url-token":N(7),"bad-url-token":N(8),"delim-token":N(9),"number-token":N(10),"percentage-token":N(11),"dimension-token":N(12),"whitespace-token":N(13),"CDO-token":N(14),"CDC-token":N(15),"colon-token":N(16),"semicolon-token":N(17),"comma-token":N(18),"[-token":N(19),"]-token":N(20),"(-token":N(21),")-token":N(22),"{-token":N(23),"}-token":N(24),string:N(5),ident:N(1),"custom-ident":gl,"custom-property-name":bl,"hex-color":xl,"id-selector":yl,"an-plus-b":Dr,urange:Nr,"declaration-value":kl,"any-value":wl,dimension:ie(ye(null)),angle:ie(ye(ll)),decibel:ie(ye(ml)),frequency:ie(ye(ul)),flex:ie(ye(hl)),length:ie(Mi(ye(sl))),resolution:ie(ye(pl)),semitones:ie(ye(fl)),time:ie(ye(cl)),percentage:ie(vl),zero:Mi(),number:ie(Sl),integer:ie(Cl)};var qr={};b(qr,{SyntaxError:()=>Ht,generate:()=>Ie,parse:()=>Qe,walk:()=>Qt});function Ht(e,t,r){return Object.assign(Le("SyntaxError",e),{input:t,offset:r,rawMessage:e,message:e+` - `+t+` ---`+new Array((r||t.length)+1).join("-")+"^"})}var Al=9,Tl=10,El=12,Ll=13,Pl=32,qt=class{constructor(t){this.str=t,this.pos=0}charCodeAt(t){return t<this.str.length?this.str.charCodeAt(t):0}charCode(){return this.charCodeAt(this.pos)}nextCharCode(){return this.charCodeAt(this.pos+1)}nextNonWsCode(t){return this.charCodeAt(this.findWsEnd(t))}findWsEnd(t){for(;t<this.str.length;t++){let r=this.str.charCodeAt(t);if(r!==Ll&&r!==Tl&&r!==El&&r!==Pl&&r!==Al)break}return t}substringToPos(t){return this.str.substring(this.pos,this.pos=t)}eat(t){this.charCode()!==t&&this.error("Expect `"+String.fromCharCode(t)+"`"),this.pos++}peek(){return this.pos<this.str.length?this.str.charAt(this.pos++):""}error(t){throw new Ht(t,this.str,this.pos)}};var Il=9,Dl=10,Ol=12,Nl=13,zl=32,Gi=33,Br=35,_i=38,Wt=39,Vi=40,Ml=41,Ki=42,_r=43,Ur=44,Ui=45,jr=60,Qi=62,Fr=63,Rl=64,Kt=91,Hr=93,Yt=123,ji=124,Hi=125,qi=8734,mt=new Uint8Array(128).map((e,t)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(t))?1:0),Wi={" ":1,"&&":2,"||":3,"|":4};function Gt(e){return e.substringToPos(e.findWsEnd(e.pos))}function Ve(e){let t=e.pos;for(;t<e.str.length;t++){let r=e.str.charCodeAt(t);if(r>=128||mt[r]===0)break}return e.pos===t&&e.error("Expect a keyword"),e.substringToPos(t)}function Vt(e){let t=e.pos;for(;t<e.str.length;t++){let r=e.str.charCodeAt(t);if(r<48||r>57)break}return e.pos===t&&e.error("Expect a number"),e.substringToPos(t)}function Fl(e){let t=e.str.indexOf("'",e.pos+1);return t===-1&&(e.pos=e.str.length,e.error("Expect an apostrophe")),e.substringToPos(t+1)}function Yi(e){let t=null,r=null;return e.eat(Yt),t=Vt(e),e.charCode()===Ur?(e.pos++,e.charCode()!==Hi&&(r=Vt(e))):r=t,e.eat(Hi),{min:Number(t),max:r?Number(r):0}}function Bl(e){let t=null,r=!1;switch(e.charCode()){case Ki:e.pos++,t={min:0,max:0};break;case _r:e.pos++,t={min:1,max:0};break;case Fr:e.pos++,t={min:0,max:1};break;case Br:e.pos++,r=!0,e.charCode()===Yt?t=Yi(e):e.charCode()===Fr?(e.pos++,t={min:0,max:0}):t={min:1,max:0};break;case Yt:t=Yi(e);break;default:return null}return{type:"Multiplier",comma:r,min:t.min,max:t.max,term:null}}function Ke(e,t){let r=Bl(e);return r!==null?(r.term=t,e.charCode()===Br&&e.charCodeAt(e.pos-1)===_r?Ke(e,r):r):t}function Rr(e){let t=e.peek();return t===""?null:{type:"Token",value:t}}function _l(e){let t;return e.eat(jr),e.eat(Wt),t=Ve(e),e.eat(Wt),e.eat(Qi),Ke(e,{type:"Property",name:t})}function Ul(e){let t=null,r=null,n=1;return e.eat(Kt),e.charCode()===Ui&&(e.peek(),n=-1),n==-1&&e.charCode()===qi?e.peek():(t=n*Number(Vt(e)),mt[e.charCode()]!==0&&(t+=Ve(e))),Gt(e),e.eat(Ur),Gt(e),e.charCode()===qi?e.peek():(n=1,e.charCode()===Ui&&(e.peek(),n=-1),r=n*Number(Vt(e)),mt[e.charCode()]!==0&&(r+=Ve(e))),e.eat(Hr),{type:"Range",min:t,max:r}}function jl(e){let t,r=null;return e.eat(jr),t=Ve(e),e.charCode()===Vi&&e.nextCharCode()===Ml&&(e.pos+=2,t+="()"),e.charCodeAt(e.findWsEnd(e.pos))===Kt&&(Gt(e),r=Ul(e)),e.eat(Qi),Ke(e,{type:"Type",name:t,opts:r})}function Hl(e){let t=Ve(e);return e.charCode()===Vi?(e.pos++,{type:"Function",name:t}):Ke(e,{type:"Keyword",name:t})}function ql(e,t){function r(o,i){return{type:"Group",terms:o,combinator:i,disallowEmpty:!1,explicit:!1}}let n;for(t=Object.keys(t).sort((o,i)=>Wi[o]-Wi[i]);t.length>0;){n=t.shift();let o=0,i=0;for(;o<e.length;o++){let s=e[o];s.type==="Combinator"&&(s.value===n?(i===-1&&(i=o-1),e.splice(o,1),o--):(i!==-1&&o-i>1&&(e.splice(i,o-i,r(e.slice(i,o),n)),o=i+1),i=-1))}i!==-1&&t.length&&e.splice(i,o-i,r(e.slice(i,o),n))}return n}function Xi(e){let t=[],r={},n,o=null,i=e.pos;for(;n=Yl(e);)n.type!=="Spaces"&&(n.type==="Combinator"?((o===null||o.type==="Combinator")&&(e.pos=i,e.error("Unexpected combinator")),r[n.value]=!0):o!==null&&o.type!=="Combinator"&&(r[" "]=!0,t.push({type:"Combinator",value:" "})),t.push(n),o=n,i=e.pos);return o!==null&&o.type==="Combinator"&&(e.pos-=i,e.error("Unexpected combinator")),{type:"Group",terms:t,combinator:ql(t,r)||" ",disallowEmpty:!1,explicit:!1}}function Wl(e){let t;return e.eat(Kt),t=Xi(e),e.eat(Hr),t.explicit=!0,e.charCode()===Gi&&(e.pos++,t.disallowEmpty=!0),t}function Yl(e){let t=e.charCode();if(t<128&&mt[t]===1)return Hl(e);switch(t){case Hr:break;case Kt:return Ke(e,Wl(e));case jr:return e.nextCharCode()===Wt?_l(e):jl(e);case ji:return{type:"Combinator",value:e.substringToPos(e.pos+(e.nextCharCode()===ji?2:1))};case _i:return e.pos++,e.eat(_i),{type:"Combinator",value:"&&"};case Ur:return e.pos++,{type:"Comma"};case Wt:return Ke(e,{type:"String",value:Fl(e)});case zl:case Il:case Dl:case Nl:case Ol:return{type:"Spaces",value:Gt(e)};case Rl:return t=e.nextCharCode(),t<128&&mt[t]===1?(e.pos++,{type:"AtKeyword",name:Ve(e)}):Rr(e);case Ki:case _r:case Fr:case Br:case Gi:break;case Yt:if(t=e.nextCharCode(),t<48||t>57)return Rr(e);break;default:return Rr(e)}}function Qe(e){let t=new qt(e),r=Xi(t);return t.pos!==e.length&&t.error("Unexpected input"),r.terms.length===1&&r.terms[0].type==="Group"?r.terms[0]:r}var ft=function(){};function $i(e){return typeof e=="function"?e:ft}function Qt(e,t,r){function n(s){switch(o.call(r,s),s.type){case"Group":s.terms.forEach(n);break;case"Multiplier":n(s.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+s.type)}i.call(r,s)}let o=ft,i=ft;if(typeof t=="function"?o=t:t&&(o=$i(t.enter),i=$i(t.leave)),o===ft&&i===ft)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");n(e,r)}var Gl={decorator(e){let t=[],r=null;return{...e,node(n){let o=r;r=n,e.node.call(this,n),r=o},emit(n,o,i){t.push({type:o,value:n,node:i?null:r})},result(){return t}}}};function Vl(e){let t=[];return ve(e,(r,n,o)=>t.push({type:r,value:e.slice(n,o),node:null})),t}function Zi(e,t){return typeof e=="string"?Vl(e):t.generate(e,Gl)}var C={type:"Match"},L={type:"Mismatch"},Xt={type:"DisallowEmpty"},Kl=40,Ql=41;function Z(e,t,r){return t===C&&r===L||e===C&&t===C&&r===C?e:(e.type==="If"&&e.else===L&&t===C&&(t=e.then,e=e.match),{type:"If",match:e,then:t,else:r})}function ea(e){return e.length>2&&e.charCodeAt(e.length-2)===Kl&&e.charCodeAt(e.length-1)===Ql}function Ji(e){return e.type==="Keyword"||e.type==="AtKeyword"||e.type==="Function"||e.type==="Type"&&ea(e.name)}function Wr(e,t,r){switch(e){case" ":{let n=C;for(let o=t.length-1;o>=0;o--){let i=t[o];n=Z(i,n,L)}return n}case"|":{let n=L,o=null;for(let i=t.length-1;i>=0;i--){let s=t[i];if(Ji(s)&&(o===null&&i>0&&Ji(t[i-1])&&(o=Object.create(null),n=Z({type:"Enum",map:o},C,n)),o!==null)){let u=(ea(s.name)?s.name.slice(0,-1):s.name).toLowerCase();if(!(u in o)){o[u]=s;continue}}o=null,n=Z(s,C,n)}return n}case"&&":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!0};let n=L;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=Wr(e,t.filter(function(u){return u!==i}),!1):s=C,n=Z(i,s,n)}return n}case"||":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!1};let n=r?C:L;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=Wr(e,t.filter(function(u){return u!==i}),!0):s=C,n=Z(i,s,n)}return n}}}function Xl(e){let t=C,r=Yr(e.term);if(e.max===0)r=Z(r,Xt,L),t=Z(r,null,L),t.then=Z(C,C,t),e.comma&&(t.then.else=Z({type:"Comma",syntax:e},t,L));else for(let n=e.min||1;n<=e.max;n++)e.comma&&t!==C&&(t=Z({type:"Comma",syntax:e},t,L)),t=Z(r,Z(C,C,t),L);if(e.min===0)t=Z(C,C,t);else for(let n=0;n<e.min-1;n++)e.comma&&t!==C&&(t=Z({type:"Comma",syntax:e},t,L)),t=Z(r,t,L);return t}function Yr(e){if(typeof e=="function")return{type:"Generic",fn:e};switch(e.type){case"Group":{let t=Wr(e.combinator,e.terms.map(Yr),!1);return e.disallowEmpty&&(t=Z(t,Xt,L)),t}case"Multiplier":return Xl(e);case"Type":case"Property":return{type:e.type,name:e.name,syntax:e};case"Keyword":return{type:e.type,name:e.name.toLowerCase(),syntax:e};case"AtKeyword":return{type:e.type,name:"@"+e.name.toLowerCase(),syntax:e};case"Function":return{type:e.type,name:e.name.toLowerCase()+"(",syntax:e};case"String":return e.value.length===3?{type:"Token",value:e.value.charAt(1),syntax:e}:{type:e.type,value:e.value.substr(1,e.value.length-2).replace(/\\'/g,"'"),syntax:e};case"Token":return{type:e.type,value:e.value,syntax:e};case"Comma":return{type:e.type,syntax:e};default:throw new Error("Unknown node type:",e.type)}}function $t(e,t){return typeof e=="string"&&(e=Qe(e)),{type:"MatchGraph",match:Yr(e),syntax:t||null,source:e}}var{hasOwnProperty:ta}=Object.prototype,$l=0,Zl=1,Vr=2,aa=3,ra="Match",Jl="Mismatch",ec="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",na=15e3,tc=0;function rc(e){let t=null,r=null,n=e;for(;n!==null;)r=n.prev,n.prev=t,t=n,n=r;return t}function Gr(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++){let n=t.charCodeAt(r),o=e.charCodeAt(r);if(o>=65&&o<=90&&(o=o|32),o!==n)return!1}return!0}function nc(e){return e.type!==9?!1:e.value!=="?"}function oa(e){return e===null?!0:e.type===18||e.type===2||e.type===21||e.type===19||e.type===23||nc(e)}function ia(e){return e===null?!0:e.type===22||e.type===20||e.type===24||e.type===9&&e.value==="/"}function oc(e,t,r){function n(){do R++,S=R<e.length?e[R]:null;while(S!==null&&(S.type===13||S.type===25))}function o(ae){let fe=R+ae;return fe<e.length?e[fe]:null}function i(ae,fe){return{nextState:ae,matchStack:z,syntaxStack:p,thenStack:m,tokenIndex:R,prev:fe}}function s(ae){m={nextState:ae,matchStack:z,syntaxStack:p,prev:m}}function u(ae){f=i(ae,f)}function c(){z={type:Zl,syntax:t.syntax,token:S,prev:z},n(),P=null,R>ke&&(ke=R)}function a(){p={syntax:t.syntax,opts:t.syntax.opts||p!==null&&p.opts||null,prev:p},z={type:Vr,syntax:t.syntax,token:z.token,prev:z}}function l(){z.type===Vr?z=z.prev:z={type:aa,syntax:p.syntax,token:z.token,prev:z},p=p.prev}let p=null,m=null,f=null,P=null,te=0,X=null,S=null,R=-1,ke=0,z={type:$l,syntax:null,token:null,prev:null};for(n();X===null&&++te<na;)switch(t.type){case"Match":if(m===null){if(S!==null&&(R!==e.length-1||S.value!=="\\0"&&S.value!=="\\9")){t=L;break}X=ra;break}if(t=m.nextState,t===Xt)if(m.matchStack===z){t=L;break}else t=C;for(;m.syntaxStack!==p;)l();m=m.prev;break;case"Mismatch":if(P!==null&&P!==!1)(f===null||R>f.tokenIndex)&&(f=P,P=!1);else if(f===null){X=Jl;break}t=f.nextState,m=f.thenStack,p=f.syntaxStack,z=f.matchStack,R=f.tokenIndex,S=R<e.length?e[R]:null,f=f.prev;break;case"MatchGraph":t=t.match;break;case"If":t.else!==L&&u(t.else),t.then!==C&&s(t.then),t=t.match;break;case"MatchOnce":t={type:"MatchOnceBuffer",syntax:t,index:0,mask:0};break;case"MatchOnceBuffer":{let Q=t.syntax.terms;if(t.index===Q.length){if(t.mask===0||t.syntax.all){t=L;break}t=C;break}if(t.mask===(1<<Q.length)-1){t=C;break}for(;t.index<Q.length;t.index++){let J=1<<t.index;if((t.mask&J)===0){u(t),s({type:"AddMatchOnce",syntax:t.syntax,mask:t.mask|J}),t=Q[t.index++];break}}break}case"AddMatchOnce":t={type:"MatchOnceBuffer",syntax:t.syntax,index:0,mask:t.mask};break;case"Enum":if(S!==null){let Q=S.value.toLowerCase();if(Q.indexOf("\\")!==-1&&(Q=Q.replace(/\\[09].*$/,"")),ta.call(t.map,Q)){t=t.map[Q];break}}t=L;break;case"Generic":{let Q=p!==null?p.opts:null,J=R+Math.floor(t.fn(S,o,Q));if(!isNaN(J)&&J>R){for(;R<J;)c();t=C}else t=L;break}case"Type":case"Property":{let Q=t.type==="Type"?"types":"properties",J=ta.call(r,Q)?r[Q][t.name]:null;if(!J||!J.match)throw new Error("Bad syntax reference: "+(t.type==="Type"?"<"+t.name+">":"<'"+t.name+"'>"));if(P!==!1&&S!==null&&t.type==="Type"&&(t.name==="custom-ident"&&S.type===1||t.name==="length"&&S.value==="0")){P===null&&(P=i(t,f)),t=L;break}a(),t=J.match;break}case"Keyword":{let Q=t.name;if(S!==null){let J=S.value;if(J.indexOf("\\")!==-1&&(J=J.replace(/\\[09].*$/,"")),Gr(J,Q)){c(),t=C;break}}t=L;break}case"AtKeyword":case"Function":if(S!==null&&Gr(S.value,t.name)){c(),t=C;break}t=L;break;case"Token":if(S!==null&&S.value===t.value){c(),t=C;break}t=L;break;case"Comma":S!==null&&S.type===18?oa(z.token)?t=L:(c(),t=ia(S)?L:C):t=oa(z.token)||ia(S)?C:L;break;case"String":let ae="",fe=R;for(;fe<e.length&&ae.length<t.value.length;fe++)ae+=e[fe].value;if(Gr(ae,t.value)){for(;R<fe;)c();t=C}else t=L;break;default:throw new Error("Unknown node type: "+t.type)}switch(tc+=te,X){case null:console.warn("[csstree-match] BREAK after "+na+" iterations"),X=ec,z=null;break;case ra:for(;p!==null;)l();break;default:z=null}return{tokens:e,reason:X,iterations:te,match:z,longestMatch:ke}}function Kr(e,t,r){let n=oc(e,t,r||{});if(n.match===null)return n;let o=n.match,i=n.match={syntax:t.syntax||null,match:[]},s=[i];for(o=rc(o).prev;o!==null;){switch(o.type){case Vr:i.match.push(i={syntax:o.syntax,match:[]}),s.push(i);break;case aa:s.pop(),i=s[s.length-1];break;default:i.match.push({syntax:o.syntax||null,token:o.token.value,node:o.token.node})}o=o.prev}return n}var Xr={};b(Xr,{getTrace:()=>sa,isKeyword:()=>sc,isProperty:()=>ac,isType:()=>ic});function sa(e){function t(o){return o===null?!1:o.type==="Type"||o.type==="Property"||o.type==="Keyword"}function r(o){if(Array.isArray(o.match)){for(let i=0;i<o.match.length;i++)if(r(o.match[i]))return t(o.syntax)&&n.unshift(o.syntax),!0}else if(o.node===e)return n=t(o.syntax)?[o.syntax]:[],!0;return!1}let n=null;return this.matched!==null&&r(this.matched),n}function ic(e,t){return Qr(this,e,r=>r.type==="Type"&&r.name===t)}function ac(e,t){return Qr(this,e,r=>r.type==="Property"&&r.name===t)}function sc(e){return Qr(this,e,t=>t.type==="Keyword")}function Qr(e,t,r){let n=sa.call(e,t);return n===null?!1:n.some(r)}function la(e){return"node"in e?e.node:la(e.match[0])}function ca(e){return"node"in e?e.node:ca(e.match[e.match.length-1])}function $r(e,t,r,n,o){function i(u){if(u.syntax!==null&&u.syntax.type===n&&u.syntax.name===o){let c=la(u),a=ca(u);e.syntax.walk(t,function(l,p,m){if(l===c){let f=new I;do{if(f.appendData(p.data),p.data===a)break;p=p.next}while(p!==null);s.push({parent:m,nodes:f})}})}Array.isArray(u.match)&&u.match.forEach(i)}let s=[];return r.matched!==null&&i(r.matched),s}var{hasOwnProperty:dt}=Object.prototype;function Zr(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&e>=0}function ua(e){return Boolean(e)&&Zr(e.offset)&&Zr(e.line)&&Zr(e.column)}function lc(e,t){return function(n,o){if(!n||n.constructor!==Object)return o(n,"Type of node should be an Object");for(let i in n){let s=!0;if(dt.call(n,i)!==!1){if(i==="type")n.type!==e&&o(n,"Wrong node type `"+n.type+"`, expected `"+e+"`");else if(i==="loc"){if(n.loc===null)continue;if(n.loc&&n.loc.constructor===Object)if(typeof n.loc.source!="string")i+=".source";else if(!ua(n.loc.start))i+=".start";else if(!ua(n.loc.end))i+=".end";else continue;s=!1}else if(t.hasOwnProperty(i)){s=!1;for(let u=0;!s&&u<t[i].length;u++){let c=t[i][u];switch(c){case String:s=typeof n[i]=="string";break;case Boolean:s=typeof n[i]=="boolean";break;case null:s=n[i]===null;break;default:typeof c=="string"?s=n[i]&&n[i].type===c:Array.isArray(c)&&(s=n[i]instanceof I)}}}else o(n,"Unknown field `"+i+"` for "+e+" node type");s||o(n,"Bad value for `"+e+"."+i+"`")}}for(let i in t)dt.call(t,i)&&dt.call(n,i)===!1&&o(n,"Field `"+e+"."+i+"` is missed")}}function cc(e,t){let r=t.structure,n={type:String,loc:!0},o={type:'"'+e+'"'};for(let i in r){if(dt.call(r,i)===!1)continue;let s=[],u=n[i]=Array.isArray(r[i])?r[i].slice():[r[i]];for(let c=0;c<u.length;c++){let a=u[c];if(a===String||a===Boolean)s.push(a.name);else if(a===null)s.push("null");else if(typeof a=="string")s.push("<"+a+">");else if(Array.isArray(a))s.push("List");else throw new Error("Wrong value `"+a+"` in `"+e+"."+i+"` structure definition")}o[i]=s.join(" | ")}return{docs:o,check:lc(e,n)}}function pa(e){let t={};if(e.node){for(let r in e.node)if(dt.call(e.node,r)){let n=e.node[r];if(n.structure)t[r]=cc(r,n);else throw new Error("Missed `structure` field in `"+r+"` node type definition")}}return t}var uc=$t(_t.join(" | "));function Jr(e,t,r){let n={};for(let o in e)e[o].syntax&&(n[o]=r?e[o].syntax:Ie(e[o].syntax,{compact:t}));return n}function pc(e,t,r){let n={};for(let[o,i]of Object.entries(e))n[o]={prelude:i.prelude&&(r?i.prelude.syntax:Ie(i.prelude.syntax,{compact:t})),descriptors:i.descriptors&&Jr(i.descriptors,t,r)};return n}function hc(e){for(let t=0;t<e.length;t++)if(e[t].value.toLowerCase()==="var(")return!0;return!1}function ce(e,t,r){return{matched:e,iterations:r,error:t,...Xr}}function Xe(e,t,r,n){let o=Zi(r,e.syntax),i;return hc(o)?ce(null,new Error("Matching for a tree with var() is not supported")):(n&&(i=Kr(o,e.cssWideKeywordsSyntax,e)),(!n||!i.match)&&(i=Kr(o,t.match,e),!i.match)?ce(null,new Oi(i.reason,t.syntax,r,i),i.iterations):ce(i.match,null,i.iterations))}var De=class{constructor(t,r,n){if(this.cssWideKeywordsSyntax=uc,this.syntax=r,this.generic=!1,this.atrules=Object.create(null),this.properties=Object.create(null),this.types=Object.create(null),this.structure=n||pa(t),t){if(t.types)for(let o in t.types)this.addType_(o,t.types[o]);if(t.generic){this.generic=!0;for(let o in Mr)this.addType_(o,Mr[o])}if(t.atrules)for(let o in t.atrules)this.addAtrule_(o,t.atrules[o]);if(t.properties)for(let o in t.properties)this.addProperty_(o,t.properties[o])}}checkStructure(t){function r(i,s){o.push({node:i,message:s})}let n=this.structure,o=[];return this.syntax.walk(t,function(i){n.hasOwnProperty(i.type)?n[i.type].check(i,r):r(i,"Unknown node type `"+i.type+"`")}),o.length?o:!1}createDescriptor(t,r,n,o=null){let i={type:r,name:n},s={type:r,name:n,parent:o,serializable:typeof t=="string"||t&&typeof t.type=="string",syntax:null,match:null};return typeof t=="function"?s.match=$t(t,i):(typeof t=="string"?Object.defineProperty(s,"syntax",{get(){return Object.defineProperty(s,"syntax",{value:Qe(t)}),s.syntax}}):s.syntax=t,Object.defineProperty(s,"match",{get(){return Object.defineProperty(s,"match",{value:$t(s.syntax,i)}),s.match}})),s}addAtrule_(t,r){!r||(this.atrules[t]={type:"Atrule",name:t,prelude:r.prelude?this.createDescriptor(r.prelude,"AtrulePrelude",t):null,descriptors:r.descriptors?Object.keys(r.descriptors).reduce((n,o)=>(n[o]=this.createDescriptor(r.descriptors[o],"AtruleDescriptor",o,t),n),Object.create(null)):null})}addProperty_(t,r){!r||(this.properties[t]=this.createDescriptor(r,"Property",t))}addType_(t,r){!r||(this.types[t]=this.createDescriptor(r,"Type",t))}checkAtruleName(t){if(!this.getAtrule(t))return new We("Unknown at-rule","@"+t)}checkAtrulePrelude(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t);if(!o.prelude&&r)return new SyntaxError("At-rule `@"+t+"` should not contain a prelude");if(o.prelude&&!r&&!Xe(this,o.prelude,"",!1).matched)return new SyntaxError("At-rule `@"+t+"` should contain a prelude")}checkAtruleDescriptorName(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t),i=lt(r);if(!o.descriptors)return new SyntaxError("At-rule `@"+t+"` has no known descriptors");if(!o.descriptors[i.name]&&!o.descriptors[i.basename])return new We("Unknown at-rule descriptor",r)}checkPropertyName(t){if(!this.getProperty(t))return new We("Unknown property",t)}matchAtrulePrelude(t,r){let n=this.checkAtrulePrelude(t,r);if(n)return ce(null,n);let o=this.getAtrule(t);return o.prelude?Xe(this,o.prelude,r||"",!1):ce(null,null)}matchAtruleDescriptor(t,r,n){let o=this.checkAtruleDescriptorName(t,r);if(o)return ce(null,o);let i=this.getAtrule(t),s=lt(r);return Xe(this,i.descriptors[s.name]||i.descriptors[s.basename],n,!1)}matchDeclaration(t){return t.type!=="Declaration"?ce(null,new Error("Not a Declaration node")):this.matchProperty(t.property,t.value)}matchProperty(t,r){if(Bt(t).custom)return ce(null,new Error("Lexer matching doesn't applicable for custom properties"));let n=this.checkPropertyName(t);return n?ce(null,n):Xe(this,this.getProperty(t),r,!0)}matchType(t,r){let n=this.getType(t);return n?Xe(this,n,r,!1):ce(null,new We("Unknown type",t))}match(t,r){return typeof t!="string"&&(!t||!t.type)?ce(null,new We("Bad syntax")):((typeof t=="string"||!t.match)&&(t=this.createDescriptor(t,"Type","anonymous")),Xe(this,t,r,!1))}findValueFragments(t,r,n,o){return $r(this,r,this.matchProperty(t,r),n,o)}findDeclarationValueFragments(t,r,n){return $r(this,t.value,this.matchDeclaration(t),r,n)}findAllFragments(t,r,n){let o=[];return this.syntax.walk(t,{visit:"Declaration",enter:i=>{o.push.apply(o,this.findDeclarationValueFragments(i,r,n))}}),o}getAtrule(t,r=!0){let n=lt(t);return(n.vendor&&r?this.atrules[n.name]||this.atrules[n.basename]:this.atrules[n.name])||null}getAtrulePrelude(t,r=!0){let n=this.getAtrule(t,r);return n&&n.prelude||null}getAtruleDescriptor(t,r){return this.atrules.hasOwnProperty(t)&&this.atrules.declarators&&this.atrules[t].declarators[r]||null}getProperty(t,r=!0){let n=Bt(t);return(n.vendor&&r?this.properties[n.name]||this.properties[n.basename]:this.properties[n.name])||null}getType(t){return hasOwnProperty.call(this.types,t)?this.types[t]:null}validate(){function t(o,i,s,u){if(s.has(i))return s.get(i);s.set(i,!1),u.syntax!==null&&Qt(u.syntax,function(c){if(c.type!=="Type"&&c.type!=="Property")return;let a=c.type==="Type"?o.types:o.properties,l=c.type==="Type"?r:n;(!hasOwnProperty.call(a,c.name)||t(o,c.name,l,a[c.name]))&&s.set(i,!0)},this)}let r=new Map,n=new Map;for(let o in this.types)t(this,o,r,this.types[o]);for(let o in this.properties)t(this,o,n,this.properties[o]);return r=[...r.keys()].filter(o=>r.get(o)),n=[...n.keys()].filter(o=>n.get(o)),r.length||n.length?{types:r,properties:n}:null}dump(t,r){return{generic:this.generic,types:Jr(this.types,!r,t),properties:Jr(this.properties,!r,t),atrules:pc(this.atrules,!r,t)}}toString(){return JSON.stringify(this.dump())}};var{hasOwnProperty:$e}=Object.prototype,mc={generic:!0,types:en,atrules:{prelude:ma,descriptors:ma},properties:en,parseContext:fc,scope:da,atrule:["parse"],pseudo:["parse"],node:["name","structure","parse","generate","walkContext"]};function Zt(e){return e&&e.constructor===Object}function fa(e){return Zt(e)?{...e}:e}function fc(e,t){return Object.assign(e,t)}function da(e,t){for(let r in t)$e.call(t,r)&&(Zt(e[r])?da(e[r],t[r]):e[r]=fa(t[r]));return e}function ha(e,t){return typeof t=="string"&&/^\s*\|/.test(t)?typeof e=="string"?e+t:t.replace(/^\s*\|\s*/,""):t||null}function en(e,t){if(typeof t=="string")return ha(e,t);let r={...e};for(let n in t)$e.call(t,n)&&(r[n]=ha($e.call(e,n)?e[n]:void 0,t[n]));return r}function ma(e,t){let r=en(e,t);return!Zt(r)||Object.keys(r).length?r:null}function gt(e,t,r){for(let n in r)if($e.call(r,n)!==!1){if(r[n]===!0)$e.call(t,n)&&(e[n]=fa(t[n]));else if(r[n]){if(typeof r[n]=="function"){let o=r[n];e[n]=o({},e[n]),e[n]=o(e[n]||{},t[n])}else if(Zt(r[n])){let o={};for(let i in e[n])o[i]=gt({},e[n][i],r[n]);for(let i in t[n])o[i]=gt(o[i]||{},t[n][i],r[n]);e[n]=o}else if(Array.isArray(r[n])){let o={},i=r[n].reduce(function(s,u){return s[u]=!0,s},{});for(let[s,u]of Object.entries(e[n]||{}))o[s]={},u&>(o[s],u,i);for(let s in t[n])$e.call(t[n],s)&&(o[s]||(o[s]={}),t[n]&&t[n][s]&>(o[s],t[n][s],i));e[n]=o}}}return e}var Jt=(e,t)=>gt(e,t,mc);function ga(e){let t=Jo(e),r=Ii(e),n=Ci(e),{fromPlainObject:o,toPlainObject:i}=Ai(r),s={lexer:null,createLexer:u=>new De(u,s,s.lexer.structure),tokenize:ve,parse:t,generate:n,walk:r,find:r.find,findLast:r.findLast,findAll:r.findAll,fromPlainObject:o,toPlainObject:i,fork(u){let c=Jt({},e);return ga(typeof u=="function"?u(c,Object.assign):Jt(c,u))}};return s.lexer=new De({generic:!0,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},s),s}var er=e=>ga(Jt({},e));var ba={generic:!0,types:{"absolute-size":"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large","alpha-value":"<number>|<percentage>","angle-percentage":"<angle>|<percentage>","angular-color-hint":"<angle-percentage>","angular-color-stop":"<color>&&<color-stop-angle>?","angular-color-stop-list":"[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>","animateable-feature":"scroll-position|contents|<custom-ident>",attachment:"scroll|fixed|local","attr()":"attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attribute-selector":"'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )","auto-track-list":"[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?","baseline-position":"[first|last]? baseline","basic-shape":"<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>","bg-image":"none|<image>","bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","bg-position":"[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]","bg-size":"[<length-percentage>|auto]{1,2}|cover|contain","blur()":"blur( <length> )","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",box:"border-box|padding-box|content-box","brightness()":"brightness( <number-percentage> )","calc()":"calc( <calc-sum> )","calc-sum":"<calc-product> [['+'|'-'] <calc-product>]*","calc-product":"<calc-value> ['*' <calc-value>|'/' <number>]*","calc-value":"<number>|<dimension>|<percentage>|( <calc-sum> )","cf-final-image":"<image>|<color>","cf-mixing-image":"<percentage>?&&<image>","circle()":"circle( [<shape-radius>]? [at <position>]? )","clamp()":"clamp( <calc-sum>#{3} )","class-selector":"'.' <ident-token>","clip-source":"<url>",color:"<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<hex-color>|<named-color>|currentcolor|<deprecated-system-color>","color-stop":"<color-stop-length>|<color-stop-angle>","color-stop-angle":"<angle-percentage>{1,2}","color-stop-length":"<length-percentage>{1,2}","color-stop-list":"[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>",combinator:"'>'|'+'|'~'|['||']","common-lig-values":"[common-ligatures|no-common-ligatures]","compat-auto":"searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[<type-selector>? <subclass-selector>* [<pseudo-element-selector> <pseudo-class-selector>*]*]!","compound-selector-list":"<compound-selector>#","complex-selector":"<compound-selector> [<combinator>? <compound-selector>]*","complex-selector-list":"<complex-selector>#","conic-gradient()":"conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","contextual-alt-values":"[contextual|no-contextual]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"<image>","contrast()":"contrast( [<number-percentage>] )",counter:"<counter()>|<counters()>","counter()":"counter( <counter-name> , <counter-style>? )","counter-name":"<custom-ident>","counter-style":"<counter-style-name>|symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <counter-name> , <string> , <counter-style>? )","cross-fade()":"cross-fade( <cf-mixing-image> , <cf-final-image>? )","cubic-bezier-timing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"<display-outside>?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( <length>{2,3} <color>? )","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )","ellipse()":"ellipse( [<shape-radius>{2}]? [at <position>]? )","ending-shape":"circle|ellipse","env()":"env( <custom-ident> , <declaration-value>? )","explicit-track-list":"[<line-names>? <track-size>]+ <line-names>?","family-name":"<string>|<custom-ident>+","feature-tag-value":"<string> [<integer>|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":"<feature-type> '{' <feature-value-declaration-list> '}'","feature-value-block-list":"<feature-value-block>+","feature-value-declaration":"<custom-ident> : <integer>+ ;","feature-value-declaration-list":"<feature-value-declaration>","feature-value-name":"<custom-ident>","fill-rule":"nonzero|evenodd","filter-function":"<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>","filter-function-list":"[<filter-function>|<url>]+","final-bg-layer":"<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","fit-content()":"fit-content( [<length>|<percentage>] )","fixed-breadth":"<length-percentage>","fixed-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <fixed-size>]+ <line-names>? )","fixed-size":"<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>","font-variant-css21":"[normal|small-caps]","font-weight-absolute":"normal|bold|<number [1,1000]>","frequency-percentage":"<frequency>|<percentage>","general-enclosed":"[<function-token> <any-value> )]|( <ident> <any-value> )","generic-family":"serif|sans-serif|cursive|fantasy|monospace|-apple-system","generic-name":"serif|sans-serif|cursive|fantasy|monospace","geometry-box":"<shape-box>|fill-box|stroke-box|view-box",gradient:"<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>","grayscale()":"grayscale( <number-percentage> )","grid-line":"auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )","hsla()":"hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )",hue:"<number>|<angle>","hue-rotate()":"hue-rotate( <angle> )","hwb()":"hwb( [<hue>|none] [<percentage>|none] [<percentage>|none] [/ [<alpha-value>|none]]? )",image:"<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>","image()":"image( <image-tags>? [<image-src>? , <color>?]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[<image>|<string>] [<resolution>||type( <string> )]","image-src":"<url>|<string>","image-tags":"ltr|rtl","inflexible-breadth":"<length>|<percentage>|min-content|max-content|auto","inset()":"inset( <length-percentage>{1,4} [round <'border-radius'>]? )","invert()":"invert( <number-percentage> )","keyframes-name":"<custom-ident>|<string>","keyframe-block":"<keyframe-selector># { <declaration-list> }","keyframe-block-list":"<keyframe-block>+","keyframe-selector":"from|to|<percentage>","layer()":"layer( <layer-name> )","layer-name":"<ident> ['.' <ident>]*","leader()":"leader( <leader-type> )","leader-type":"dotted|solid|space|<string>","length-percentage":"<length>|<percentage>","line-names":"'[' <custom-ident>* ']'","line-name-list":"[<line-names>|<name-repeat>]+","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"<length>|thin|medium|thick","linear-color-hint":"<length-percentage>","linear-color-stop":"<color> <color-stop-length>?","linear-gradient()":"linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","mask-layer":"<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>","mask-position":"[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?","mask-reference":"none|<image>|<mask-source>","mask-source":"<url>","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( <number>#{6} )","matrix3d()":"matrix3d( <number>#{16} )","max()":"max( <calc-sum># )","media-and":"<media-in-parens> [and <media-in-parens>]+","media-condition":"<media-not>|<media-and>|<media-or>|<media-in-parens>","media-condition-without-or":"<media-not>|<media-and>|<media-in-parens>","media-feature":"( [<mf-plain>|<mf-boolean>|<mf-range>] )","media-in-parens":"( <media-condition> )|<media-feature>|<general-enclosed>","media-not":"not <media-in-parens>","media-or":"<media-in-parens> [or <media-in-parens>]+","media-query":"<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?","media-query-list":"<media-query>#","media-type":"<ident>","mf-boolean":"<mf-name>","mf-name":"<ident>","mf-plain":"<mf-name> : <mf-value>","mf-range":"<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>","mf-value":"<number>|<dimension>|<ident>|<ratio>","min()":"min( <calc-sum># )","minmax()":"minmax( [<length>|<percentage>|min-content|max-content|auto] , [<length>|<percentage>|<flex>|min-content|max-content|auto] )","name-repeat":"repeat( [<integer [1,\u221E]>|auto-fill] , <line-names>+ )","named-color":"transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>","namespace-prefix":"<ident>","ns-prefix":"[<ident-token>|'*']? '|'","number-percentage":"<number>|<percentage>","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]",nth:"<an-plus-b>|even|odd","opacity()":"opacity( [<number-percentage>] )","overflow-position":"unsafe|safe","outline-radius":"<length>|<percentage>","page-body":"<declaration>? [; <page-body>]?|<page-margin-box> <page-body>","page-margin-box":"<page-margin-box-type> '{' <declaration-list> '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector-list":"[<page-selector>#]?","page-selector":"<pseudo-page>+|<ident> <pseudo-page>*","page-size":"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger","path()":"path( [<fill-rule> ,]? <string> )","paint()":"paint( <ident> , <declaration-value>? )","perspective()":"perspective( <length> )","polygon()":"polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]","pseudo-class-selector":"':' <ident-token>|':' <function-token> <any-value> ')'","pseudo-element-selector":"':' <pseudo-class-selector>","pseudo-page":": [left|right|first|blank]",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-gradient()":"radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","relative-selector":"<combinator>? <complex-selector>","relative-selector-list":"<relative-selector>#","relative-size":"larger|smaller","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-conic-gradient()":"repeating-conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","repeating-linear-gradient()":"repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","repeating-radial-gradient()":"repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","rgb()":"rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )","rgba()":"rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )","rotate()":"rotate( [<angle>|<zero>] )","rotate3d()":"rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )","rotateX()":"rotateX( [<angle>|<zero>] )","rotateY()":"rotateY( [<angle>|<zero>] )","rotateZ()":"rotateZ( [<angle>|<zero>] )","saturate()":"saturate( <number-percentage> )","scale()":"scale( <number> , <number>? )","scale3d()":"scale3d( <number> , <number> , <number> )","scaleX()":"scaleX( <number> )","scaleY()":"scaleY( <number> )","scaleZ()":"scaleZ( <number> )","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","shape-radius":"<length-percentage>|closest-side|farthest-side","skew()":"skew( [<angle>|<zero>] , [<angle>|<zero>]? )","skewX()":"skewX( [<angle>|<zero>] )","skewY()":"skewY( [<angle>|<zero>] )","sepia()":"sepia( <number-percentage> )",shadow:"inset?&&<length>{2,4}&&<color>?","shadow-t":"[<length>{2,3}&&<color>?]",shape:"rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )","shape-box":"<box>|margin-box","side-or-corner":"[left|right]||[top|bottom]","single-animation":"<time>||<easing-function>||<time>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]","single-animation-direction":"normal|reverse|alternate|alternate-reverse","single-animation-fill-mode":"none|forwards|backwards|both","single-animation-iteration-count":"infinite|<number>","single-animation-play-state":"running|paused","single-animation-timeline":"auto|none|<timeline-name>","single-transition":"[none|<single-transition-property>]||<time>||<easing-function>||<time>","single-transition-property":"all|<custom-ident>",size:"closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}","step-position":"jump-start|jump-end|jump-none|jump-both|start|end","step-timing-function":"step-start|step-end|steps( <integer> [, <step-position>]? )","subclass-selector":"<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>","supports-condition":"not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*","supports-in-parens":"( <supports-condition> )|<supports-feature>|<general-enclosed>","supports-feature":"<supports-decl>|<supports-selector-fn>","supports-decl":"( <declaration> )","supports-selector-fn":"selector( <complex-selector> )",symbol:"<string>|<image>|<custom-ident>",target:"<target-counter()>|<target-counters()>|<target-text()>","target-counter()":"target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )","target-counters()":"target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )","target-text()":"target-text( [<string>|<url>] , [content|before|after|first-letter]? )","time-percentage":"<time>|<percentage>","timeline-name":"<custom-ident>|<string>","easing-function":"linear|<cubic-bezier-timing-function>|<step-timing-function>","track-breadth":"<length-percentage>|<flex>|min-content|max-content|auto","track-list":"[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?","track-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <track-size>]+ <line-names>? )","track-size":"<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( [<length>|<percentage>] )","transform-function":"<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>","transform-list":"<transform-function>+","translate()":"translate( <length-percentage> , <length-percentage>? )","translate3d()":"translate3d( <length-percentage> , <length-percentage> , <length> )","translateX()":"translateX( <length-percentage> )","translateY()":"translateY( <length-percentage> )","translateZ()":"translateZ( <length> )","type-or-unit":"string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%","type-selector":"<wq-name>|<ns-prefix>? '*'","var()":"var( <custom-property-name> , <declaration-value>? )","viewport-length":"auto|<length-percentage>","visual-box":"content-box|padding-box|border-box","wq-name":"<ns-prefix>? <ident-token>","-legacy-gradient":"<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>","-legacy-linear-gradient":"-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-repeating-linear-gradient":"-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-linear-gradient-arguments":"[<angle>|<side-or-corner>]? , <color-stop-list>","-legacy-radial-gradient":"-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-repeating-radial-gradient":"-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-radial-gradient-arguments":"[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>","-legacy-radial-gradient-size":"closest-side|closest-corner|farthest-side|farthest-corner|contain|cover","-legacy-radial-gradient-shape":"circle|ellipse","-non-standard-font":"-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body","-non-standard-color":"-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text","-non-standard-image-rendering":"optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast","-non-standard-overflow":"-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable","-non-standard-width":"fill-available|min-intrinsic|intrinsic|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content|-webkit-min-content|-webkit-max-content","-webkit-gradient()":"-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )","-webkit-gradient-color-stop":"from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )","-webkit-gradient-point":"[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]","-webkit-gradient-radius":"<length>|<percentage>","-webkit-gradient-type":"linear|radial","-webkit-mask-box-repeat":"repeat|stretch|round","-webkit-mask-clip-style":"border|border-box|padding|padding-box|content|content-box|text","-ms-filter-function-list":"<-ms-filter-function>+","-ms-filter-function":"<-ms-filter-function-progid>|<-ms-filter-function-legacy>","-ms-filter-function-progid":"'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]","-ms-filter-function-legacy":"<ident-token>|<function-token> <any-value>? )","-ms-filter":"<string>",age:"child|young|old","attr-name":"<wq-name>","attr-fallback":"<any-value>","bg-clip":"<box>|border|text","border-radius":"<length-percentage>{1,2}",bottom:"<length>|auto","generic-voice":"[<age>? <gender> <integer>?]",gender:"male|female|neutral","lab()":"lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","lch()":"lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )",left:"<length>|auto","mask-image":"<mask-reference>#",paint:"none|<color>|<url> [none|<color>]?|context-fill|context-stroke",ratio:"<number [0,\u221E]> [/ <number [0,\u221E]>]?","reversed-counter-name":"reversed( <counter-name> )",right:"<length>|auto","svg-length":"<percentage>|<length>|<number>","svg-writing-mode":"lr-tb|rl-tb|tb-rl|lr|rl|tb",top:"<length>|auto","track-group":"'(' [<string>* <track-minmax> <string>*]+ ')' ['[' <positive-integer> ']']?|<track-minmax>","track-list-v0":"[<string>* <track-group> <string>*]+|none","track-minmax":"minmax( <track-breadth> , <track-breadth> )|auto|<track-breadth>|fit-content",x:"<number>",y:"<number>",declaration:"<ident-token> : <declaration-value>? ['!' important]?","declaration-list":"[<declaration>? ';']* <declaration>?",url:"url( <string> <url-modifier>* )|<url-token>","url-modifier":"<ident>|<function-token> <any-value> )","number-zero-one":"<number [0,1]>","number-one-or-greater":"<number [1,\u221E]>","positive-integer":"<integer [0,\u221E]>","-non-standard-display":"-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box"},properties:{"--*":"<declaration-value>","-ms-accelerator":"false|true","-ms-block-progression":"tb|rl|bt|lr","-ms-content-zoom-chaining":"none|chained","-ms-content-zooming":"none|zoom","-ms-content-zoom-limit":"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>","-ms-content-zoom-limit-max":"<percentage>","-ms-content-zoom-limit-min":"<percentage>","-ms-content-zoom-snap":"<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>","-ms-content-zoom-snap-points":"snapInterval( <percentage> , <percentage> )|snapList( <percentage># )","-ms-content-zoom-snap-type":"none|proximity|mandatory","-ms-filter":"<string>","-ms-flow-from":"[none|<custom-ident>]#","-ms-flow-into":"[none|<custom-ident>]#","-ms-grid-columns":"none|<track-list>|<auto-track-list>","-ms-grid-rows":"none|<track-list>|<auto-track-list>","-ms-high-contrast-adjust":"auto|none","-ms-hyphenate-limit-chars":"auto|<integer>{1,3}","-ms-hyphenate-limit-lines":"no-limit|<integer>","-ms-hyphenate-limit-zone":"<percentage>|<length>","-ms-ime-align":"auto|after","-ms-overflow-style":"auto|none|scrollbar|-ms-autohiding-scrollbar","-ms-scrollbar-3dlight-color":"<color>","-ms-scrollbar-arrow-color":"<color>","-ms-scrollbar-base-color":"<color>","-ms-scrollbar-darkshadow-color":"<color>","-ms-scrollbar-face-color":"<color>","-ms-scrollbar-highlight-color":"<color>","-ms-scrollbar-shadow-color":"<color>","-ms-scrollbar-track-color":"<color>","-ms-scroll-chaining":"chained|none","-ms-scroll-limit":"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>","-ms-scroll-limit-x-max":"auto|<length>","-ms-scroll-limit-x-min":"<length>","-ms-scroll-limit-y-max":"auto|<length>","-ms-scroll-limit-y-min":"<length>","-ms-scroll-rails":"none|railed","-ms-scroll-snap-points-x":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-points-y":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-type":"none|proximity|mandatory","-ms-scroll-snap-x":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>","-ms-scroll-snap-y":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>","-ms-scroll-translation":"none|vertical-to-horizontal","-ms-text-autospace":"none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space","-ms-touch-select":"grippers|none","-ms-user-select":"none|element|text","-ms-wrap-flow":"auto|both|start|end|maximum|clear","-ms-wrap-margin":"<length>","-ms-wrap-through":"wrap|none","-moz-appearance":"none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized","-moz-binding":"<url>|none","-moz-border-bottom-colors":"<color>+|none","-moz-border-left-colors":"<color>+|none","-moz-border-right-colors":"<color>+|none","-moz-border-top-colors":"<color>+|none","-moz-context-properties":"none|[fill|fill-opacity|stroke|stroke-opacity]#","-moz-float-edge":"border-box|content-box|margin-box|padding-box","-moz-force-broken-image-icon":"0|1","-moz-image-region":"<shape>|auto","-moz-orient":"inline|block|horizontal|vertical","-moz-outline-radius":"<outline-radius>{1,4} [/ <outline-radius>{1,4}]?","-moz-outline-radius-bottomleft":"<outline-radius>","-moz-outline-radius-bottomright":"<outline-radius>","-moz-outline-radius-topleft":"<outline-radius>","-moz-outline-radius-topright":"<outline-radius>","-moz-stack-sizing":"ignore|stretch-to-fit","-moz-text-blink":"none|blink","-moz-user-focus":"ignore|normal|select-after|select-before|select-menu|select-same|select-all|none","-moz-user-input":"auto|none|enabled|disabled","-moz-user-modify":"read-only|read-write|write-only","-moz-window-dragging":"drag|no-drag","-moz-window-shadow":"default|menu|tooltip|sheet|none","-webkit-appearance":"none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button","-webkit-border-before":"<'border-width'>||<'border-style'>||<color>","-webkit-border-before-color":"<color>","-webkit-border-before-style":"<'border-style'>","-webkit-border-before-width":"<'border-width'>","-webkit-box-reflect":"[above|below|right|left]? <length>? <image>?","-webkit-line-clamp":"none|<integer>","-webkit-mask":"[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#","-webkit-mask-attachment":"<attachment>#","-webkit-mask-clip":"[<box>|border|padding|content|text]#","-webkit-mask-composite":"<composite-style>#","-webkit-mask-image":"<mask-reference>#","-webkit-mask-origin":"[<box>|border|padding|content]#","-webkit-mask-position":"<position>#","-webkit-mask-position-x":"[<length-percentage>|left|center|right]#","-webkit-mask-position-y":"[<length-percentage>|top|center|bottom]#","-webkit-mask-repeat":"<repeat-style>#","-webkit-mask-repeat-x":"repeat|no-repeat|space|round","-webkit-mask-repeat-y":"repeat|no-repeat|space|round","-webkit-mask-size":"<bg-size>#","-webkit-overflow-scrolling":"auto|touch","-webkit-tap-highlight-color":"<color>","-webkit-text-fill-color":"<color>","-webkit-text-stroke":"<length>||<color>","-webkit-text-stroke-color":"<color>","-webkit-text-stroke-width":"<length>","-webkit-touch-callout":"default|none","-webkit-user-modify":"read-only|read-write|read-write-plaintext-only","accent-color":"auto|<color>","align-content":"normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>","align-items":"normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]","align-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>","align-tracks":"[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#",all:"initial|inherit|unset|revert|revert-layer",animation:"<single-animation>#","animation-delay":"<time>#","animation-direction":"<single-animation-direction>#","animation-duration":"<time>#","animation-fill-mode":"<single-animation-fill-mode>#","animation-iteration-count":"<single-animation-iteration-count>#","animation-name":"[none|<keyframes-name>]#","animation-play-state":"<single-animation-play-state>#","animation-timing-function":"<easing-function>#","animation-timeline":"<single-animation-timeline>#",appearance:"none|auto|textfield|menulist-button|<compat-auto>","aspect-ratio":"auto|<ratio>",azimuth:"<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards","backdrop-filter":"none|<filter-function-list>","backface-visibility":"visible|hidden",background:"[<bg-layer> ,]* <final-bg-layer>","background-attachment":"<attachment>#","background-blend-mode":"<blend-mode>#","background-clip":"<bg-clip>#","background-color":"<color>","background-image":"<bg-image>#","background-origin":"<box>#","background-position":"<bg-position>#","background-position-x":"[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#","background-position-y":"[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#","background-repeat":"<repeat-style>#","background-size":"<bg-size>#","block-overflow":"clip|ellipsis|<string>","block-size":"<'width'>",border:"<line-width>||<line-style>||<color>","border-block":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-color":"<'border-top-color'>{1,2}","border-block-style":"<'border-top-style'>","border-block-width":"<'border-top-width'>","border-block-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-end-color":"<'border-top-color'>","border-block-end-style":"<'border-top-style'>","border-block-end-width":"<'border-top-width'>","border-block-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-start-color":"<'border-top-color'>","border-block-start-style":"<'border-top-style'>","border-block-start-width":"<'border-top-width'>","border-bottom":"<line-width>||<line-style>||<color>","border-bottom-color":"<'border-top-color'>","border-bottom-left-radius":"<length-percentage>{1,2}","border-bottom-right-radius":"<length-percentage>{1,2}","border-bottom-style":"<line-style>","border-bottom-width":"<line-width>","border-collapse":"collapse|separate","border-color":"<color>{1,4}","border-end-end-radius":"<length-percentage>{1,2}","border-end-start-radius":"<length-percentage>{1,2}","border-image":"<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>","border-image-outset":"[<length>|<number>]{1,4}","border-image-repeat":"[stretch|repeat|round|space]{1,2}","border-image-slice":"<number-percentage>{1,4}&&fill?","border-image-source":"none|<image>","border-image-width":"[<length-percentage>|<number>|auto]{1,4}","border-inline":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-color":"<'border-top-color'>{1,2}","border-inline-style":"<'border-top-style'>","border-inline-width":"<'border-top-width'>","border-inline-end-color":"<'border-top-color'>","border-inline-end-style":"<'border-top-style'>","border-inline-end-width":"<'border-top-width'>","border-inline-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-start-color":"<'border-top-color'>","border-inline-start-style":"<'border-top-style'>","border-inline-start-width":"<'border-top-width'>","border-left":"<line-width>||<line-style>||<color>","border-left-color":"<color>","border-left-style":"<line-style>","border-left-width":"<line-width>","border-radius":"<length-percentage>{1,4} [/ <length-percentage>{1,4}]?","border-right":"<line-width>||<line-style>||<color>","border-right-color":"<color>","border-right-style":"<line-style>","border-right-width":"<line-width>","border-spacing":"<length> <length>?","border-start-end-radius":"<length-percentage>{1,2}","border-start-start-radius":"<length-percentage>{1,2}","border-style":"<line-style>{1,4}","border-top":"<line-width>||<line-style>||<color>","border-top-color":"<color>","border-top-left-radius":"<length-percentage>{1,2}","border-top-right-radius":"<length-percentage>{1,2}","border-top-style":"<line-style>","border-top-width":"<line-width>","border-width":"<line-width>{1,4}",bottom:"<length>|<percentage>|auto","box-align":"start|center|end|baseline|stretch","box-decoration-break":"slice|clone","box-direction":"normal|reverse|inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single|multiple","box-ordinal-group":"<integer>","box-orient":"horizontal|vertical|inline-axis|block-axis|inherit","box-pack":"start|center|end|justify","box-shadow":"none|<shadow>#","box-sizing":"content-box|border-box","break-after":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-before":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-inside":"auto|avoid|avoid-page|avoid-column|avoid-region","caption-side":"top|bottom|block-start|block-end|inline-start|inline-end","caret-color":"auto|<color>",clear:"none|left|right|both|inline-start|inline-end",clip:"<shape>|auto","clip-path":"<clip-source>|[<basic-shape>||<geometry-box>]|none",color:"<color>","print-color-adjust":"economy|exact","color-scheme":"normal|[light|dark|<custom-ident>]+&&only?","column-count":"<integer>|auto","column-fill":"auto|balance|balance-all","column-gap":"normal|<length-percentage>","column-rule":"<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>","column-rule-color":"<color>","column-rule-style":"<'border-style'>","column-rule-width":"<'border-width'>","column-span":"none|all","column-width":"<length>|auto",columns:"<'column-width'>||<'column-count'>",contain:"none|strict|content|[size||layout||style||paint]",content:"normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>]+]?","content-visibility":"visible|auto|hidden","counter-increment":"[<counter-name> <integer>?]+|none","counter-reset":"[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none","counter-set":"[<counter-name> <integer>?]+|none",cursor:"[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",direction:"ltr|rtl",display:"[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>","empty-cells":"show|hide",filter:"none|<filter-function-list>|<-ms-filter-function-list>",flex:"none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]","flex-basis":"content|<'width'>","flex-direction":"row|row-reverse|column|column-reverse","flex-flow":"<'flex-direction'>||<'flex-wrap'>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap|wrap|wrap-reverse",float:"left|right|none|inline-start|inline-end",font:"[[<'font-style'>||<font-variant-css21>||<'font-weight'>||<'font-stretch'>]? <'font-size'> [/ <'line-height'>]? <'font-family'>]|caption|icon|menu|message-box|small-caption|status-bar","font-family":"[<family-name>|<generic-family>]#","font-feature-settings":"normal|<feature-tag-value>#","font-kerning":"auto|normal|none","font-language-override":"normal|<string>","font-optical-sizing":"auto|none","font-variation-settings":"normal|[<string> <number>]#","font-size":"<absolute-size>|<relative-size>|<length-percentage>","font-size-adjust":"none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]","font-smooth":"auto|never|always|<absolute-size>|<length>","font-stretch":"<font-stretch-absolute>","font-style":"normal|italic|oblique <angle>?","font-synthesis":"none|[weight||style||small-caps]","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-alternates":"normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]","font-variant-caps":"normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps","font-variant-east-asian":"normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-ligatures":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]","font-variant-numeric":"normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]","font-variant-position":"normal|sub|super","font-weight":"<font-weight-absolute>|bolder|lighter","forced-color-adjust":"auto|none",gap:"<'row-gap'> <'column-gap'>?",grid:"<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>","grid-area":"<grid-line> [/ <grid-line>]{0,3}","grid-auto-columns":"<track-size>+","grid-auto-flow":"[row|column]||dense","grid-auto-rows":"<track-size>+","grid-column":"<grid-line> [/ <grid-line>]?","grid-column-end":"<grid-line>","grid-column-gap":"<length-percentage>","grid-column-start":"<grid-line>","grid-gap":"<'grid-row-gap'> <'grid-column-gap'>?","grid-row":"<grid-line> [/ <grid-line>]?","grid-row-end":"<grid-line>","grid-row-gap":"<length-percentage>","grid-row-start":"<grid-line>","grid-template":"none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?","grid-template-areas":"none|<string>+","grid-template-columns":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","grid-template-rows":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","hanging-punctuation":"none|[first||[force-end|allow-end]||last]",height:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","hyphenate-character":"auto|<string>",hyphens:"none|manual|auto","image-orientation":"from-image|<angle>|[<angle>? flip]","image-rendering":"auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>","image-resolution":"[from-image||<resolution>]&&snap?","ime-mode":"auto|normal|active|inactive|disabled","initial-letter":"normal|[<number> <integer>?]","initial-letter-align":"[auto|alphabetic|hanging|ideographic]","inline-size":"<'width'>","input-security":"auto|none",inset:"<'top'>{1,4}","inset-block":"<'top'>{1,2}","inset-block-end":"<'top'>","inset-block-start":"<'top'>","inset-inline":"<'top'>{1,2}","inset-inline-end":"<'top'>","inset-inline-start":"<'top'>",isolation:"auto|isolate","justify-content":"normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]","justify-items":"normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]","justify-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]","justify-tracks":"[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",left:"<length>|<percentage>|auto","letter-spacing":"normal|<length-percentage>","line-break":"auto|loose|normal|strict|anywhere","line-clamp":"none|<integer>","line-height":"normal|<number>|<length>|<percentage>","line-height-step":"<length>","list-style":"<'list-style-type'>||<'list-style-position'>||<'list-style-image'>","list-style-image":"<image>|none","list-style-position":"inside|outside","list-style-type":"<counter-style>|<string>|none",margin:"[<length>|<percentage>|auto]{1,4}","margin-block":"<'margin-left'>{1,2}","margin-block-end":"<'margin-left'>","margin-block-start":"<'margin-left'>","margin-bottom":"<length>|<percentage>|auto","margin-inline":"<'margin-left'>{1,2}","margin-inline-end":"<'margin-left'>","margin-inline-start":"<'margin-left'>","margin-left":"<length>|<percentage>|auto","margin-right":"<length>|<percentage>|auto","margin-top":"<length>|<percentage>|auto","margin-trim":"none|in-flow|all",mask:"<mask-layer>#","mask-border":"<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>","mask-border-mode":"luminance|alpha","mask-border-outset":"[<length>|<number>]{1,4}","mask-border-repeat":"[stretch|repeat|round|space]{1,2}","mask-border-slice":"<number-percentage>{1,4} fill?","mask-border-source":"none|<image>","mask-border-width":"[<length-percentage>|<number>|auto]{1,4}","mask-clip":"[<geometry-box>|no-clip]#","mask-composite":"<compositing-operator>#","mask-image":"<mask-reference>#","mask-mode":"<masking-mode>#","mask-origin":"<geometry-box>#","mask-position":"<position>#","mask-repeat":"<repeat-style>#","mask-size":"<bg-size>#","mask-type":"luminance|alpha","masonry-auto-flow":"[pack|next]||[definite-first|ordered]","math-style":"normal|compact","max-block-size":"<'max-width'>","max-height":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","max-inline-size":"<'max-width'>","max-lines":"none|<integer>","max-width":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","min-block-size":"<'min-width'>","min-height":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","min-inline-size":"<'min-width'>","min-width":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","mix-blend-mode":"<blend-mode>|plus-lighter","object-fit":"fill|contain|cover|none|scale-down","object-position":"<position>",offset:"[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?","offset-anchor":"auto|<position>","offset-distance":"<length-percentage>","offset-path":"none|ray( [<angle>&&<size>&&contain?] )|<path()>|<url>|[<basic-shape>||<geometry-box>]","offset-position":"auto|<position>","offset-rotate":"[auto|reverse]||<angle>",opacity:"<alpha-value>",order:"<integer>",orphans:"<integer>",outline:"[<'outline-color'>||<'outline-style'>||<'outline-width'>]","outline-color":"<color>|invert","outline-offset":"<length>","outline-style":"auto|<'border-style'>","outline-width":"<line-width>",overflow:"[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>","overflow-anchor":"auto|none","overflow-block":"visible|hidden|clip|scroll|auto","overflow-clip-box":"padding-box|content-box","overflow-clip-margin":"<visual-box>||<length [0,\u221E]>","overflow-inline":"visible|hidden|clip|scroll|auto","overflow-wrap":"normal|break-word|anywhere","overflow-x":"visible|hidden|clip|scroll|auto","overflow-y":"visible|hidden|clip|scroll|auto","overscroll-behavior":"[contain|none|auto]{1,2}","overscroll-behavior-block":"contain|none|auto","overscroll-behavior-inline":"contain|none|auto","overscroll-behavior-x":"contain|none|auto","overscroll-behavior-y":"contain|none|auto",padding:"[<length>|<percentage>]{1,4}","padding-block":"<'padding-left'>{1,2}","padding-block-end":"<'padding-left'>","padding-block-start":"<'padding-left'>","padding-bottom":"<length>|<percentage>","padding-inline":"<'padding-left'>{1,2}","padding-inline-end":"<'padding-left'>","padding-inline-start":"<'padding-left'>","padding-left":"<length>|<percentage>","padding-right":"<length>|<percentage>","padding-top":"<length>|<percentage>","page-break-after":"auto|always|avoid|left|right|recto|verso","page-break-before":"auto|always|avoid|left|right|recto|verso","page-break-inside":"auto|avoid","paint-order":"normal|[fill||stroke||markers]",perspective:"none|<length>","perspective-origin":"<position>","place-content":"<'align-content'> <'justify-content'>?","place-items":"<'align-items'> <'justify-items'>?","place-self":"<'align-self'> <'justify-self'>?","pointer-events":"auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",position:"static|relative|absolute|sticky|fixed|-webkit-sticky",quotes:"none|auto|[<string> <string>]+",resize:"none|both|horizontal|vertical|block|inline",right:"<length>|<percentage>|auto",rotate:"none|<angle>|[x|y|z|<number>{3}]&&<angle>","row-gap":"normal|<length-percentage>","ruby-align":"start|center|space-between|space-around","ruby-merge":"separate|collapse|auto","ruby-position":"[alternate||[over|under]]|inter-character",scale:"none|<number>{1,3}","scrollbar-color":"auto|<color>{2}","scrollbar-gutter":"auto|stable&&both-edges?","scrollbar-width":"auto|thin|none","scroll-behavior":"auto|smooth","scroll-margin":"<length>{1,4}","scroll-margin-block":"<length>{1,2}","scroll-margin-block-start":"<length>","scroll-margin-block-end":"<length>","scroll-margin-bottom":"<length>","scroll-margin-inline":"<length>{1,2}","scroll-margin-inline-start":"<length>","scroll-margin-inline-end":"<length>","scroll-margin-left":"<length>","scroll-margin-right":"<length>","scroll-margin-top":"<length>","scroll-padding":"[auto|<length-percentage>]{1,4}","scroll-padding-block":"[auto|<length-percentage>]{1,2}","scroll-padding-block-start":"auto|<length-percentage>","scroll-padding-block-end":"auto|<length-percentage>","scroll-padding-bottom":"auto|<length-percentage>","scroll-padding-inline":"[auto|<length-percentage>]{1,2}","scroll-padding-inline-start":"auto|<length-percentage>","scroll-padding-inline-end":"auto|<length-percentage>","scroll-padding-left":"auto|<length-percentage>","scroll-padding-right":"auto|<length-percentage>","scroll-padding-top":"auto|<length-percentage>","scroll-snap-align":"[none|start|end|center]{1,2}","scroll-snap-coordinate":"none|<position>#","scroll-snap-destination":"<position>","scroll-snap-points-x":"none|repeat( <length-percentage> )","scroll-snap-points-y":"none|repeat( <length-percentage> )","scroll-snap-stop":"normal|always","scroll-snap-type":"none|[x|y|block|inline|both] [mandatory|proximity]?","scroll-snap-type-x":"none|mandatory|proximity","scroll-snap-type-y":"none|mandatory|proximity","shape-image-threshold":"<alpha-value>","shape-margin":"<length-percentage>","shape-outside":"none|[<shape-box>||<basic-shape>]|<image>","tab-size":"<integer>|<length>","table-layout":"auto|fixed","text-align":"start|end|left|right|center|justify|match-parent","text-align-last":"auto|start|end|left|right|center|justify","text-combine-upright":"none|all|[digits <integer>?]","text-decoration":"<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>","text-decoration-color":"<color>","text-decoration-line":"none|[underline||overline||line-through||blink]|spelling-error|grammar-error","text-decoration-skip":"none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]","text-decoration-skip-ink":"auto|all|none","text-decoration-style":"solid|double|dotted|dashed|wavy","text-decoration-thickness":"auto|from-font|<length>|<percentage>","text-emphasis":"<'text-emphasis-style'>||<'text-emphasis-color'>","text-emphasis-color":"<color>","text-emphasis-position":"[over|under]&&[right|left]","text-emphasis-style":"none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>","text-indent":"<length-percentage>&&hanging?&&each-line?","text-justify":"auto|inter-character|inter-word|none","text-orientation":"mixed|upright|sideways","text-overflow":"[clip|ellipsis|<string>]{1,2}","text-rendering":"auto|optimizeSpeed|optimizeLegibility|geometricPrecision","text-shadow":"none|<shadow-t>#","text-size-adjust":"none|auto|<percentage>","text-transform":"none|capitalize|uppercase|lowercase|full-width|full-size-kana","text-underline-offset":"auto|<length>|<percentage>","text-underline-position":"auto|from-font|[under||[left|right]]",top:"<length>|<percentage>|auto","touch-action":"auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",transform:"none|<transform-list>","transform-box":"content-box|border-box|fill-box|stroke-box|view-box","transform-origin":"[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?","transform-style":"flat|preserve-3d",transition:"<single-transition>#","transition-delay":"<time>#","transition-duration":"<time>#","transition-property":"none|<single-transition-property>#","transition-timing-function":"<easing-function>#",translate:"none|<length-percentage> [<length-percentage> <length>?]?","unicode-bidi":"normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext","user-select":"auto|text|none|contain|all","vertical-align":"baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>",visibility:"visible|hidden|collapse","white-space":"normal|pre|nowrap|pre-wrap|pre-line|break-spaces",widows:"<integer>",width:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|fill|stretch|intrinsic|-moz-max-content|-webkit-max-content|-moz-fit-content|-webkit-fit-content","will-change":"auto|<animateable-feature>#","word-break":"normal|break-all|keep-all|break-word","word-spacing":"normal|<length>","word-wrap":"normal|break-word","writing-mode":"horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>","z-index":"auto|<integer>",zoom:"normal|reset|<number>|<percentage>","-moz-background-clip":"padding|border","-moz-border-radius-bottomleft":"<'border-bottom-left-radius'>","-moz-border-radius-bottomright":"<'border-bottom-right-radius'>","-moz-border-radius-topleft":"<'border-top-left-radius'>","-moz-border-radius-topright":"<'border-bottom-right-radius'>","-moz-control-character-visibility":"visible|hidden","-moz-osx-font-smoothing":"auto|grayscale","-moz-user-select":"none|text|all|-moz-none","-ms-flex-align":"start|end|center|baseline|stretch","-ms-flex-item-align":"auto|start|end|center|baseline|stretch","-ms-flex-line-pack":"start|end|center|justify|distribute|stretch","-ms-flex-negative":"<'flex-shrink'>","-ms-flex-pack":"start|end|center|justify|distribute","-ms-flex-order":"<integer>","-ms-flex-positive":"<'flex-grow'>","-ms-flex-preferred-size":"<'flex-basis'>","-ms-interpolation-mode":"nearest-neighbor|bicubic","-ms-grid-column-align":"start|end|center|stretch","-ms-grid-row-align":"start|end|center|stretch","-ms-hyphenate-limit-last":"none|always|column|page|spread","-webkit-background-clip":"[<box>|border|padding|content|text]#","-webkit-column-break-after":"always|auto|avoid","-webkit-column-break-before":"always|auto|avoid","-webkit-column-break-inside":"always|auto|avoid","-webkit-font-smoothing":"auto|none|antialiased|subpixel-antialiased","-webkit-mask-box-image":"[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?","-webkit-print-color-adjust":"economy|exact","-webkit-text-security":"none|circle|disc|square","-webkit-user-drag":"none|element|auto","-webkit-user-select":"auto|none|text|all","alignment-baseline":"auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical","baseline-shift":"baseline|sub|super|<svg-length>",behavior:"<url>+","clip-rule":"nonzero|evenodd",cue:"<'cue-before'> <'cue-after'>?","cue-after":"<url> <decibel>?|none","cue-before":"<url> <decibel>?|none","dominant-baseline":"auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge",fill:"<paint>","fill-opacity":"<number-zero-one>","fill-rule":"nonzero|evenodd","glyph-orientation-horizontal":"<angle>","glyph-orientation-vertical":"<angle>",kerning:"auto|<svg-length>",marker:"none|<url>","marker-end":"none|<url>","marker-mid":"none|<url>","marker-start":"none|<url>",pause:"<'pause-before'> <'pause-after'>?","pause-after":"<time>|none|x-weak|weak|medium|strong|x-strong","pause-before":"<time>|none|x-weak|weak|medium|strong|x-strong",rest:"<'rest-before'> <'rest-after'>?","rest-after":"<time>|none|x-weak|weak|medium|strong|x-strong","rest-before":"<time>|none|x-weak|weak|medium|strong|x-strong","shape-rendering":"auto|optimizeSpeed|crispEdges|geometricPrecision",src:"[<url> [format( <string># )]?|local( <family-name> )]#",speak:"auto|none|normal","speak-as":"normal|spell-out||digits||[literal-punctuation|no-punctuation]",stroke:"<paint>","stroke-dasharray":"none|[<svg-length>+]#","stroke-dashoffset":"<svg-length>","stroke-linecap":"butt|round|square","stroke-linejoin":"miter|round|bevel","stroke-miterlimit":"<number-one-or-greater>","stroke-opacity":"<number-zero-one>","stroke-width":"<svg-length>","text-anchor":"start|middle|end","unicode-range":"<urange>#","voice-balance":"<number>|left|center|right|leftwards|rightwards","voice-duration":"auto|<time>","voice-family":"[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve","voice-pitch":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-range":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-rate":"[normal|x-slow|slow|medium|fast|x-fast]||<percentage>","voice-stress":"normal|strong|moderate|none|reduced","voice-volume":"silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]"},atrules:{charset:{prelude:"<string>",descriptors:null},"counter-style":{prelude:"<counter-style-name>",descriptors:{"additive-symbols":"[<integer>&&<symbol>]#",fallback:"<counter-style-name>",negative:"<symbol> <symbol>?",pad:"<integer>&&<symbol>",prefix:"<symbol>",range:"[[<integer>|infinite]{2}]#|auto","speak-as":"auto|bullets|numbers|words|spell-out|<counter-style-name>",suffix:"<symbol>",symbols:"<symbol>+",system:"cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"}},document:{prelude:"[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",descriptors:null},"font-face":{prelude:null,descriptors:{"ascent-override":"normal|<percentage>","descent-override":"normal|<percentage>","font-display":"[auto|block|swap|fallback|optional]","font-family":"<family-name>","font-feature-settings":"normal|<feature-tag-value>#","font-variation-settings":"normal|[<string> <number>]#","font-stretch":"<font-stretch-absolute>{1,2}","font-style":"normal|italic|oblique <angle>{0,2}","font-weight":"<font-weight-absolute>{1,2}","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","line-gap-override":"normal|<percentage>","size-adjust":"<percentage>",src:"[<url> [format( <string># )]?|local( <family-name> )]#","unicode-range":"<urange>#"}},"font-feature-values":{prelude:"<family-name>#",descriptors:null},import:{prelude:"[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?",descriptors:null},keyframes:{prelude:"<keyframes-name>",descriptors:null},layer:{prelude:"[<layer-name>#|<layer-name>?]",descriptors:null},media:{prelude:"<media-query-list>",descriptors:null},namespace:{prelude:"<namespace-prefix>? [<string>|<url>]",descriptors:null},page:{prelude:"<page-selector-list>",descriptors:{bleed:"auto|<length>",marks:"none|[crop||cross]",size:"<length>{1,2}|auto|[<page-size>||[portrait|landscape]]"}},property:{prelude:"<custom-property-name>",descriptors:{syntax:"<string>",inherits:"true|false","initial-value":"<string>"}},"scroll-timeline":{prelude:"<timeline-name>",descriptors:null},supports:{prelude:"<supports-condition>",descriptors:null},viewport:{prelude:null,descriptors:{height:"<viewport-length>{1,2}","max-height":"<viewport-length>","max-width":"<viewport-length>","max-zoom":"auto|<number>|<percentage>","min-height":"<viewport-length>","min-width":"<viewport-length>","min-zoom":"auto|<number>|<percentage>",orientation:"auto|portrait|landscape","user-zoom":"zoom|fixed","viewport-fit":"auto|contain|cover",width:"<viewport-length>{1,2}",zoom:"auto|<number>|<percentage>"}}}};var yt={};b(yt,{AnPlusB:()=>nn,Atrule:()=>an,AtrulePrelude:()=>ln,AttributeSelector:()=>pn,Block:()=>mn,Brackets:()=>dn,CDC:()=>bn,CDO:()=>yn,ClassSelector:()=>wn,Combinator:()=>Sn,Comment:()=>An,Declaration:()=>En,DeclarationList:()=>Pn,Dimension:()=>Dn,Function:()=>Nn,Hash:()=>Mn,IdSelector:()=>_n,Identifier:()=>Fn,MediaFeature:()=>jn,MediaQuery:()=>qn,MediaQueryList:()=>Yn,Nth:()=>Vn,Number:()=>Qn,Operator:()=>$n,Parentheses:()=>Jn,Percentage:()=>to,PseudoClassSelector:()=>no,PseudoElementSelector:()=>io,Ratio:()=>so,Raw:()=>co,Rule:()=>po,Selector:()=>mo,SelectorList:()=>go,String:()=>ko,StyleSheet:()=>vo,TypeSelector:()=>Ao,UnicodeRange:()=>Lo,Url:()=>No,Value:()=>Mo,WhiteSpace:()=>Fo});var nn={};b(nn,{generate:()=>xc,name:()=>gc,parse:()=>rn,structure:()=>bc});var me=43,re=45,tr=110,Oe=!0,dc=!1;function rr(e,t){let r=this.tokenStart+e,n=this.charCodeAt(r);for((n===me||n===re)&&(t&&this.error("Number sign is not allowed"),r++);r<this.tokenEnd;r++)B(this.charCodeAt(r))||this.error("Integer is expected",r)}function Ze(e){return rr.call(this,0,e)}function Ce(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let r="";switch(t){case tr:r="N is expected";break;case re:r="HyphenMinus is expected";break}this.error(r,this.tokenStart+e)}}function tn(){let e=0,t=0,r=this.tokenType;for(;r===13||r===25;)r=this.lookupType(++e);if(r!==10)if(this.isDelim(me,e)||this.isDelim(re,e)){t=this.isDelim(me,e)?me:re;do r=this.lookupType(++e);while(r===13||r===25);r!==10&&(this.skip(e),Ze.call(this,Oe))}else return null;return e>0&&this.skip(e),t===0&&(r=this.charCodeAt(this.tokenStart),r!==me&&r!==re&&this.error("Number sign is expected")),Ze.call(this,t!==0),t===re?"-"+this.consume(10):this.consume(10)}var gc="AnPlusB",bc={a:[String,null],b:[String,null]};function rn(){let e=this.tokenStart,t=null,r=null;if(this.tokenType===10)Ze.call(this,dc),r=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,re))switch(t="-1",Ce.call(this,1,tr),this.tokenEnd-this.tokenStart){case 2:this.next(),r=tn.call(this);break;case 3:Ce.call(this,2,re),this.next(),this.skipSC(),Ze.call(this,Oe),r="-"+this.consume(10);break;default:Ce.call(this,2,re),rr.call(this,3,Oe),this.next(),r=this.substrToCursor(e+2)}else if(this.tokenType===1||this.isDelim(me)&&this.lookupType(1)===1){let n=0;switch(t="1",this.isDelim(me)&&(n=1,this.next()),Ce.call(this,0,tr),this.tokenEnd-this.tokenStart){case 1:this.next(),r=tn.call(this);break;case 2:Ce.call(this,1,re),this.next(),this.skipSC(),Ze.call(this,Oe),r="-"+this.consume(10);break;default:Ce.call(this,1,re),rr.call(this,2,Oe),this.next(),r=this.substrToCursor(e+n+1)}}else if(this.tokenType===12){let n=this.charCodeAt(this.tokenStart),o=n===me||n===re,i=this.tokenStart+o;for(;i<this.tokenEnd&&B(this.charCodeAt(i));i++);i===this.tokenStart+o&&this.error("Integer is expected",this.tokenStart+o),Ce.call(this,i-this.tokenStart,tr),t=this.substring(e,i),i+1===this.tokenEnd?(this.next(),r=tn.call(this)):(Ce.call(this,i-this.tokenStart+1,re),i+2===this.tokenEnd?(this.next(),this.skipSC(),Ze.call(this,Oe),r="-"+this.consume(10)):(rr.call(this,i-this.tokenStart+2,Oe),this.next(),r=this.substrToCursor(i+1)))}else this.error();return t!==null&&t.charCodeAt(0)===me&&(t=t.substr(1)),r!==null&&r.charCodeAt(0)===me&&(r=r.substr(1)),{type:"AnPlusB",loc:this.getLocation(e,this.tokenStart),a:t,b:r}}function xc(e){if(e.a){let t=e.a==="+1"&&"n"||e.a==="1"&&"n"||e.a==="-1"&&"-n"||e.a+"n";if(e.b){let r=e.b[0]==="-"||e.b[0]==="+"?e.b:"+"+e.b;this.tokenize(t+r)}else this.tokenize(t)}else this.tokenize(e.b)}var an={};b(an,{generate:()=>Sc,name:()=>kc,parse:()=>on,structure:()=>vc,walkContext:()=>wc});function xa(e){return this.Raw(e,this.consumeUntilLeftCurlyBracketOrSemicolon,!0)}function yc(){for(let e=1,t;t=this.lookupType(e);e++){if(t===24)return!0;if(t===23||t===3)return!1}return!1}var kc="Atrule",wc="atrule",vc={name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]};function on(){let e=this.tokenStart,t,r,n=null,o=null;switch(this.eat(3),t=this.substrToCursor(e+1),r=t.toLowerCase(),this.skipSC(),this.eof===!1&&this.tokenType!==23&&this.tokenType!==17&&(this.parseAtrulePrelude?n=this.parseWithFallback(this.AtrulePrelude.bind(this,t),xa):n=xa.call(this,this.tokenIndex),this.skipSC()),this.tokenType){case 17:this.next();break;case 23:hasOwnProperty.call(this.atrule,r)&&typeof this.atrule[r].block=="function"?o=this.atrule[r].block.call(this):o=this.Block(yc.call(this));break}return{type:"Atrule",loc:this.getLocation(e,this.tokenStart),name:t,prelude:n,block:o}}function Sc(e){this.token(3,"@"+e.name),e.prelude!==null&&this.node(e.prelude),e.block?this.node(e.block):this.token(17,";")}var ln={};b(ln,{generate:()=>Ec,name:()=>Cc,parse:()=>sn,structure:()=>Tc,walkContext:()=>Ac});var Cc="AtrulePrelude",Ac="atrulePrelude",Tc={children:[[]]};function sn(e){let t=null;return e!==null&&(e=e.toLowerCase()),this.skipSC(),hasOwnProperty.call(this.atrule,e)&&typeof this.atrule[e].prelude=="function"?t=this.atrule[e].prelude.call(this):t=this.readSequence(this.scope.AtrulePrelude),this.skipSC(),this.eof!==!0&&this.tokenType!==23&&this.tokenType!==17&&this.error("Semicolon or block is expected"),{type:"AtrulePrelude",loc:this.getLocationFromList(t),children:t}}function Ec(e){this.children(e)}var pn={};b(pn,{generate:()=>Mc,name:()=>Nc,parse:()=>un,structure:()=>zc});var Lc=36,ya=42,nr=61,Pc=94,cn=124,Ic=126;function Dc(){this.eof&&this.error("Unexpected end of input");let e=this.tokenStart,t=!1;return this.isDelim(ya)?(t=!0,this.next()):this.isDelim(cn)||this.eat(1),this.isDelim(cn)?this.charCodeAt(this.tokenStart+1)!==nr?(this.next(),this.eat(1)):t&&this.error("Identifier is expected",this.tokenEnd):t&&this.error("Vertical line is expected"),{type:"Identifier",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function Oc(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==nr&&t!==Ic&&t!==Pc&&t!==Lc&&t!==ya&&t!==cn&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.next(),t!==nr&&(this.isDelim(nr)||this.error("Equal sign is expected"),this.next()),this.substrToCursor(e)}var Nc="AttributeSelector",zc={name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]};function un(){let e=this.tokenStart,t,r=null,n=null,o=null;return this.eat(19),this.skipSC(),t=Dc.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(r=Oc.call(this),this.skipSC(),n=this.tokenType===5?this.String():this.Identifier(),this.skipSC()),this.tokenType===1&&(o=this.consume(1),this.skipSC())),this.eat(20),{type:"AttributeSelector",loc:this.getLocation(e,this.tokenStart),name:t,matcher:r,value:n,flags:o}}function Mc(e){this.token(9,"["),this.node(e.name),e.matcher!==null&&(this.tokenize(e.matcher),this.node(e.value)),e.flags!==null&&this.token(1,e.flags),this.token(9,"]")}var mn={};b(mn,{generate:()=>jc,name:()=>Bc,parse:()=>hn,structure:()=>Uc,walkContext:()=>_c});function wa(e){return this.Raw(e,null,!0)}function Rc(){return this.parseWithFallback(this.Rule,wa)}function ka(e){return this.Raw(e,this.consumeUntilSemicolonIncluded,!0)}function Fc(){if(this.tokenType===17)return ka.call(this,this.tokenIndex);let e=this.parseWithFallback(this.Declaration,ka);return this.tokenType===17&&this.next(),e}var Bc="Block",_c="block",Uc={children:[["Atrule","Rule","Declaration"]]};function hn(e){let t=e?Fc:Rc,r=this.tokenStart,n=this.createList();this.eat(23);e:for(;!this.eof;)switch(this.tokenType){case 24:break e;case 13:case 25:this.next();break;case 3:n.push(this.parseWithFallback(this.Atrule,wa));break;default:n.push(t.call(this))}return this.eof||this.eat(24),{type:"Block",loc:this.getLocation(r,this.tokenStart),children:n}}function jc(e){this.token(23,"{"),this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")}),this.token(24,"}")}var dn={};b(dn,{generate:()=>Wc,name:()=>Hc,parse:()=>fn,structure:()=>qc});var Hc="Brackets",qc={children:[[]]};function fn(e,t){let r=this.tokenStart,n=null;return this.eat(19),n=e.call(this,t),this.eof||this.eat(20),{type:"Brackets",loc:this.getLocation(r,this.tokenStart),children:n}}function Wc(e){this.token(9,"["),this.children(e),this.token(9,"]")}var bn={};b(bn,{generate:()=>Vc,name:()=>Yc,parse:()=>gn,structure:()=>Gc});var Yc="CDC",Gc=[];function gn(){let e=this.tokenStart;return this.eat(15),{type:"CDC",loc:this.getLocation(e,this.tokenStart)}}function Vc(){this.token(15,"-->")}var yn={};b(yn,{generate:()=>Xc,name:()=>Kc,parse:()=>xn,structure:()=>Qc});var Kc="CDO",Qc=[];function xn(){let e=this.tokenStart;return this.eat(14),{type:"CDO",loc:this.getLocation(e,this.tokenStart)}}function Xc(){this.token(14,"<!--")}var wn={};b(wn,{generate:()=>eu,name:()=>Zc,parse:()=>kn,structure:()=>Jc});var $c=46,Zc="ClassSelector",Jc={name:String};function kn(){return this.eatDelim($c),{type:"ClassSelector",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function eu(e){this.token(9,"."),this.token(1,e.name)}var Sn={};b(Sn,{generate:()=>au,name:()=>ou,parse:()=>vn,structure:()=>iu});var tu=43,va=47,ru=62,nu=126,ou="Combinator",iu={name:String};function vn(){let e=this.tokenStart,t;switch(this.tokenType){case 13:t=" ";break;case 9:switch(this.charCodeAt(this.tokenStart)){case ru:case tu:case nu:this.next();break;case va:this.next(),this.eatIdent("deep"),this.eatDelim(va);break;default:this.error("Combinator is expected")}t=this.substrToCursor(e);break}return{type:"Combinator",loc:this.getLocation(e,this.tokenStart),name:t}}function au(e){this.tokenize(e.name)}var An={};b(An,{generate:()=>pu,name:()=>cu,parse:()=>Cn,structure:()=>uu});var su=42,lu=47,cu="Comment",uu={value:String};function Cn(){let e=this.tokenStart,t=this.tokenEnd;return this.eat(25),t-e+2>=2&&this.charCodeAt(t-2)===su&&this.charCodeAt(t-1)===lu&&(t-=2),{type:"Comment",loc:this.getLocation(e,this.tokenStart),value:this.substring(e+2,t)}}function pu(e){this.token(25,"/*"+e.value+"*/")}var En={};b(En,{generate:()=>Su,name:()=>ku,parse:()=>Tn,structure:()=>vu,walkContext:()=>wu});var Ca=33,hu=35,mu=36,fu=38,du=42,gu=43,Sa=47;function bu(e){return this.Raw(e,this.consumeUntilExclamationMarkOrSemicolon,!0)}function xu(e){return this.Raw(e,this.consumeUntilExclamationMarkOrSemicolon,!1)}function yu(){let e=this.tokenIndex,t=this.Value();return t.type!=="Raw"&&this.eof===!1&&this.tokenType!==17&&this.isDelim(Ca)===!1&&this.isBalanceEdge(e)===!1&&this.error(),t}var ku="Declaration",wu="declaration",vu={important:[Boolean,String],property:String,value:["Value","Raw"]};function Tn(){let e=this.tokenStart,t=this.tokenIndex,r=Cu.call(this),n=ct(r),o=n?this.parseCustomProperty:this.parseValue,i=n?xu:bu,s=!1,u;this.skipSC(),this.eat(16);let c=this.tokenIndex;if(n||this.skipSC(),o?u=this.parseWithFallback(yu,i):u=i.call(this,this.tokenIndex),n&&u.type==="Value"&&u.children.isEmpty){for(let a=c-this.tokenIndex;a<=0;a++)if(this.lookupType(a)===13){u.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}return this.isDelim(Ca)&&(s=Au.call(this),this.skipSC()),this.eof===!1&&this.tokenType!==17&&this.isBalanceEdge(t)===!1&&this.error(),{type:"Declaration",loc:this.getLocation(e,this.tokenStart),important:s,property:r,value:u}}function Su(e){this.token(1,e.property),this.token(16,":"),this.node(e.value),e.important&&(this.token(9,"!"),this.token(1,e.important===!0?"important":e.important))}function Cu(){let e=this.tokenStart;if(this.tokenType===9)switch(this.charCodeAt(this.tokenStart)){case du:case mu:case gu:case hu:case fu:this.next();break;case Sa:this.next(),this.isDelim(Sa)&&this.next();break}return this.tokenType===4?this.eat(4):this.eat(1),this.substrToCursor(e)}function Au(){this.eat(9),this.skipSC();let e=this.consume(1);return e==="important"?!0:e}var Pn={};b(Pn,{generate:()=>Pu,name:()=>Eu,parse:()=>Ln,structure:()=>Lu});function Tu(e){return this.Raw(e,this.consumeUntilSemicolonIncluded,!0)}var Eu="DeclarationList",Lu={children:[["Declaration"]]};function Ln(){let e=this.createList();e:for(;!this.eof;)switch(this.tokenType){case 13:case 25:case 17:this.next();break;default:e.push(this.parseWithFallback(this.Declaration,Tu))}return{type:"DeclarationList",loc:this.getLocationFromList(e),children:e}}function Pu(e){this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")})}var Dn={};b(Dn,{generate:()=>Ou,name:()=>Iu,parse:()=>In,structure:()=>Du});var Iu="Dimension",Du={value:String,unit:String};function In(){let e=this.tokenStart,t=this.consumeNumber(12);return{type:"Dimension",loc:this.getLocation(e,this.tokenStart),value:t,unit:this.substring(e+t.length,this.tokenStart)}}function Ou(e){this.token(12,e.value+e.unit)}var Nn={};b(Nn,{generate:()=>Ru,name:()=>Nu,parse:()=>On,structure:()=>Mu,walkContext:()=>zu});var Nu="Function",zu="function",Mu={name:String,children:[[]]};function On(e,t){let r=this.tokenStart,n=this.consumeFunctionName(),o=n.toLowerCase(),i;return i=t.hasOwnProperty(o)?t[o].call(this,t):e.call(this,t),this.eof||this.eat(22),{type:"Function",loc:this.getLocation(r,this.tokenStart),name:n,children:i}}function Ru(e){this.token(2,e.name+"("),this.children(e),this.token(22,")")}var Mn={};b(Mn,{generate:()=>Uu,name:()=>Bu,parse:()=>zn,structure:()=>_u,xxx:()=>Fu});var Fu="XXX",Bu="Hash",_u={value:String};function zn(){let e=this.tokenStart;return this.eat(4),{type:"Hash",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e+1)}}function Uu(e){this.token(4,"#"+e.value)}var Fn={};b(Fn,{generate:()=>qu,name:()=>ju,parse:()=>Rn,structure:()=>Hu});var ju="Identifier",Hu={name:String};function Rn(){return{type:"Identifier",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function qu(e){this.token(1,e.name)}var _n={};b(_n,{generate:()=>Gu,name:()=>Wu,parse:()=>Bn,structure:()=>Yu});var Wu="IdSelector",Yu={name:String};function Bn(){let e=this.tokenStart;return this.eat(4),{type:"IdSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function Gu(e){this.token(9,"#"+e.name)}var jn={};b(jn,{generate:()=>Qu,name:()=>Vu,parse:()=>Un,structure:()=>Ku});var Vu="MediaFeature",Ku={name:String,value:["Identifier","Number","Dimension","Ratio",null]};function Un(){let e=this.tokenStart,t,r=null;if(this.eat(21),this.skipSC(),t=this.consume(1),this.skipSC(),this.tokenType!==22){switch(this.eat(16),this.skipSC(),this.tokenType){case 10:this.lookupNonWSType(1)===9?r=this.Ratio():r=this.Number();break;case 12:r=this.Dimension();break;case 1:r=this.Identifier();break;default:this.error("Number, dimension, ratio or identifier is expected")}this.skipSC()}return this.eat(22),{type:"MediaFeature",loc:this.getLocation(e,this.tokenStart),name:t,value:r}}function Qu(e){this.token(21,"("),this.token(1,e.name),e.value!==null&&(this.token(16,":"),this.node(e.value)),this.token(22,")")}var qn={};b(qn,{generate:()=>Zu,name:()=>Xu,parse:()=>Hn,structure:()=>$u});var Xu="MediaQuery",$u={children:[["Identifier","MediaFeature","WhiteSpace"]]};function Hn(){let e=this.createList(),t=null;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 1:t=this.Identifier();break;case 21:t=this.MediaFeature();break;default:break e}e.push(t)}return t===null&&this.error("Identifier or parenthesis is expected"),{type:"MediaQuery",loc:this.getLocationFromList(e),children:e}}function Zu(e){this.children(e)}var Yn={};b(Yn,{generate:()=>tp,name:()=>Ju,parse:()=>Wn,structure:()=>ep});var Ju="MediaQueryList",ep={children:[["MediaQuery"]]};function Wn(){let e=this.createList();for(this.skipSC();!this.eof&&(e.push(this.MediaQuery()),this.tokenType===18);)this.next();return{type:"MediaQueryList",loc:this.getLocationFromList(e),children:e}}function tp(e){this.children(e,()=>this.token(18,","))}var Vn={};b(Vn,{generate:()=>op,name:()=>rp,parse:()=>Gn,structure:()=>np});var rp="Nth",np={nth:["AnPlusB","Identifier"],selector:["SelectorList",null]};function Gn(){this.skipSC();let e=this.tokenStart,t=e,r=null,n;return this.lookupValue(0,"odd")||this.lookupValue(0,"even")?n=this.Identifier():n=this.AnPlusB(),t=this.tokenStart,this.skipSC(),this.lookupValue(0,"of")&&(this.next(),r=this.SelectorList(),t=this.tokenStart),{type:"Nth",loc:this.getLocation(e,t),nth:n,selector:r}}function op(e){this.node(e.nth),e.selector!==null&&(this.token(1,"of"),this.node(e.selector))}var Qn={};b(Qn,{generate:()=>sp,name:()=>ip,parse:()=>Kn,structure:()=>ap});var ip="Number",ap={value:String};function Kn(){return{type:"Number",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consume(10)}}function sp(e){this.token(10,e.value)}var $n={};b($n,{generate:()=>up,name:()=>lp,parse:()=>Xn,structure:()=>cp});var lp="Operator",cp={value:String};function Xn(){let e=this.tokenStart;return this.next(),{type:"Operator",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function up(e){this.tokenize(e.value)}var Jn={};b(Jn,{generate:()=>mp,name:()=>pp,parse:()=>Zn,structure:()=>hp});var pp="Parentheses",hp={children:[[]]};function Zn(e,t){let r=this.tokenStart,n=null;return this.eat(21),n=e.call(this,t),this.eof||this.eat(22),{type:"Parentheses",loc:this.getLocation(r,this.tokenStart),children:n}}function mp(e){this.token(21,"("),this.children(e),this.token(22,")")}var to={};b(to,{generate:()=>gp,name:()=>fp,parse:()=>eo,structure:()=>dp});var fp="Percentage",dp={value:String};function eo(){return{type:"Percentage",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function gp(e){this.token(11,e.value+"%")}var no={};b(no,{generate:()=>kp,name:()=>bp,parse:()=>ro,structure:()=>yp,walkContext:()=>xp});var bp="PseudoClassSelector",xp="function",yp={name:String,children:[["Raw"],null]};function ro(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):r=this.consume(1),{type:"PseudoClassSelector",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function kp(e){this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var io={};b(io,{generate:()=>Cp,name:()=>wp,parse:()=>oo,structure:()=>Sp,walkContext:()=>vp});var wp="PseudoElementSelector",vp="function",Sp={name:String,children:[["Raw"],null]};function oo(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):r=this.consume(1),{type:"PseudoElementSelector",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function Cp(e){this.token(16,":"),this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var so={};b(so,{generate:()=>Pp,name:()=>Ep,parse:()=>ao,structure:()=>Lp});var Ap=47,Tp=46;function Aa(){this.skipSC();let e=this.consume(10);for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);!B(r)&&r!==Tp&&this.error("Unsigned number is expected",this.tokenStart-e.length+t)}return Number(e)===0&&this.error("Zero number is not allowed",this.tokenStart-e.length),e}var Ep="Ratio",Lp={left:String,right:String};function ao(){let e=this.tokenStart,t=Aa.call(this),r;return this.skipSC(),this.eatDelim(Ap),r=Aa.call(this),{type:"Ratio",loc:this.getLocation(e,this.tokenStart),left:t,right:r}}function Pp(e){this.token(10,e.left),this.token(9,"/"),this.token(10,e.right)}var co={};b(co,{generate:()=>Np,name:()=>Dp,parse:()=>lo,structure:()=>Op});function Ip(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}var Dp="Raw",Op={value:String};function lo(e,t,r){let n=this.getTokenStart(e),o;return this.skipUntilBalanced(e,t||this.consumeUntilBalanceEnd),r&&this.tokenStart>n?o=Ip.call(this):o=this.tokenStart,{type:"Raw",loc:this.getLocation(n,o),value:this.substring(n,o)}}function Np(e){this.tokenize(e.value)}var po={};b(po,{generate:()=>Bp,name:()=>Mp,parse:()=>uo,structure:()=>Fp,walkContext:()=>Rp});function Ta(e){return this.Raw(e,this.consumeUntilLeftCurlyBracket,!0)}function zp(){let e=this.SelectorList();return e.type!=="Raw"&&this.eof===!1&&this.tokenType!==23&&this.error(),e}var Mp="Rule",Rp="rule",Fp={prelude:["SelectorList","Raw"],block:["Block"]};function uo(){let e=this.tokenIndex,t=this.tokenStart,r,n;return this.parseRulePrelude?r=this.parseWithFallback(zp,Ta):r=Ta.call(this,e),n=this.Block(!0),{type:"Rule",loc:this.getLocation(t,this.tokenStart),prelude:r,block:n}}function Bp(e){this.node(e.prelude),this.node(e.block)}var mo={};b(mo,{generate:()=>jp,name:()=>_p,parse:()=>ho,structure:()=>Up});var _p="Selector",Up={children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator","WhiteSpace"]]};function ho(){let e=this.readSequence(this.scope.Selector);return this.getFirstListNode(e)===null&&this.error("Selector is expected"),{type:"Selector",loc:this.getLocationFromList(e),children:e}}function jp(e){this.children(e)}var go={};b(go,{generate:()=>Yp,name:()=>Hp,parse:()=>fo,structure:()=>Wp,walkContext:()=>qp});var Hp="SelectorList",qp="selector",Wp={children:[["Selector","Raw"]]};function fo(){let e=this.createList();for(;!this.eof;){if(e.push(this.Selector()),this.tokenType===18){this.next();continue}break}return{type:"SelectorList",loc:this.getLocationFromList(e),children:e}}function Yp(e){this.children(e,()=>this.token(18,","))}var ko={};b(ko,{generate:()=>Kp,name:()=>Gp,parse:()=>yo,structure:()=>Vp});var or={};b(or,{decode:()=>bt,encode:()=>xo});var bo=92,Ea=34,La=39;function bt(e){let t=e.length,r=e.charCodeAt(0),n=r===Ea||r===La?1:0,o=n===1&&t>1&&e.charCodeAt(t-1)===r?t-2:t-1,i="";for(let s=n;s<=o;s++){let u=e.charCodeAt(s);if(u===bo){if(s===o){s!==t-1&&(i=e.substr(s+1));break}if(u=e.charCodeAt(++s),$(bo,u)){let c=s-1,a=se(e,c);s=a-1,i+=_e(e.substring(c+1,a))}else u===13&&e.charCodeAt(s+1)===10&&s++}else i+=e[s]}return i}function xo(e,t){let r=t?"'":'"',n=t?La:Ea,o="",i=!1;for(let s=0;s<e.length;s++){let u=e.charCodeAt(s);if(u===0){o+="\uFFFD";continue}if(u<=31||u===127){o+="\\"+u.toString(16),i=!0;continue}u===n||u===bo?(o+="\\"+e.charAt(s),i=!1):(i&&(ee(u)||pe(u))&&(o+=" "),o+=e.charAt(s),i=!1)}return r+o+r}var Gp="String",Vp={value:String};function yo(){return{type:"String",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:bt(this.consume(5))}}function Kp(e){this.token(5,xo(e.value))}var vo={};b(vo,{generate:()=>Jp,name:()=>Xp,parse:()=>wo,structure:()=>Zp,walkContext:()=>$p});var Qp=33;function Pa(e){return this.Raw(e,null,!1)}var Xp="StyleSheet",$p="stylesheet",Zp={children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]};function wo(){let e=this.tokenStart,t=this.createList(),r;e:for(;!this.eof;){switch(this.tokenType){case 13:this.next();continue;case 25:if(this.charCodeAt(this.tokenStart+2)!==Qp){this.next();continue}r=this.Comment();break;case 14:r=this.CDO();break;case 15:r=this.CDC();break;case 3:r=this.parseWithFallback(this.Atrule,Pa);break;default:r=this.parseWithFallback(this.Rule,Pa)}t.push(r)}return{type:"StyleSheet",loc:this.getLocation(e,this.tokenStart),children:t}}function Jp(e){this.children(e)}var Ao={};b(Ao,{generate:()=>nh,name:()=>th,parse:()=>Co,structure:()=>rh});var eh=42,Ia=124;function So(){this.tokenType!==1&&this.isDelim(eh)===!1&&this.error("Identifier or asterisk is expected"),this.next()}var th="TypeSelector",rh={name:String};function Co(){let e=this.tokenStart;return this.isDelim(Ia)?(this.next(),So.call(this)):(So.call(this),this.isDelim(Ia)&&(this.next(),So.call(this))),{type:"TypeSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function nh(e){this.tokenize(e.name)}var Lo={};b(Lo,{generate:()=>lh,name:()=>ah,parse:()=>Eo,structure:()=>sh});var Da=43,Oa=45,To=63;function xt(e,t){let r=0;for(let n=this.tokenStart+e;n<this.tokenEnd;n++){let o=this.charCodeAt(n);if(o===Oa&&t&&r!==0)return xt.call(this,e+r+1,!1),-1;ee(o)||this.error(t&&r!==0?"Hyphen minus"+(r<6?" or hex digit":"")+" is expected":r<6?"Hex digit is expected":"Unexpected input",n),++r>6&&this.error("Too many hex digits",n)}return this.next(),r}function ir(e){let t=0;for(;this.isDelim(To);)++t>e&&this.error("Too many question marks"),this.next()}function oh(e){this.charCodeAt(this.tokenStart)!==e&&this.error((e===Da?"Plus sign":"Hyphen minus")+" is expected")}function ih(){let e=0;switch(this.tokenType){case 10:if(e=xt.call(this,1,!0),this.isDelim(To)){ir.call(this,6-e);break}if(this.tokenType===12||this.tokenType===10){oh.call(this,Oa),xt.call(this,1,!1);break}break;case 12:e=xt.call(this,1,!0),e>0&&ir.call(this,6-e);break;default:if(this.eatDelim(Da),this.tokenType===1){e=xt.call(this,0,!0),e>0&&ir.call(this,6-e);break}if(this.isDelim(To)){this.next(),ir.call(this,5);break}this.error("Hex digit or question mark is expected")}}var ah="UnicodeRange",sh={value:String};function Eo(){let e=this.tokenStart;return this.eatIdent("u"),ih.call(this),{type:"UnicodeRange",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function lh(e){this.tokenize(e.value)}var No={};b(No,{generate:()=>dh,name:()=>mh,parse:()=>Oo,structure:()=>fh});var ar={};b(ar,{decode:()=>Io,encode:()=>Do});var ch=32,Po=92,uh=34,ph=39,hh=40,Na=41;function Io(e){let t=e.length,r=4,n=e.charCodeAt(t-1)===Na?t-2:t-1,o="";for(;r<n&&pe(e.charCodeAt(r));)r++;for(;r<n&&pe(e.charCodeAt(n));)n--;for(let i=r;i<=n;i++){let s=e.charCodeAt(i);if(s===Po){if(i===n){i!==t-1&&(o=e.substr(i+1));break}if(s=e.charCodeAt(++i),$(Po,s)){let u=i-1,c=se(e,u);i=c-1,o+=_e(e.substring(u+1,c))}else s===13&&e.charCodeAt(i+1)===10&&i++}else o+=e[i]}return o}function Do(e){let t="",r=!1;for(let n=0;n<e.length;n++){let o=e.charCodeAt(n);if(o===0){t+="\uFFFD";continue}if(o<=31||o===127){t+="\\"+o.toString(16),r=!0;continue}o===ch||o===Po||o===uh||o===ph||o===hh||o===Na?(t+="\\"+e.charAt(n),r=!1):(r&&ee(o)&&(t+=" "),t+=e.charAt(n),r=!1)}return"url("+t+")"}var mh="Url",fh={value:String};function Oo(){let e=this.tokenStart,t;switch(this.tokenType){case 7:t=Io(this.consume(7));break;case 2:this.cmpStr(this.tokenStart,this.tokenEnd,"url(")||this.error("Function name must be `url`"),this.eat(2),this.skipSC(),t=bt(this.consume(5)),this.skipSC(),this.eof||this.eat(22);break;default:this.error("Url or Function is expected")}return{type:"Url",loc:this.getLocation(e,this.tokenStart),value:t}}function dh(e){this.token(7,Do(e.value))}var Mo={};b(Mo,{generate:()=>xh,name:()=>gh,parse:()=>zo,structure:()=>bh});var gh="Value",bh={children:[[]]};function zo(){let e=this.tokenStart,t=this.readSequence(this.scope.Value);return{type:"Value",loc:this.getLocation(e,this.tokenStart),children:t}}function xh(e){this.children(e)}var Fo={};b(Fo,{generate:()=>vh,name:()=>kh,parse:()=>Ro,structure:()=>wh});var yh=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),kh="WhiteSpace",wh={value:String};function Ro(){return this.eat(13),yh}function vh(e){this.token(13,e.value)}var za={generic:!0,...ba,node:yt};var Bo={};b(Bo,{AtrulePrelude:()=>Ra,Selector:()=>Ba,Value:()=>Ha});var Sh=35,Ch=42,Ma=43,Ah=45,Th=47,Eh=117;function kt(e){switch(this.tokenType){case 4:return this.Hash();case 18:return this.Operator();case 21:return this.Parentheses(this.readSequence,e.recognizer);case 19:return this.Brackets(this.readSequence,e.recognizer);case 5:return this.String();case 12:return this.Dimension();case 11:return this.Percentage();case 10:return this.Number();case 2:return this.cmpStr(this.tokenStart,this.tokenEnd,"url(")?this.Url():this.Function(this.readSequence,e.recognizer);case 7:return this.Url();case 1:return this.cmpChar(this.tokenStart,Eh)&&this.cmpChar(this.tokenStart+1,Ma)?this.UnicodeRange():this.Identifier();case 9:{let t=this.charCodeAt(this.tokenStart);if(t===Th||t===Ch||t===Ma||t===Ah)return this.Operator();t===Sh&&this.error("Hex or identifier is expected",this.tokenStart+1);break}}}var Ra={getNode:kt};var Lh=35,Ph=42,Ih=43,Dh=47,Fa=46,Oh=62,Nh=124,zh=126;function Mh(e,t){t.last!==null&&t.last.type!=="Combinator"&&e!==null&&e.type!=="Combinator"&&t.push({type:"Combinator",loc:null,name:" "})}function Rh(){switch(this.tokenType){case 19:return this.AttributeSelector();case 4:return this.IdSelector();case 16:return this.lookupType(1)===16?this.PseudoElementSelector():this.PseudoClassSelector();case 1:return this.TypeSelector();case 10:case 11:return this.Percentage();case 12:this.charCodeAt(this.tokenStart)===Fa&&this.error("Identifier is expected",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case Ih:case Oh:case zh:case Dh:return this.Combinator();case Fa:return this.ClassSelector();case Ph:case Nh:return this.TypeSelector();case Lh:return this.IdSelector()}break}}}var Ba={onWhiteSpace:Mh,getNode:Rh};function _a(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function Ua(){let e=this.createList();if(this.skipSC(),e.push(this.Identifier()),this.skipSC(),this.tokenType===18){e.push(this.Operator());let t=this.tokenIndex,r=this.parseCustomProperty?this.Value(null):this.Raw(this.tokenIndex,this.consumeUntilExclamationMarkOrSemicolon,!1);if(r.type==="Value"&&r.children.isEmpty){for(let n=t-this.tokenIndex;n<=0;n++)if(this.lookupType(n)===13){r.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}e.push(r)}return e}function ja(e){return e!==null&&e.type==="Operator"&&(e.value[e.value.length-1]==="-"||e.value[e.value.length-1]==="+")}var Ha={getNode:kt,onWhiteSpace(e,t){ja(e)&&(e.value=" "+e.value),ja(t.last)&&(t.last.value+=" ")},expression:_a,var:Ua};var qa={parse:{prelude:null,block(){return this.Block(!0)}}};var Wa={parse:{prelude(){let e=this.createList();switch(this.skipSC(),this.tokenType){case 5:e.push(this.String());break;case 7:case 2:e.push(this.Url());break;default:this.error("String or url() is expected")}return(this.lookupNonWSType(0)===1||this.lookupNonWSType(0)===21)&&e.push(this.MediaQueryList()),e},block:null}};var Ya={parse:{prelude(){return this.createSingleNodeList(this.MediaQueryList())},block(){return this.Block(!1)}}};var Ga={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}};function Fh(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function Bh(){return this.skipSC(),this.tokenType===1&&this.lookupNonWSType(1)===16?this.createSingleNodeList(this.Declaration()):Va.call(this)}function Va(){let e=this.createList(),t;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 2:t=this.Function(Fh,this.scope.AtrulePrelude);break;case 1:t=this.Identifier();break;case 21:t=this.Parentheses(Bh,this.scope.AtrulePrelude);break;default:break e}e.push(t)}return e}var Ka={parse:{prelude(){let e=Va.call(this);return this.getFirstListNode(e)===null&&this.error("Condition is expected"),e},block(){return this.Block(!1)}}};var Qa={"font-face":qa,import:Wa,media:Ya,page:Ga,supports:Ka};var Ne={parse(){return this.createSingleNodeList(this.SelectorList())}},_h={parse(){return this.createSingleNodeList(this.Selector())}},Xa={parse(){return this.createSingleNodeList(this.Identifier())}},sr={parse(){return this.createSingleNodeList(this.Nth())}},$a={dir:Xa,has:Ne,lang:Xa,matches:Ne,is:Ne,"-moz-any":Ne,"-webkit-any":Ne,where:Ne,not:Ne,"nth-child":sr,"nth-last-child":sr,"nth-last-of-type":sr,"nth-of-type":sr,slotted:_h};var _o={};b(_o,{AnPlusB:()=>rn,Atrule:()=>on,AtrulePrelude:()=>sn,AttributeSelector:()=>un,Block:()=>hn,Brackets:()=>fn,CDC:()=>gn,CDO:()=>xn,ClassSelector:()=>kn,Combinator:()=>vn,Comment:()=>Cn,Declaration:()=>Tn,DeclarationList:()=>Ln,Dimension:()=>In,Function:()=>On,Hash:()=>zn,IdSelector:()=>Bn,Identifier:()=>Rn,MediaFeature:()=>Un,MediaQuery:()=>Hn,MediaQueryList:()=>Wn,Nth:()=>Gn,Number:()=>Kn,Operator:()=>Xn,Parentheses:()=>Zn,Percentage:()=>eo,PseudoClassSelector:()=>ro,PseudoElementSelector:()=>oo,Ratio:()=>ao,Raw:()=>lo,Rule:()=>uo,Selector:()=>ho,SelectorList:()=>fo,String:()=>yo,StyleSheet:()=>wo,TypeSelector:()=>Co,UnicodeRange:()=>Eo,Url:()=>Oo,Value:()=>zo,WhiteSpace:()=>Ro});var Za={parseContext:{default:"StyleSheet",stylesheet:"StyleSheet",atrule:"Atrule",atrulePrelude(e){return this.AtrulePrelude(e.atrule?String(e.atrule):null)},mediaQueryList:"MediaQueryList",mediaQuery:"MediaQuery",rule:"Rule",selectorList:"SelectorList",selector:"Selector",block(){return this.Block(!0)},declarationList:"DeclarationList",declaration:"Declaration",value:"Value"},scope:Bo,atrule:Qa,pseudo:$a,node:_o};var Ja={node:yt};var es=er({...za,...Za,...Ja});var Uh="2.2.0";function lr(e){let t={};for(let r in e){let n=e[r];n&&(Array.isArray(n)||n instanceof I?n=n.map(lr):n.constructor===Object&&(n=lr(n))),t[r]=n}return t}var Uo={};b(Uo,{decode:()=>jh,encode:()=>Hh});var ts=92;function jh(e){let t=e.length-1,r="";for(let n=0;n<e.length;n++){let o=e.charCodeAt(n);if(o===ts){if(n===t)break;if(o=e.charCodeAt(++n),$(ts,o)){let i=n-1,s=se(e,i);n=s-1,r+=_e(e.substring(i+1,s))}else o===13&&e.charCodeAt(n+1)===10&&n++}else r+=e[n]}return r}function Hh(e){let t="";if(e.length===1&&e.charCodeAt(0)===45)return"\\-";for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n===0){t+="\uFFFD";continue}if(n<=31||n===127||n>=48&&n<=57&&(r===0||r===1&&e.charCodeAt(0)===45)){t+="\\"+n.toString(16)+" ";continue}Re(n)?t+=e.charAt(r):t+="\\"+e.charAt(r)}return t}var{tokenize:qh,parse:Wh,generate:Yh,lexer:Gh,createLexer:Vh,walk:Kh,find:Qh,findLast:Xh,findAll:$h,toPlainObject:Zh,fromPlainObject:Jh,fork:em}=es;return ls(tm);})(); diff --git a/node_modules/csso/node_modules/css-tree/dist/data.cjs b/node_modules/csso/node_modules/css-tree/dist/data.cjs deleted file mode 100644 index 27b8d2b0..00000000 --- a/node_modules/csso/node_modules/css-tree/dist/data.cjs +++ /dev/null @@ -1,1028 +0,0 @@ -module.exports = { - "generic": true, - "types": { - "absolute-size": "xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large", - "alpha-value": "<number>|<percentage>", - "angle-percentage": "<angle>|<percentage>", - "angular-color-hint": "<angle-percentage>", - "angular-color-stop": "<color>&&<color-stop-angle>?", - "angular-color-stop-list": "[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>", - "animateable-feature": "scroll-position|contents|<custom-ident>", - "attachment": "scroll|fixed|local", - "attr()": "attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )", - "attr-matcher": "['~'|'|'|'^'|'$'|'*']? '='", - "attr-modifier": "i|s", - "attribute-selector": "'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'", - "auto-repeat": "repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )", - "auto-track-list": "[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?", - "baseline-position": "[first|last]? baseline", - "basic-shape": "<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>", - "bg-image": "none|<image>", - "bg-layer": "<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>", - "bg-position": "[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]", - "bg-size": "[<length-percentage>|auto]{1,2}|cover|contain", - "blur()": "blur( <length> )", - "blend-mode": "normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity", - "box": "border-box|padding-box|content-box", - "brightness()": "brightness( <number-percentage> )", - "calc()": "calc( <calc-sum> )", - "calc-sum": "<calc-product> [['+'|'-'] <calc-product>]*", - "calc-product": "<calc-value> ['*' <calc-value>|'/' <number>]*", - "calc-value": "<number>|<dimension>|<percentage>|( <calc-sum> )", - "cf-final-image": "<image>|<color>", - "cf-mixing-image": "<percentage>?&&<image>", - "circle()": "circle( [<shape-radius>]? [at <position>]? )", - "clamp()": "clamp( <calc-sum>#{3} )", - "class-selector": "'.' <ident-token>", - "clip-source": "<url>", - "color": "<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<hex-color>|<named-color>|currentcolor|<deprecated-system-color>", - "color-stop": "<color-stop-length>|<color-stop-angle>", - "color-stop-angle": "<angle-percentage>{1,2}", - "color-stop-length": "<length-percentage>{1,2}", - "color-stop-list": "[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>", - "combinator": "'>'|'+'|'~'|['||']", - "common-lig-values": "[common-ligatures|no-common-ligatures]", - "compat-auto": "searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button", - "composite-style": "clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor", - "compositing-operator": "add|subtract|intersect|exclude", - "compound-selector": "[<type-selector>? <subclass-selector>* [<pseudo-element-selector> <pseudo-class-selector>*]*]!", - "compound-selector-list": "<compound-selector>#", - "complex-selector": "<compound-selector> [<combinator>? <compound-selector>]*", - "complex-selector-list": "<complex-selector>#", - "conic-gradient()": "conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )", - "contextual-alt-values": "[contextual|no-contextual]", - "content-distribution": "space-between|space-around|space-evenly|stretch", - "content-list": "[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+", - "content-position": "center|start|end|flex-start|flex-end", - "content-replacement": "<image>", - "contrast()": "contrast( [<number-percentage>] )", - "counter": "<counter()>|<counters()>", - "counter()": "counter( <counter-name> , <counter-style>? )", - "counter-name": "<custom-ident>", - "counter-style": "<counter-style-name>|symbols( )", - "counter-style-name": "<custom-ident>", - "counters()": "counters( <counter-name> , <string> , <counter-style>? )", - "cross-fade()": "cross-fade( <cf-mixing-image> , <cf-final-image>? )", - "cubic-bezier-timing-function": "ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )", - "deprecated-system-color": "ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText", - "discretionary-lig-values": "[discretionary-ligatures|no-discretionary-ligatures]", - "display-box": "contents|none", - "display-inside": "flow|flow-root|table|flex|grid|ruby", - "display-internal": "table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container", - "display-legacy": "inline-block|inline-list-item|inline-table|inline-flex|inline-grid", - "display-listitem": "<display-outside>?&&[flow|flow-root]?&&list-item", - "display-outside": "block|inline|run-in", - "drop-shadow()": "drop-shadow( <length>{2,3} <color>? )", - "east-asian-variant-values": "[jis78|jis83|jis90|jis04|simplified|traditional]", - "east-asian-width-values": "[full-width|proportional-width]", - "element()": "element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )", - "ellipse()": "ellipse( [<shape-radius>{2}]? [at <position>]? )", - "ending-shape": "circle|ellipse", - "env()": "env( <custom-ident> , <declaration-value>? )", - "explicit-track-list": "[<line-names>? <track-size>]+ <line-names>?", - "family-name": "<string>|<custom-ident>+", - "feature-tag-value": "<string> [<integer>|on|off]?", - "feature-type": "@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation", - "feature-value-block": "<feature-type> '{' <feature-value-declaration-list> '}'", - "feature-value-block-list": "<feature-value-block>+", - "feature-value-declaration": "<custom-ident> : <integer>+ ;", - "feature-value-declaration-list": "<feature-value-declaration>", - "feature-value-name": "<custom-ident>", - "fill-rule": "nonzero|evenodd", - "filter-function": "<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>", - "filter-function-list": "[<filter-function>|<url>]+", - "final-bg-layer": "<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>", - "fit-content()": "fit-content( [<length>|<percentage>] )", - "fixed-breadth": "<length-percentage>", - "fixed-repeat": "repeat( [<integer [1,∞]>] , [<line-names>? <fixed-size>]+ <line-names>? )", - "fixed-size": "<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )", - "font-stretch-absolute": "normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>", - "font-variant-css21": "[normal|small-caps]", - "font-weight-absolute": "normal|bold|<number [1,1000]>", - "frequency-percentage": "<frequency>|<percentage>", - "general-enclosed": "[<function-token> <any-value> )]|( <ident> <any-value> )", - "generic-family": "serif|sans-serif|cursive|fantasy|monospace|-apple-system", - "generic-name": "serif|sans-serif|cursive|fantasy|monospace", - "geometry-box": "<shape-box>|fill-box|stroke-box|view-box", - "gradient": "<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>", - "grayscale()": "grayscale( <number-percentage> )", - "grid-line": "auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]", - "historical-lig-values": "[historical-ligatures|no-historical-ligatures]", - "hsl()": "hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )", - "hsla()": "hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )", - "hue": "<number>|<angle>", - "hue-rotate()": "hue-rotate( <angle> )", - "hwb()": "hwb( [<hue>|none] [<percentage>|none] [<percentage>|none] [/ [<alpha-value>|none]]? )", - "image": "<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>", - "image()": "image( <image-tags>? [<image-src>? , <color>?]! )", - "image-set()": "image-set( <image-set-option># )", - "image-set-option": "[<image>|<string>] [<resolution>||type( <string> )]", - "image-src": "<url>|<string>", - "image-tags": "ltr|rtl", - "inflexible-breadth": "<length>|<percentage>|min-content|max-content|auto", - "inset()": "inset( <length-percentage>{1,4} [round <'border-radius'>]? )", - "invert()": "invert( <number-percentage> )", - "keyframes-name": "<custom-ident>|<string>", - "keyframe-block": "<keyframe-selector># { <declaration-list> }", - "keyframe-block-list": "<keyframe-block>+", - "keyframe-selector": "from|to|<percentage>", - "layer()": "layer( <layer-name> )", - "layer-name": "<ident> ['.' <ident>]*", - "leader()": "leader( <leader-type> )", - "leader-type": "dotted|solid|space|<string>", - "length-percentage": "<length>|<percentage>", - "line-names": "'[' <custom-ident>* ']'", - "line-name-list": "[<line-names>|<name-repeat>]+", - "line-style": "none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset", - "line-width": "<length>|thin|medium|thick", - "linear-color-hint": "<length-percentage>", - "linear-color-stop": "<color> <color-stop-length>?", - "linear-gradient()": "linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )", - "mask-layer": "<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>", - "mask-position": "[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?", - "mask-reference": "none|<image>|<mask-source>", - "mask-source": "<url>", - "masking-mode": "alpha|luminance|match-source", - "matrix()": "matrix( <number>#{6} )", - "matrix3d()": "matrix3d( <number>#{16} )", - "max()": "max( <calc-sum># )", - "media-and": "<media-in-parens> [and <media-in-parens>]+", - "media-condition": "<media-not>|<media-and>|<media-or>|<media-in-parens>", - "media-condition-without-or": "<media-not>|<media-and>|<media-in-parens>", - "media-feature": "( [<mf-plain>|<mf-boolean>|<mf-range>] )", - "media-in-parens": "( <media-condition> )|<media-feature>|<general-enclosed>", - "media-not": "not <media-in-parens>", - "media-or": "<media-in-parens> [or <media-in-parens>]+", - "media-query": "<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?", - "media-query-list": "<media-query>#", - "media-type": "<ident>", - "mf-boolean": "<mf-name>", - "mf-name": "<ident>", - "mf-plain": "<mf-name> : <mf-value>", - "mf-range": "<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>", - "mf-value": "<number>|<dimension>|<ident>|<ratio>", - "min()": "min( <calc-sum># )", - "minmax()": "minmax( [<length>|<percentage>|min-content|max-content|auto] , [<length>|<percentage>|<flex>|min-content|max-content|auto] )", - "name-repeat": "repeat( [<integer [1,∞]>|auto-fill] , <line-names>+ )", - "named-color": "transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>", - "namespace-prefix": "<ident>", - "ns-prefix": "[<ident-token>|'*']? '|'", - "number-percentage": "<number>|<percentage>", - "numeric-figure-values": "[lining-nums|oldstyle-nums]", - "numeric-fraction-values": "[diagonal-fractions|stacked-fractions]", - "numeric-spacing-values": "[proportional-nums|tabular-nums]", - "nth": "<an-plus-b>|even|odd", - "opacity()": "opacity( [<number-percentage>] )", - "overflow-position": "unsafe|safe", - "outline-radius": "<length>|<percentage>", - "page-body": "<declaration>? [; <page-body>]?|<page-margin-box> <page-body>", - "page-margin-box": "<page-margin-box-type> '{' <declaration-list> '}'", - "page-margin-box-type": "@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom", - "page-selector-list": "[<page-selector>#]?", - "page-selector": "<pseudo-page>+|<ident> <pseudo-page>*", - "page-size": "A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger", - "path()": "path( [<fill-rule> ,]? <string> )", - "paint()": "paint( <ident> , <declaration-value>? )", - "perspective()": "perspective( <length> )", - "polygon()": "polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )", - "position": "[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]", - "pseudo-class-selector": "':' <ident-token>|':' <function-token> <any-value> ')'", - "pseudo-element-selector": "':' <pseudo-class-selector>", - "pseudo-page": ": [left|right|first|blank]", - "quote": "open-quote|close-quote|no-open-quote|no-close-quote", - "radial-gradient()": "radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )", - "relative-selector": "<combinator>? <complex-selector>", - "relative-selector-list": "<relative-selector>#", - "relative-size": "larger|smaller", - "repeat-style": "repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}", - "repeating-conic-gradient()": "repeating-conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )", - "repeating-linear-gradient()": "repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )", - "repeating-radial-gradient()": "repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )", - "rgb()": "rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )", - "rgba()": "rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )", - "rotate()": "rotate( [<angle>|<zero>] )", - "rotate3d()": "rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )", - "rotateX()": "rotateX( [<angle>|<zero>] )", - "rotateY()": "rotateY( [<angle>|<zero>] )", - "rotateZ()": "rotateZ( [<angle>|<zero>] )", - "saturate()": "saturate( <number-percentage> )", - "scale()": "scale( <number> , <number>? )", - "scale3d()": "scale3d( <number> , <number> , <number> )", - "scaleX()": "scaleX( <number> )", - "scaleY()": "scaleY( <number> )", - "scaleZ()": "scaleZ( <number> )", - "self-position": "center|start|end|self-start|self-end|flex-start|flex-end", - "shape-radius": "<length-percentage>|closest-side|farthest-side", - "skew()": "skew( [<angle>|<zero>] , [<angle>|<zero>]? )", - "skewX()": "skewX( [<angle>|<zero>] )", - "skewY()": "skewY( [<angle>|<zero>] )", - "sepia()": "sepia( <number-percentage> )", - "shadow": "inset?&&<length>{2,4}&&<color>?", - "shadow-t": "[<length>{2,3}&&<color>?]", - "shape": "rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )", - "shape-box": "<box>|margin-box", - "side-or-corner": "[left|right]||[top|bottom]", - "single-animation": "<time>||<easing-function>||<time>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]", - "single-animation-direction": "normal|reverse|alternate|alternate-reverse", - "single-animation-fill-mode": "none|forwards|backwards|both", - "single-animation-iteration-count": "infinite|<number>", - "single-animation-play-state": "running|paused", - "single-animation-timeline": "auto|none|<timeline-name>", - "single-transition": "[none|<single-transition-property>]||<time>||<easing-function>||<time>", - "single-transition-property": "all|<custom-ident>", - "size": "closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}", - "step-position": "jump-start|jump-end|jump-none|jump-both|start|end", - "step-timing-function": "step-start|step-end|steps( <integer> [, <step-position>]? )", - "subclass-selector": "<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>", - "supports-condition": "not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*", - "supports-in-parens": "( <supports-condition> )|<supports-feature>|<general-enclosed>", - "supports-feature": "<supports-decl>|<supports-selector-fn>", - "supports-decl": "( <declaration> )", - "supports-selector-fn": "selector( <complex-selector> )", - "symbol": "<string>|<image>|<custom-ident>", - "target": "<target-counter()>|<target-counters()>|<target-text()>", - "target-counter()": "target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )", - "target-counters()": "target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )", - "target-text()": "target-text( [<string>|<url>] , [content|before|after|first-letter]? )", - "time-percentage": "<time>|<percentage>", - "timeline-name": "<custom-ident>|<string>", - "easing-function": "linear|<cubic-bezier-timing-function>|<step-timing-function>", - "track-breadth": "<length-percentage>|<flex>|min-content|max-content|auto", - "track-list": "[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?", - "track-repeat": "repeat( [<integer [1,∞]>] , [<line-names>? <track-size>]+ <line-names>? )", - "track-size": "<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( [<length>|<percentage>] )", - "transform-function": "<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>", - "transform-list": "<transform-function>+", - "translate()": "translate( <length-percentage> , <length-percentage>? )", - "translate3d()": "translate3d( <length-percentage> , <length-percentage> , <length> )", - "translateX()": "translateX( <length-percentage> )", - "translateY()": "translateY( <length-percentage> )", - "translateZ()": "translateZ( <length> )", - "type-or-unit": "string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%", - "type-selector": "<wq-name>|<ns-prefix>? '*'", - "var()": "var( <custom-property-name> , <declaration-value>? )", - "viewport-length": "auto|<length-percentage>", - "visual-box": "content-box|padding-box|border-box", - "wq-name": "<ns-prefix>? <ident-token>", - "-legacy-gradient": "<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>", - "-legacy-linear-gradient": "-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )", - "-legacy-repeating-linear-gradient": "-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )", - "-legacy-linear-gradient-arguments": "[<angle>|<side-or-corner>]? , <color-stop-list>", - "-legacy-radial-gradient": "-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )", - "-legacy-repeating-radial-gradient": "-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )", - "-legacy-radial-gradient-arguments": "[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>", - "-legacy-radial-gradient-size": "closest-side|closest-corner|farthest-side|farthest-corner|contain|cover", - "-legacy-radial-gradient-shape": "circle|ellipse", - "-non-standard-font": "-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body", - "-non-standard-color": "-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text", - "-non-standard-image-rendering": "optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast", - "-non-standard-overflow": "-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable", - "-non-standard-width": "fill-available|min-intrinsic|intrinsic|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content|-webkit-min-content|-webkit-max-content", - "-webkit-gradient()": "-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )", - "-webkit-gradient-color-stop": "from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )", - "-webkit-gradient-point": "[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]", - "-webkit-gradient-radius": "<length>|<percentage>", - "-webkit-gradient-type": "linear|radial", - "-webkit-mask-box-repeat": "repeat|stretch|round", - "-webkit-mask-clip-style": "border|border-box|padding|padding-box|content|content-box|text", - "-ms-filter-function-list": "<-ms-filter-function>+", - "-ms-filter-function": "<-ms-filter-function-progid>|<-ms-filter-function-legacy>", - "-ms-filter-function-progid": "'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]", - "-ms-filter-function-legacy": "<ident-token>|<function-token> <any-value>? )", - "-ms-filter": "<string>", - "age": "child|young|old", - "attr-name": "<wq-name>", - "attr-fallback": "<any-value>", - "bg-clip": "<box>|border|text", - "border-radius": "<length-percentage>{1,2}", - "bottom": "<length>|auto", - "generic-voice": "[<age>? <gender> <integer>?]", - "gender": "male|female|neutral", - "lab()": "lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )", - "lch()": "lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )", - "left": "<length>|auto", - "mask-image": "<mask-reference>#", - "paint": "none|<color>|<url> [none|<color>]?|context-fill|context-stroke", - "ratio": "<number [0,∞]> [/ <number [0,∞]>]?", - "reversed-counter-name": "reversed( <counter-name> )", - "right": "<length>|auto", - "svg-length": "<percentage>|<length>|<number>", - "svg-writing-mode": "lr-tb|rl-tb|tb-rl|lr|rl|tb", - "top": "<length>|auto", - "track-group": "'(' [<string>* <track-minmax> <string>*]+ ')' ['[' <positive-integer> ']']?|<track-minmax>", - "track-list-v0": "[<string>* <track-group> <string>*]+|none", - "track-minmax": "minmax( <track-breadth> , <track-breadth> )|auto|<track-breadth>|fit-content", - "x": "<number>", - "y": "<number>", - "declaration": "<ident-token> : <declaration-value>? ['!' important]?", - "declaration-list": "[<declaration>? ';']* <declaration>?", - "url": "url( <string> <url-modifier>* )|<url-token>", - "url-modifier": "<ident>|<function-token> <any-value> )", - "number-zero-one": "<number [0,1]>", - "number-one-or-greater": "<number [1,∞]>", - "positive-integer": "<integer [0,∞]>", - "-non-standard-display": "-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box" - }, - "properties": { - "--*": "<declaration-value>", - "-ms-accelerator": "false|true", - "-ms-block-progression": "tb|rl|bt|lr", - "-ms-content-zoom-chaining": "none|chained", - "-ms-content-zooming": "none|zoom", - "-ms-content-zoom-limit": "<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>", - "-ms-content-zoom-limit-max": "<percentage>", - "-ms-content-zoom-limit-min": "<percentage>", - "-ms-content-zoom-snap": "<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>", - "-ms-content-zoom-snap-points": "snapInterval( <percentage> , <percentage> )|snapList( <percentage># )", - "-ms-content-zoom-snap-type": "none|proximity|mandatory", - "-ms-filter": "<string>", - "-ms-flow-from": "[none|<custom-ident>]#", - "-ms-flow-into": "[none|<custom-ident>]#", - "-ms-grid-columns": "none|<track-list>|<auto-track-list>", - "-ms-grid-rows": "none|<track-list>|<auto-track-list>", - "-ms-high-contrast-adjust": "auto|none", - "-ms-hyphenate-limit-chars": "auto|<integer>{1,3}", - "-ms-hyphenate-limit-lines": "no-limit|<integer>", - "-ms-hyphenate-limit-zone": "<percentage>|<length>", - "-ms-ime-align": "auto|after", - "-ms-overflow-style": "auto|none|scrollbar|-ms-autohiding-scrollbar", - "-ms-scrollbar-3dlight-color": "<color>", - "-ms-scrollbar-arrow-color": "<color>", - "-ms-scrollbar-base-color": "<color>", - "-ms-scrollbar-darkshadow-color": "<color>", - "-ms-scrollbar-face-color": "<color>", - "-ms-scrollbar-highlight-color": "<color>", - "-ms-scrollbar-shadow-color": "<color>", - "-ms-scrollbar-track-color": "<color>", - "-ms-scroll-chaining": "chained|none", - "-ms-scroll-limit": "<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>", - "-ms-scroll-limit-x-max": "auto|<length>", - "-ms-scroll-limit-x-min": "<length>", - "-ms-scroll-limit-y-max": "auto|<length>", - "-ms-scroll-limit-y-min": "<length>", - "-ms-scroll-rails": "none|railed", - "-ms-scroll-snap-points-x": "snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )", - "-ms-scroll-snap-points-y": "snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )", - "-ms-scroll-snap-type": "none|proximity|mandatory", - "-ms-scroll-snap-x": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>", - "-ms-scroll-snap-y": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>", - "-ms-scroll-translation": "none|vertical-to-horizontal", - "-ms-text-autospace": "none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space", - "-ms-touch-select": "grippers|none", - "-ms-user-select": "none|element|text", - "-ms-wrap-flow": "auto|both|start|end|maximum|clear", - "-ms-wrap-margin": "<length>", - "-ms-wrap-through": "wrap|none", - "-moz-appearance": "none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized", - "-moz-binding": "<url>|none", - "-moz-border-bottom-colors": "<color>+|none", - "-moz-border-left-colors": "<color>+|none", - "-moz-border-right-colors": "<color>+|none", - "-moz-border-top-colors": "<color>+|none", - "-moz-context-properties": "none|[fill|fill-opacity|stroke|stroke-opacity]#", - "-moz-float-edge": "border-box|content-box|margin-box|padding-box", - "-moz-force-broken-image-icon": "0|1", - "-moz-image-region": "<shape>|auto", - "-moz-orient": "inline|block|horizontal|vertical", - "-moz-outline-radius": "<outline-radius>{1,4} [/ <outline-radius>{1,4}]?", - "-moz-outline-radius-bottomleft": "<outline-radius>", - "-moz-outline-radius-bottomright": "<outline-radius>", - "-moz-outline-radius-topleft": "<outline-radius>", - "-moz-outline-radius-topright": "<outline-radius>", - "-moz-stack-sizing": "ignore|stretch-to-fit", - "-moz-text-blink": "none|blink", - "-moz-user-focus": "ignore|normal|select-after|select-before|select-menu|select-same|select-all|none", - "-moz-user-input": "auto|none|enabled|disabled", - "-moz-user-modify": "read-only|read-write|write-only", - "-moz-window-dragging": "drag|no-drag", - "-moz-window-shadow": "default|menu|tooltip|sheet|none", - "-webkit-appearance": "none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button", - "-webkit-border-before": "<'border-width'>||<'border-style'>||<color>", - "-webkit-border-before-color": "<color>", - "-webkit-border-before-style": "<'border-style'>", - "-webkit-border-before-width": "<'border-width'>", - "-webkit-box-reflect": "[above|below|right|left]? <length>? <image>?", - "-webkit-line-clamp": "none|<integer>", - "-webkit-mask": "[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#", - "-webkit-mask-attachment": "<attachment>#", - "-webkit-mask-clip": "[<box>|border|padding|content|text]#", - "-webkit-mask-composite": "<composite-style>#", - "-webkit-mask-image": "<mask-reference>#", - "-webkit-mask-origin": "[<box>|border|padding|content]#", - "-webkit-mask-position": "<position>#", - "-webkit-mask-position-x": "[<length-percentage>|left|center|right]#", - "-webkit-mask-position-y": "[<length-percentage>|top|center|bottom]#", - "-webkit-mask-repeat": "<repeat-style>#", - "-webkit-mask-repeat-x": "repeat|no-repeat|space|round", - "-webkit-mask-repeat-y": "repeat|no-repeat|space|round", - "-webkit-mask-size": "<bg-size>#", - "-webkit-overflow-scrolling": "auto|touch", - "-webkit-tap-highlight-color": "<color>", - "-webkit-text-fill-color": "<color>", - "-webkit-text-stroke": "<length>||<color>", - "-webkit-text-stroke-color": "<color>", - "-webkit-text-stroke-width": "<length>", - "-webkit-touch-callout": "default|none", - "-webkit-user-modify": "read-only|read-write|read-write-plaintext-only", - "accent-color": "auto|<color>", - "align-content": "normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>", - "align-items": "normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]", - "align-self": "auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>", - "align-tracks": "[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#", - "all": "initial|inherit|unset|revert|revert-layer", - "animation": "<single-animation>#", - "animation-delay": "<time>#", - "animation-direction": "<single-animation-direction>#", - "animation-duration": "<time>#", - "animation-fill-mode": "<single-animation-fill-mode>#", - "animation-iteration-count": "<single-animation-iteration-count>#", - "animation-name": "[none|<keyframes-name>]#", - "animation-play-state": "<single-animation-play-state>#", - "animation-timing-function": "<easing-function>#", - "animation-timeline": "<single-animation-timeline>#", - "appearance": "none|auto|textfield|menulist-button|<compat-auto>", - "aspect-ratio": "auto|<ratio>", - "azimuth": "<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards", - "backdrop-filter": "none|<filter-function-list>", - "backface-visibility": "visible|hidden", - "background": "[<bg-layer> ,]* <final-bg-layer>", - "background-attachment": "<attachment>#", - "background-blend-mode": "<blend-mode>#", - "background-clip": "<bg-clip>#", - "background-color": "<color>", - "background-image": "<bg-image>#", - "background-origin": "<box>#", - "background-position": "<bg-position>#", - "background-position-x": "[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#", - "background-position-y": "[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#", - "background-repeat": "<repeat-style>#", - "background-size": "<bg-size>#", - "block-overflow": "clip|ellipsis|<string>", - "block-size": "<'width'>", - "border": "<line-width>||<line-style>||<color>", - "border-block": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-block-color": "<'border-top-color'>{1,2}", - "border-block-style": "<'border-top-style'>", - "border-block-width": "<'border-top-width'>", - "border-block-end": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-block-end-color": "<'border-top-color'>", - "border-block-end-style": "<'border-top-style'>", - "border-block-end-width": "<'border-top-width'>", - "border-block-start": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-block-start-color": "<'border-top-color'>", - "border-block-start-style": "<'border-top-style'>", - "border-block-start-width": "<'border-top-width'>", - "border-bottom": "<line-width>||<line-style>||<color>", - "border-bottom-color": "<'border-top-color'>", - "border-bottom-left-radius": "<length-percentage>{1,2}", - "border-bottom-right-radius": "<length-percentage>{1,2}", - "border-bottom-style": "<line-style>", - "border-bottom-width": "<line-width>", - "border-collapse": "collapse|separate", - "border-color": "<color>{1,4}", - "border-end-end-radius": "<length-percentage>{1,2}", - "border-end-start-radius": "<length-percentage>{1,2}", - "border-image": "<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>", - "border-image-outset": "[<length>|<number>]{1,4}", - "border-image-repeat": "[stretch|repeat|round|space]{1,2}", - "border-image-slice": "<number-percentage>{1,4}&&fill?", - "border-image-source": "none|<image>", - "border-image-width": "[<length-percentage>|<number>|auto]{1,4}", - "border-inline": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-inline-end": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-inline-color": "<'border-top-color'>{1,2}", - "border-inline-style": "<'border-top-style'>", - "border-inline-width": "<'border-top-width'>", - "border-inline-end-color": "<'border-top-color'>", - "border-inline-end-style": "<'border-top-style'>", - "border-inline-end-width": "<'border-top-width'>", - "border-inline-start": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-inline-start-color": "<'border-top-color'>", - "border-inline-start-style": "<'border-top-style'>", - "border-inline-start-width": "<'border-top-width'>", - "border-left": "<line-width>||<line-style>||<color>", - "border-left-color": "<color>", - "border-left-style": "<line-style>", - "border-left-width": "<line-width>", - "border-radius": "<length-percentage>{1,4} [/ <length-percentage>{1,4}]?", - "border-right": "<line-width>||<line-style>||<color>", - "border-right-color": "<color>", - "border-right-style": "<line-style>", - "border-right-width": "<line-width>", - "border-spacing": "<length> <length>?", - "border-start-end-radius": "<length-percentage>{1,2}", - "border-start-start-radius": "<length-percentage>{1,2}", - "border-style": "<line-style>{1,4}", - "border-top": "<line-width>||<line-style>||<color>", - "border-top-color": "<color>", - "border-top-left-radius": "<length-percentage>{1,2}", - "border-top-right-radius": "<length-percentage>{1,2}", - "border-top-style": "<line-style>", - "border-top-width": "<line-width>", - "border-width": "<line-width>{1,4}", - "bottom": "<length>|<percentage>|auto", - "box-align": "start|center|end|baseline|stretch", - "box-decoration-break": "slice|clone", - "box-direction": "normal|reverse|inherit", - "box-flex": "<number>", - "box-flex-group": "<integer>", - "box-lines": "single|multiple", - "box-ordinal-group": "<integer>", - "box-orient": "horizontal|vertical|inline-axis|block-axis|inherit", - "box-pack": "start|center|end|justify", - "box-shadow": "none|<shadow>#", - "box-sizing": "content-box|border-box", - "break-after": "auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region", - "break-before": "auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region", - "break-inside": "auto|avoid|avoid-page|avoid-column|avoid-region", - "caption-side": "top|bottom|block-start|block-end|inline-start|inline-end", - "caret-color": "auto|<color>", - "clear": "none|left|right|both|inline-start|inline-end", - "clip": "<shape>|auto", - "clip-path": "<clip-source>|[<basic-shape>||<geometry-box>]|none", - "color": "<color>", - "print-color-adjust": "economy|exact", - "color-scheme": "normal|[light|dark|<custom-ident>]+&&only?", - "column-count": "<integer>|auto", - "column-fill": "auto|balance|balance-all", - "column-gap": "normal|<length-percentage>", - "column-rule": "<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>", - "column-rule-color": "<color>", - "column-rule-style": "<'border-style'>", - "column-rule-width": "<'border-width'>", - "column-span": "none|all", - "column-width": "<length>|auto", - "columns": "<'column-width'>||<'column-count'>", - "contain": "none|strict|content|[size||layout||style||paint]", - "content": "normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>]+]?", - "content-visibility": "visible|auto|hidden", - "counter-increment": "[<counter-name> <integer>?]+|none", - "counter-reset": "[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none", - "counter-set": "[<counter-name> <integer>?]+|none", - "cursor": "[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]", - "direction": "ltr|rtl", - "display": "[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>", - "empty-cells": "show|hide", - "filter": "none|<filter-function-list>|<-ms-filter-function-list>", - "flex": "none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]", - "flex-basis": "content|<'width'>", - "flex-direction": "row|row-reverse|column|column-reverse", - "flex-flow": "<'flex-direction'>||<'flex-wrap'>", - "flex-grow": "<number>", - "flex-shrink": "<number>", - "flex-wrap": "nowrap|wrap|wrap-reverse", - "float": "left|right|none|inline-start|inline-end", - "font": "[[<'font-style'>||<font-variant-css21>||<'font-weight'>||<'font-stretch'>]? <'font-size'> [/ <'line-height'>]? <'font-family'>]|caption|icon|menu|message-box|small-caption|status-bar", - "font-family": "[<family-name>|<generic-family>]#", - "font-feature-settings": "normal|<feature-tag-value>#", - "font-kerning": "auto|normal|none", - "font-language-override": "normal|<string>", - "font-optical-sizing": "auto|none", - "font-variation-settings": "normal|[<string> <number>]#", - "font-size": "<absolute-size>|<relative-size>|<length-percentage>", - "font-size-adjust": "none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]", - "font-smooth": "auto|never|always|<absolute-size>|<length>", - "font-stretch": "<font-stretch-absolute>", - "font-style": "normal|italic|oblique <angle>?", - "font-synthesis": "none|[weight||style||small-caps]", - "font-variant": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]", - "font-variant-alternates": "normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]", - "font-variant-caps": "normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps", - "font-variant-east-asian": "normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]", - "font-variant-ligatures": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]", - "font-variant-numeric": "normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]", - "font-variant-position": "normal|sub|super", - "font-weight": "<font-weight-absolute>|bolder|lighter", - "forced-color-adjust": "auto|none", - "gap": "<'row-gap'> <'column-gap'>?", - "grid": "<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>", - "grid-area": "<grid-line> [/ <grid-line>]{0,3}", - "grid-auto-columns": "<track-size>+", - "grid-auto-flow": "[row|column]||dense", - "grid-auto-rows": "<track-size>+", - "grid-column": "<grid-line> [/ <grid-line>]?", - "grid-column-end": "<grid-line>", - "grid-column-gap": "<length-percentage>", - "grid-column-start": "<grid-line>", - "grid-gap": "<'grid-row-gap'> <'grid-column-gap'>?", - "grid-row": "<grid-line> [/ <grid-line>]?", - "grid-row-end": "<grid-line>", - "grid-row-gap": "<length-percentage>", - "grid-row-start": "<grid-line>", - "grid-template": "none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?", - "grid-template-areas": "none|<string>+", - "grid-template-columns": "none|<track-list>|<auto-track-list>|subgrid <line-name-list>?", - "grid-template-rows": "none|<track-list>|<auto-track-list>|subgrid <line-name-list>?", - "hanging-punctuation": "none|[first||[force-end|allow-end]||last]", - "height": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )", - "hyphenate-character": "auto|<string>", - "hyphens": "none|manual|auto", - "image-orientation": "from-image|<angle>|[<angle>? flip]", - "image-rendering": "auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>", - "image-resolution": "[from-image||<resolution>]&&snap?", - "ime-mode": "auto|normal|active|inactive|disabled", - "initial-letter": "normal|[<number> <integer>?]", - "initial-letter-align": "[auto|alphabetic|hanging|ideographic]", - "inline-size": "<'width'>", - "input-security": "auto|none", - "inset": "<'top'>{1,4}", - "inset-block": "<'top'>{1,2}", - "inset-block-end": "<'top'>", - "inset-block-start": "<'top'>", - "inset-inline": "<'top'>{1,2}", - "inset-inline-end": "<'top'>", - "inset-inline-start": "<'top'>", - "isolation": "auto|isolate", - "justify-content": "normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]", - "justify-items": "normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]", - "justify-self": "auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]", - "justify-tracks": "[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#", - "left": "<length>|<percentage>|auto", - "letter-spacing": "normal|<length-percentage>", - "line-break": "auto|loose|normal|strict|anywhere", - "line-clamp": "none|<integer>", - "line-height": "normal|<number>|<length>|<percentage>", - "line-height-step": "<length>", - "list-style": "<'list-style-type'>||<'list-style-position'>||<'list-style-image'>", - "list-style-image": "<image>|none", - "list-style-position": "inside|outside", - "list-style-type": "<counter-style>|<string>|none", - "margin": "[<length>|<percentage>|auto]{1,4}", - "margin-block": "<'margin-left'>{1,2}", - "margin-block-end": "<'margin-left'>", - "margin-block-start": "<'margin-left'>", - "margin-bottom": "<length>|<percentage>|auto", - "margin-inline": "<'margin-left'>{1,2}", - "margin-inline-end": "<'margin-left'>", - "margin-inline-start": "<'margin-left'>", - "margin-left": "<length>|<percentage>|auto", - "margin-right": "<length>|<percentage>|auto", - "margin-top": "<length>|<percentage>|auto", - "margin-trim": "none|in-flow|all", - "mask": "<mask-layer>#", - "mask-border": "<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>", - "mask-border-mode": "luminance|alpha", - "mask-border-outset": "[<length>|<number>]{1,4}", - "mask-border-repeat": "[stretch|repeat|round|space]{1,2}", - "mask-border-slice": "<number-percentage>{1,4} fill?", - "mask-border-source": "none|<image>", - "mask-border-width": "[<length-percentage>|<number>|auto]{1,4}", - "mask-clip": "[<geometry-box>|no-clip]#", - "mask-composite": "<compositing-operator>#", - "mask-image": "<mask-reference>#", - "mask-mode": "<masking-mode>#", - "mask-origin": "<geometry-box>#", - "mask-position": "<position>#", - "mask-repeat": "<repeat-style>#", - "mask-size": "<bg-size>#", - "mask-type": "luminance|alpha", - "masonry-auto-flow": "[pack|next]||[definite-first|ordered]", - "math-style": "normal|compact", - "max-block-size": "<'max-width'>", - "max-height": "none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )", - "max-inline-size": "<'max-width'>", - "max-lines": "none|<integer>", - "max-width": "none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>", - "min-block-size": "<'min-width'>", - "min-height": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )", - "min-inline-size": "<'min-width'>", - "min-width": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>", - "mix-blend-mode": "<blend-mode>|plus-lighter", - "object-fit": "fill|contain|cover|none|scale-down", - "object-position": "<position>", - "offset": "[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?", - "offset-anchor": "auto|<position>", - "offset-distance": "<length-percentage>", - "offset-path": "none|ray( [<angle>&&<size>&&contain?] )|<path()>|<url>|[<basic-shape>||<geometry-box>]", - "offset-position": "auto|<position>", - "offset-rotate": "[auto|reverse]||<angle>", - "opacity": "<alpha-value>", - "order": "<integer>", - "orphans": "<integer>", - "outline": "[<'outline-color'>||<'outline-style'>||<'outline-width'>]", - "outline-color": "<color>|invert", - "outline-offset": "<length>", - "outline-style": "auto|<'border-style'>", - "outline-width": "<line-width>", - "overflow": "[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>", - "overflow-anchor": "auto|none", - "overflow-block": "visible|hidden|clip|scroll|auto", - "overflow-clip-box": "padding-box|content-box", - "overflow-clip-margin": "<visual-box>||<length [0,∞]>", - "overflow-inline": "visible|hidden|clip|scroll|auto", - "overflow-wrap": "normal|break-word|anywhere", - "overflow-x": "visible|hidden|clip|scroll|auto", - "overflow-y": "visible|hidden|clip|scroll|auto", - "overscroll-behavior": "[contain|none|auto]{1,2}", - "overscroll-behavior-block": "contain|none|auto", - "overscroll-behavior-inline": "contain|none|auto", - "overscroll-behavior-x": "contain|none|auto", - "overscroll-behavior-y": "contain|none|auto", - "padding": "[<length>|<percentage>]{1,4}", - "padding-block": "<'padding-left'>{1,2}", - "padding-block-end": "<'padding-left'>", - "padding-block-start": "<'padding-left'>", - "padding-bottom": "<length>|<percentage>", - "padding-inline": "<'padding-left'>{1,2}", - "padding-inline-end": "<'padding-left'>", - "padding-inline-start": "<'padding-left'>", - "padding-left": "<length>|<percentage>", - "padding-right": "<length>|<percentage>", - "padding-top": "<length>|<percentage>", - "page-break-after": "auto|always|avoid|left|right|recto|verso", - "page-break-before": "auto|always|avoid|left|right|recto|verso", - "page-break-inside": "auto|avoid", - "paint-order": "normal|[fill||stroke||markers]", - "perspective": "none|<length>", - "perspective-origin": "<position>", - "place-content": "<'align-content'> <'justify-content'>?", - "place-items": "<'align-items'> <'justify-items'>?", - "place-self": "<'align-self'> <'justify-self'>?", - "pointer-events": "auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit", - "position": "static|relative|absolute|sticky|fixed|-webkit-sticky", - "quotes": "none|auto|[<string> <string>]+", - "resize": "none|both|horizontal|vertical|block|inline", - "right": "<length>|<percentage>|auto", - "rotate": "none|<angle>|[x|y|z|<number>{3}]&&<angle>", - "row-gap": "normal|<length-percentage>", - "ruby-align": "start|center|space-between|space-around", - "ruby-merge": "separate|collapse|auto", - "ruby-position": "[alternate||[over|under]]|inter-character", - "scale": "none|<number>{1,3}", - "scrollbar-color": "auto|<color>{2}", - "scrollbar-gutter": "auto|stable&&both-edges?", - "scrollbar-width": "auto|thin|none", - "scroll-behavior": "auto|smooth", - "scroll-margin": "<length>{1,4}", - "scroll-margin-block": "<length>{1,2}", - "scroll-margin-block-start": "<length>", - "scroll-margin-block-end": "<length>", - "scroll-margin-bottom": "<length>", - "scroll-margin-inline": "<length>{1,2}", - "scroll-margin-inline-start": "<length>", - "scroll-margin-inline-end": "<length>", - "scroll-margin-left": "<length>", - "scroll-margin-right": "<length>", - "scroll-margin-top": "<length>", - "scroll-padding": "[auto|<length-percentage>]{1,4}", - "scroll-padding-block": "[auto|<length-percentage>]{1,2}", - "scroll-padding-block-start": "auto|<length-percentage>", - "scroll-padding-block-end": "auto|<length-percentage>", - "scroll-padding-bottom": "auto|<length-percentage>", - "scroll-padding-inline": "[auto|<length-percentage>]{1,2}", - "scroll-padding-inline-start": "auto|<length-percentage>", - "scroll-padding-inline-end": "auto|<length-percentage>", - "scroll-padding-left": "auto|<length-percentage>", - "scroll-padding-right": "auto|<length-percentage>", - "scroll-padding-top": "auto|<length-percentage>", - "scroll-snap-align": "[none|start|end|center]{1,2}", - "scroll-snap-coordinate": "none|<position>#", - "scroll-snap-destination": "<position>", - "scroll-snap-points-x": "none|repeat( <length-percentage> )", - "scroll-snap-points-y": "none|repeat( <length-percentage> )", - "scroll-snap-stop": "normal|always", - "scroll-snap-type": "none|[x|y|block|inline|both] [mandatory|proximity]?", - "scroll-snap-type-x": "none|mandatory|proximity", - "scroll-snap-type-y": "none|mandatory|proximity", - "shape-image-threshold": "<alpha-value>", - "shape-margin": "<length-percentage>", - "shape-outside": "none|[<shape-box>||<basic-shape>]|<image>", - "tab-size": "<integer>|<length>", - "table-layout": "auto|fixed", - "text-align": "start|end|left|right|center|justify|match-parent", - "text-align-last": "auto|start|end|left|right|center|justify", - "text-combine-upright": "none|all|[digits <integer>?]", - "text-decoration": "<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>", - "text-decoration-color": "<color>", - "text-decoration-line": "none|[underline||overline||line-through||blink]|spelling-error|grammar-error", - "text-decoration-skip": "none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]", - "text-decoration-skip-ink": "auto|all|none", - "text-decoration-style": "solid|double|dotted|dashed|wavy", - "text-decoration-thickness": "auto|from-font|<length>|<percentage>", - "text-emphasis": "<'text-emphasis-style'>||<'text-emphasis-color'>", - "text-emphasis-color": "<color>", - "text-emphasis-position": "[over|under]&&[right|left]", - "text-emphasis-style": "none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>", - "text-indent": "<length-percentage>&&hanging?&&each-line?", - "text-justify": "auto|inter-character|inter-word|none", - "text-orientation": "mixed|upright|sideways", - "text-overflow": "[clip|ellipsis|<string>]{1,2}", - "text-rendering": "auto|optimizeSpeed|optimizeLegibility|geometricPrecision", - "text-shadow": "none|<shadow-t>#", - "text-size-adjust": "none|auto|<percentage>", - "text-transform": "none|capitalize|uppercase|lowercase|full-width|full-size-kana", - "text-underline-offset": "auto|<length>|<percentage>", - "text-underline-position": "auto|from-font|[under||[left|right]]", - "top": "<length>|<percentage>|auto", - "touch-action": "auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation", - "transform": "none|<transform-list>", - "transform-box": "content-box|border-box|fill-box|stroke-box|view-box", - "transform-origin": "[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?", - "transform-style": "flat|preserve-3d", - "transition": "<single-transition>#", - "transition-delay": "<time>#", - "transition-duration": "<time>#", - "transition-property": "none|<single-transition-property>#", - "transition-timing-function": "<easing-function>#", - "translate": "none|<length-percentage> [<length-percentage> <length>?]?", - "unicode-bidi": "normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext", - "user-select": "auto|text|none|contain|all", - "vertical-align": "baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>", - "visibility": "visible|hidden|collapse", - "white-space": "normal|pre|nowrap|pre-wrap|pre-line|break-spaces", - "widows": "<integer>", - "width": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|fill|stretch|intrinsic|-moz-max-content|-webkit-max-content|-moz-fit-content|-webkit-fit-content", - "will-change": "auto|<animateable-feature>#", - "word-break": "normal|break-all|keep-all|break-word", - "word-spacing": "normal|<length>", - "word-wrap": "normal|break-word", - "writing-mode": "horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>", - "z-index": "auto|<integer>", - "zoom": "normal|reset|<number>|<percentage>", - "-moz-background-clip": "padding|border", - "-moz-border-radius-bottomleft": "<'border-bottom-left-radius'>", - "-moz-border-radius-bottomright": "<'border-bottom-right-radius'>", - "-moz-border-radius-topleft": "<'border-top-left-radius'>", - "-moz-border-radius-topright": "<'border-bottom-right-radius'>", - "-moz-control-character-visibility": "visible|hidden", - "-moz-osx-font-smoothing": "auto|grayscale", - "-moz-user-select": "none|text|all|-moz-none", - "-ms-flex-align": "start|end|center|baseline|stretch", - "-ms-flex-item-align": "auto|start|end|center|baseline|stretch", - "-ms-flex-line-pack": "start|end|center|justify|distribute|stretch", - "-ms-flex-negative": "<'flex-shrink'>", - "-ms-flex-pack": "start|end|center|justify|distribute", - "-ms-flex-order": "<integer>", - "-ms-flex-positive": "<'flex-grow'>", - "-ms-flex-preferred-size": "<'flex-basis'>", - "-ms-interpolation-mode": "nearest-neighbor|bicubic", - "-ms-grid-column-align": "start|end|center|stretch", - "-ms-grid-row-align": "start|end|center|stretch", - "-ms-hyphenate-limit-last": "none|always|column|page|spread", - "-webkit-background-clip": "[<box>|border|padding|content|text]#", - "-webkit-column-break-after": "always|auto|avoid", - "-webkit-column-break-before": "always|auto|avoid", - "-webkit-column-break-inside": "always|auto|avoid", - "-webkit-font-smoothing": "auto|none|antialiased|subpixel-antialiased", - "-webkit-mask-box-image": "[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?", - "-webkit-print-color-adjust": "economy|exact", - "-webkit-text-security": "none|circle|disc|square", - "-webkit-user-drag": "none|element|auto", - "-webkit-user-select": "auto|none|text|all", - "alignment-baseline": "auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical", - "baseline-shift": "baseline|sub|super|<svg-length>", - "behavior": "<url>+", - "clip-rule": "nonzero|evenodd", - "cue": "<'cue-before'> <'cue-after'>?", - "cue-after": "<url> <decibel>?|none", - "cue-before": "<url> <decibel>?|none", - "dominant-baseline": "auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge", - "fill": "<paint>", - "fill-opacity": "<number-zero-one>", - "fill-rule": "nonzero|evenodd", - "glyph-orientation-horizontal": "<angle>", - "glyph-orientation-vertical": "<angle>", - "kerning": "auto|<svg-length>", - "marker": "none|<url>", - "marker-end": "none|<url>", - "marker-mid": "none|<url>", - "marker-start": "none|<url>", - "pause": "<'pause-before'> <'pause-after'>?", - "pause-after": "<time>|none|x-weak|weak|medium|strong|x-strong", - "pause-before": "<time>|none|x-weak|weak|medium|strong|x-strong", - "rest": "<'rest-before'> <'rest-after'>?", - "rest-after": "<time>|none|x-weak|weak|medium|strong|x-strong", - "rest-before": "<time>|none|x-weak|weak|medium|strong|x-strong", - "shape-rendering": "auto|optimizeSpeed|crispEdges|geometricPrecision", - "src": "[<url> [format( <string># )]?|local( <family-name> )]#", - "speak": "auto|none|normal", - "speak-as": "normal|spell-out||digits||[literal-punctuation|no-punctuation]", - "stroke": "<paint>", - "stroke-dasharray": "none|[<svg-length>+]#", - "stroke-dashoffset": "<svg-length>", - "stroke-linecap": "butt|round|square", - "stroke-linejoin": "miter|round|bevel", - "stroke-miterlimit": "<number-one-or-greater>", - "stroke-opacity": "<number-zero-one>", - "stroke-width": "<svg-length>", - "text-anchor": "start|middle|end", - "unicode-range": "<urange>#", - "voice-balance": "<number>|left|center|right|leftwards|rightwards", - "voice-duration": "auto|<time>", - "voice-family": "[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve", - "voice-pitch": "<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]", - "voice-range": "<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]", - "voice-rate": "[normal|x-slow|slow|medium|fast|x-fast]||<percentage>", - "voice-stress": "normal|strong|moderate|none|reduced", - "voice-volume": "silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]" - }, - "atrules": { - "charset": { - "prelude": "<string>", - "descriptors": null - }, - "counter-style": { - "prelude": "<counter-style-name>", - "descriptors": { - "additive-symbols": "[<integer>&&<symbol>]#", - "fallback": "<counter-style-name>", - "negative": "<symbol> <symbol>?", - "pad": "<integer>&&<symbol>", - "prefix": "<symbol>", - "range": "[[<integer>|infinite]{2}]#|auto", - "speak-as": "auto|bullets|numbers|words|spell-out|<counter-style-name>", - "suffix": "<symbol>", - "symbols": "<symbol>+", - "system": "cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]" - } - }, - "document": { - "prelude": "[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#", - "descriptors": null - }, - "font-face": { - "prelude": null, - "descriptors": { - "ascent-override": "normal|<percentage>", - "descent-override": "normal|<percentage>", - "font-display": "[auto|block|swap|fallback|optional]", - "font-family": "<family-name>", - "font-feature-settings": "normal|<feature-tag-value>#", - "font-variation-settings": "normal|[<string> <number>]#", - "font-stretch": "<font-stretch-absolute>{1,2}", - "font-style": "normal|italic|oblique <angle>{0,2}", - "font-weight": "<font-weight-absolute>{1,2}", - "font-variant": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]", - "line-gap-override": "normal|<percentage>", - "size-adjust": "<percentage>", - "src": "[<url> [format( <string># )]?|local( <family-name> )]#", - "unicode-range": "<urange>#" - } - }, - "font-feature-values": { - "prelude": "<family-name>#", - "descriptors": null - }, - "import": { - "prelude": "[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?", - "descriptors": null - }, - "keyframes": { - "prelude": "<keyframes-name>", - "descriptors": null - }, - "layer": { - "prelude": "[<layer-name>#|<layer-name>?]", - "descriptors": null - }, - "media": { - "prelude": "<media-query-list>", - "descriptors": null - }, - "namespace": { - "prelude": "<namespace-prefix>? [<string>|<url>]", - "descriptors": null - }, - "page": { - "prelude": "<page-selector-list>", - "descriptors": { - "bleed": "auto|<length>", - "marks": "none|[crop||cross]", - "size": "<length>{1,2}|auto|[<page-size>||[portrait|landscape]]" - } - }, - "property": { - "prelude": "<custom-property-name>", - "descriptors": { - "syntax": "<string>", - "inherits": "true|false", - "initial-value": "<string>" - } - }, - "scroll-timeline": { - "prelude": "<timeline-name>", - "descriptors": null - }, - "supports": { - "prelude": "<supports-condition>", - "descriptors": null - }, - "viewport": { - "prelude": null, - "descriptors": { - "height": "<viewport-length>{1,2}", - "max-height": "<viewport-length>", - "max-width": "<viewport-length>", - "max-zoom": "auto|<number>|<percentage>", - "min-height": "<viewport-length>", - "min-width": "<viewport-length>", - "min-zoom": "auto|<number>|<percentage>", - "orientation": "auto|portrait|landscape", - "user-zoom": "zoom|fixed", - "viewport-fit": "auto|contain|cover", - "width": "<viewport-length>{1,2}", - "zoom": "auto|<number>|<percentage>" - } - } - } -};
\ No newline at end of file diff --git a/node_modules/csso/node_modules/css-tree/dist/data.js b/node_modules/csso/node_modules/css-tree/dist/data.js deleted file mode 100644 index 105e46ee..00000000 --- a/node_modules/csso/node_modules/css-tree/dist/data.js +++ /dev/null @@ -1,1028 +0,0 @@ -export default { - "generic": true, - "types": { - "absolute-size": "xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large", - "alpha-value": "<number>|<percentage>", - "angle-percentage": "<angle>|<percentage>", - "angular-color-hint": "<angle-percentage>", - "angular-color-stop": "<color>&&<color-stop-angle>?", - "angular-color-stop-list": "[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>", - "animateable-feature": "scroll-position|contents|<custom-ident>", - "attachment": "scroll|fixed|local", - "attr()": "attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )", - "attr-matcher": "['~'|'|'|'^'|'$'|'*']? '='", - "attr-modifier": "i|s", - "attribute-selector": "'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'", - "auto-repeat": "repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )", - "auto-track-list": "[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?", - "baseline-position": "[first|last]? baseline", - "basic-shape": "<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>", - "bg-image": "none|<image>", - "bg-layer": "<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>", - "bg-position": "[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]", - "bg-size": "[<length-percentage>|auto]{1,2}|cover|contain", - "blur()": "blur( <length> )", - "blend-mode": "normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity", - "box": "border-box|padding-box|content-box", - "brightness()": "brightness( <number-percentage> )", - "calc()": "calc( <calc-sum> )", - "calc-sum": "<calc-product> [['+'|'-'] <calc-product>]*", - "calc-product": "<calc-value> ['*' <calc-value>|'/' <number>]*", - "calc-value": "<number>|<dimension>|<percentage>|( <calc-sum> )", - "cf-final-image": "<image>|<color>", - "cf-mixing-image": "<percentage>?&&<image>", - "circle()": "circle( [<shape-radius>]? [at <position>]? )", - "clamp()": "clamp( <calc-sum>#{3} )", - "class-selector": "'.' <ident-token>", - "clip-source": "<url>", - "color": "<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<hex-color>|<named-color>|currentcolor|<deprecated-system-color>", - "color-stop": "<color-stop-length>|<color-stop-angle>", - "color-stop-angle": "<angle-percentage>{1,2}", - "color-stop-length": "<length-percentage>{1,2}", - "color-stop-list": "[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>", - "combinator": "'>'|'+'|'~'|['||']", - "common-lig-values": "[common-ligatures|no-common-ligatures]", - "compat-auto": "searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button", - "composite-style": "clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor", - "compositing-operator": "add|subtract|intersect|exclude", - "compound-selector": "[<type-selector>? <subclass-selector>* [<pseudo-element-selector> <pseudo-class-selector>*]*]!", - "compound-selector-list": "<compound-selector>#", - "complex-selector": "<compound-selector> [<combinator>? <compound-selector>]*", - "complex-selector-list": "<complex-selector>#", - "conic-gradient()": "conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )", - "contextual-alt-values": "[contextual|no-contextual]", - "content-distribution": "space-between|space-around|space-evenly|stretch", - "content-list": "[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+", - "content-position": "center|start|end|flex-start|flex-end", - "content-replacement": "<image>", - "contrast()": "contrast( [<number-percentage>] )", - "counter": "<counter()>|<counters()>", - "counter()": "counter( <counter-name> , <counter-style>? )", - "counter-name": "<custom-ident>", - "counter-style": "<counter-style-name>|symbols( )", - "counter-style-name": "<custom-ident>", - "counters()": "counters( <counter-name> , <string> , <counter-style>? )", - "cross-fade()": "cross-fade( <cf-mixing-image> , <cf-final-image>? )", - "cubic-bezier-timing-function": "ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )", - "deprecated-system-color": "ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText", - "discretionary-lig-values": "[discretionary-ligatures|no-discretionary-ligatures]", - "display-box": "contents|none", - "display-inside": "flow|flow-root|table|flex|grid|ruby", - "display-internal": "table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container", - "display-legacy": "inline-block|inline-list-item|inline-table|inline-flex|inline-grid", - "display-listitem": "<display-outside>?&&[flow|flow-root]?&&list-item", - "display-outside": "block|inline|run-in", - "drop-shadow()": "drop-shadow( <length>{2,3} <color>? )", - "east-asian-variant-values": "[jis78|jis83|jis90|jis04|simplified|traditional]", - "east-asian-width-values": "[full-width|proportional-width]", - "element()": "element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )", - "ellipse()": "ellipse( [<shape-radius>{2}]? [at <position>]? )", - "ending-shape": "circle|ellipse", - "env()": "env( <custom-ident> , <declaration-value>? )", - "explicit-track-list": "[<line-names>? <track-size>]+ <line-names>?", - "family-name": "<string>|<custom-ident>+", - "feature-tag-value": "<string> [<integer>|on|off]?", - "feature-type": "@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation", - "feature-value-block": "<feature-type> '{' <feature-value-declaration-list> '}'", - "feature-value-block-list": "<feature-value-block>+", - "feature-value-declaration": "<custom-ident> : <integer>+ ;", - "feature-value-declaration-list": "<feature-value-declaration>", - "feature-value-name": "<custom-ident>", - "fill-rule": "nonzero|evenodd", - "filter-function": "<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>", - "filter-function-list": "[<filter-function>|<url>]+", - "final-bg-layer": "<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>", - "fit-content()": "fit-content( [<length>|<percentage>] )", - "fixed-breadth": "<length-percentage>", - "fixed-repeat": "repeat( [<integer [1,∞]>] , [<line-names>? <fixed-size>]+ <line-names>? )", - "fixed-size": "<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )", - "font-stretch-absolute": "normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>", - "font-variant-css21": "[normal|small-caps]", - "font-weight-absolute": "normal|bold|<number [1,1000]>", - "frequency-percentage": "<frequency>|<percentage>", - "general-enclosed": "[<function-token> <any-value> )]|( <ident> <any-value> )", - "generic-family": "serif|sans-serif|cursive|fantasy|monospace|-apple-system", - "generic-name": "serif|sans-serif|cursive|fantasy|monospace", - "geometry-box": "<shape-box>|fill-box|stroke-box|view-box", - "gradient": "<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>", - "grayscale()": "grayscale( <number-percentage> )", - "grid-line": "auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]", - "historical-lig-values": "[historical-ligatures|no-historical-ligatures]", - "hsl()": "hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )", - "hsla()": "hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )", - "hue": "<number>|<angle>", - "hue-rotate()": "hue-rotate( <angle> )", - "hwb()": "hwb( [<hue>|none] [<percentage>|none] [<percentage>|none] [/ [<alpha-value>|none]]? )", - "image": "<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>", - "image()": "image( <image-tags>? [<image-src>? , <color>?]! )", - "image-set()": "image-set( <image-set-option># )", - "image-set-option": "[<image>|<string>] [<resolution>||type( <string> )]", - "image-src": "<url>|<string>", - "image-tags": "ltr|rtl", - "inflexible-breadth": "<length>|<percentage>|min-content|max-content|auto", - "inset()": "inset( <length-percentage>{1,4} [round <'border-radius'>]? )", - "invert()": "invert( <number-percentage> )", - "keyframes-name": "<custom-ident>|<string>", - "keyframe-block": "<keyframe-selector># { <declaration-list> }", - "keyframe-block-list": "<keyframe-block>+", - "keyframe-selector": "from|to|<percentage>", - "layer()": "layer( <layer-name> )", - "layer-name": "<ident> ['.' <ident>]*", - "leader()": "leader( <leader-type> )", - "leader-type": "dotted|solid|space|<string>", - "length-percentage": "<length>|<percentage>", - "line-names": "'[' <custom-ident>* ']'", - "line-name-list": "[<line-names>|<name-repeat>]+", - "line-style": "none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset", - "line-width": "<length>|thin|medium|thick", - "linear-color-hint": "<length-percentage>", - "linear-color-stop": "<color> <color-stop-length>?", - "linear-gradient()": "linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )", - "mask-layer": "<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>", - "mask-position": "[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?", - "mask-reference": "none|<image>|<mask-source>", - "mask-source": "<url>", - "masking-mode": "alpha|luminance|match-source", - "matrix()": "matrix( <number>#{6} )", - "matrix3d()": "matrix3d( <number>#{16} )", - "max()": "max( <calc-sum># )", - "media-and": "<media-in-parens> [and <media-in-parens>]+", - "media-condition": "<media-not>|<media-and>|<media-or>|<media-in-parens>", - "media-condition-without-or": "<media-not>|<media-and>|<media-in-parens>", - "media-feature": "( [<mf-plain>|<mf-boolean>|<mf-range>] )", - "media-in-parens": "( <media-condition> )|<media-feature>|<general-enclosed>", - "media-not": "not <media-in-parens>", - "media-or": "<media-in-parens> [or <media-in-parens>]+", - "media-query": "<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?", - "media-query-list": "<media-query>#", - "media-type": "<ident>", - "mf-boolean": "<mf-name>", - "mf-name": "<ident>", - "mf-plain": "<mf-name> : <mf-value>", - "mf-range": "<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>", - "mf-value": "<number>|<dimension>|<ident>|<ratio>", - "min()": "min( <calc-sum># )", - "minmax()": "minmax( [<length>|<percentage>|min-content|max-content|auto] , [<length>|<percentage>|<flex>|min-content|max-content|auto] )", - "name-repeat": "repeat( [<integer [1,∞]>|auto-fill] , <line-names>+ )", - "named-color": "transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>", - "namespace-prefix": "<ident>", - "ns-prefix": "[<ident-token>|'*']? '|'", - "number-percentage": "<number>|<percentage>", - "numeric-figure-values": "[lining-nums|oldstyle-nums]", - "numeric-fraction-values": "[diagonal-fractions|stacked-fractions]", - "numeric-spacing-values": "[proportional-nums|tabular-nums]", - "nth": "<an-plus-b>|even|odd", - "opacity()": "opacity( [<number-percentage>] )", - "overflow-position": "unsafe|safe", - "outline-radius": "<length>|<percentage>", - "page-body": "<declaration>? [; <page-body>]?|<page-margin-box> <page-body>", - "page-margin-box": "<page-margin-box-type> '{' <declaration-list> '}'", - "page-margin-box-type": "@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom", - "page-selector-list": "[<page-selector>#]?", - "page-selector": "<pseudo-page>+|<ident> <pseudo-page>*", - "page-size": "A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger", - "path()": "path( [<fill-rule> ,]? <string> )", - "paint()": "paint( <ident> , <declaration-value>? )", - "perspective()": "perspective( <length> )", - "polygon()": "polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )", - "position": "[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]", - "pseudo-class-selector": "':' <ident-token>|':' <function-token> <any-value> ')'", - "pseudo-element-selector": "':' <pseudo-class-selector>", - "pseudo-page": ": [left|right|first|blank]", - "quote": "open-quote|close-quote|no-open-quote|no-close-quote", - "radial-gradient()": "radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )", - "relative-selector": "<combinator>? <complex-selector>", - "relative-selector-list": "<relative-selector>#", - "relative-size": "larger|smaller", - "repeat-style": "repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}", - "repeating-conic-gradient()": "repeating-conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )", - "repeating-linear-gradient()": "repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )", - "repeating-radial-gradient()": "repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )", - "rgb()": "rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )", - "rgba()": "rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )", - "rotate()": "rotate( [<angle>|<zero>] )", - "rotate3d()": "rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )", - "rotateX()": "rotateX( [<angle>|<zero>] )", - "rotateY()": "rotateY( [<angle>|<zero>] )", - "rotateZ()": "rotateZ( [<angle>|<zero>] )", - "saturate()": "saturate( <number-percentage> )", - "scale()": "scale( <number> , <number>? )", - "scale3d()": "scale3d( <number> , <number> , <number> )", - "scaleX()": "scaleX( <number> )", - "scaleY()": "scaleY( <number> )", - "scaleZ()": "scaleZ( <number> )", - "self-position": "center|start|end|self-start|self-end|flex-start|flex-end", - "shape-radius": "<length-percentage>|closest-side|farthest-side", - "skew()": "skew( [<angle>|<zero>] , [<angle>|<zero>]? )", - "skewX()": "skewX( [<angle>|<zero>] )", - "skewY()": "skewY( [<angle>|<zero>] )", - "sepia()": "sepia( <number-percentage> )", - "shadow": "inset?&&<length>{2,4}&&<color>?", - "shadow-t": "[<length>{2,3}&&<color>?]", - "shape": "rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )", - "shape-box": "<box>|margin-box", - "side-or-corner": "[left|right]||[top|bottom]", - "single-animation": "<time>||<easing-function>||<time>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]", - "single-animation-direction": "normal|reverse|alternate|alternate-reverse", - "single-animation-fill-mode": "none|forwards|backwards|both", - "single-animation-iteration-count": "infinite|<number>", - "single-animation-play-state": "running|paused", - "single-animation-timeline": "auto|none|<timeline-name>", - "single-transition": "[none|<single-transition-property>]||<time>||<easing-function>||<time>", - "single-transition-property": "all|<custom-ident>", - "size": "closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}", - "step-position": "jump-start|jump-end|jump-none|jump-both|start|end", - "step-timing-function": "step-start|step-end|steps( <integer> [, <step-position>]? )", - "subclass-selector": "<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>", - "supports-condition": "not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*", - "supports-in-parens": "( <supports-condition> )|<supports-feature>|<general-enclosed>", - "supports-feature": "<supports-decl>|<supports-selector-fn>", - "supports-decl": "( <declaration> )", - "supports-selector-fn": "selector( <complex-selector> )", - "symbol": "<string>|<image>|<custom-ident>", - "target": "<target-counter()>|<target-counters()>|<target-text()>", - "target-counter()": "target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )", - "target-counters()": "target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )", - "target-text()": "target-text( [<string>|<url>] , [content|before|after|first-letter]? )", - "time-percentage": "<time>|<percentage>", - "timeline-name": "<custom-ident>|<string>", - "easing-function": "linear|<cubic-bezier-timing-function>|<step-timing-function>", - "track-breadth": "<length-percentage>|<flex>|min-content|max-content|auto", - "track-list": "[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?", - "track-repeat": "repeat( [<integer [1,∞]>] , [<line-names>? <track-size>]+ <line-names>? )", - "track-size": "<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( [<length>|<percentage>] )", - "transform-function": "<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>", - "transform-list": "<transform-function>+", - "translate()": "translate( <length-percentage> , <length-percentage>? )", - "translate3d()": "translate3d( <length-percentage> , <length-percentage> , <length> )", - "translateX()": "translateX( <length-percentage> )", - "translateY()": "translateY( <length-percentage> )", - "translateZ()": "translateZ( <length> )", - "type-or-unit": "string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%", - "type-selector": "<wq-name>|<ns-prefix>? '*'", - "var()": "var( <custom-property-name> , <declaration-value>? )", - "viewport-length": "auto|<length-percentage>", - "visual-box": "content-box|padding-box|border-box", - "wq-name": "<ns-prefix>? <ident-token>", - "-legacy-gradient": "<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>", - "-legacy-linear-gradient": "-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )", - "-legacy-repeating-linear-gradient": "-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )", - "-legacy-linear-gradient-arguments": "[<angle>|<side-or-corner>]? , <color-stop-list>", - "-legacy-radial-gradient": "-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )", - "-legacy-repeating-radial-gradient": "-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )", - "-legacy-radial-gradient-arguments": "[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>", - "-legacy-radial-gradient-size": "closest-side|closest-corner|farthest-side|farthest-corner|contain|cover", - "-legacy-radial-gradient-shape": "circle|ellipse", - "-non-standard-font": "-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body", - "-non-standard-color": "-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text", - "-non-standard-image-rendering": "optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast", - "-non-standard-overflow": "-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable", - "-non-standard-width": "fill-available|min-intrinsic|intrinsic|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content|-webkit-min-content|-webkit-max-content", - "-webkit-gradient()": "-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )", - "-webkit-gradient-color-stop": "from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )", - "-webkit-gradient-point": "[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]", - "-webkit-gradient-radius": "<length>|<percentage>", - "-webkit-gradient-type": "linear|radial", - "-webkit-mask-box-repeat": "repeat|stretch|round", - "-webkit-mask-clip-style": "border|border-box|padding|padding-box|content|content-box|text", - "-ms-filter-function-list": "<-ms-filter-function>+", - "-ms-filter-function": "<-ms-filter-function-progid>|<-ms-filter-function-legacy>", - "-ms-filter-function-progid": "'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]", - "-ms-filter-function-legacy": "<ident-token>|<function-token> <any-value>? )", - "-ms-filter": "<string>", - "age": "child|young|old", - "attr-name": "<wq-name>", - "attr-fallback": "<any-value>", - "bg-clip": "<box>|border|text", - "border-radius": "<length-percentage>{1,2}", - "bottom": "<length>|auto", - "generic-voice": "[<age>? <gender> <integer>?]", - "gender": "male|female|neutral", - "lab()": "lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )", - "lch()": "lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )", - "left": "<length>|auto", - "mask-image": "<mask-reference>#", - "paint": "none|<color>|<url> [none|<color>]?|context-fill|context-stroke", - "ratio": "<number [0,∞]> [/ <number [0,∞]>]?", - "reversed-counter-name": "reversed( <counter-name> )", - "right": "<length>|auto", - "svg-length": "<percentage>|<length>|<number>", - "svg-writing-mode": "lr-tb|rl-tb|tb-rl|lr|rl|tb", - "top": "<length>|auto", - "track-group": "'(' [<string>* <track-minmax> <string>*]+ ')' ['[' <positive-integer> ']']?|<track-minmax>", - "track-list-v0": "[<string>* <track-group> <string>*]+|none", - "track-minmax": "minmax( <track-breadth> , <track-breadth> )|auto|<track-breadth>|fit-content", - "x": "<number>", - "y": "<number>", - "declaration": "<ident-token> : <declaration-value>? ['!' important]?", - "declaration-list": "[<declaration>? ';']* <declaration>?", - "url": "url( <string> <url-modifier>* )|<url-token>", - "url-modifier": "<ident>|<function-token> <any-value> )", - "number-zero-one": "<number [0,1]>", - "number-one-or-greater": "<number [1,∞]>", - "positive-integer": "<integer [0,∞]>", - "-non-standard-display": "-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box" - }, - "properties": { - "--*": "<declaration-value>", - "-ms-accelerator": "false|true", - "-ms-block-progression": "tb|rl|bt|lr", - "-ms-content-zoom-chaining": "none|chained", - "-ms-content-zooming": "none|zoom", - "-ms-content-zoom-limit": "<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>", - "-ms-content-zoom-limit-max": "<percentage>", - "-ms-content-zoom-limit-min": "<percentage>", - "-ms-content-zoom-snap": "<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>", - "-ms-content-zoom-snap-points": "snapInterval( <percentage> , <percentage> )|snapList( <percentage># )", - "-ms-content-zoom-snap-type": "none|proximity|mandatory", - "-ms-filter": "<string>", - "-ms-flow-from": "[none|<custom-ident>]#", - "-ms-flow-into": "[none|<custom-ident>]#", - "-ms-grid-columns": "none|<track-list>|<auto-track-list>", - "-ms-grid-rows": "none|<track-list>|<auto-track-list>", - "-ms-high-contrast-adjust": "auto|none", - "-ms-hyphenate-limit-chars": "auto|<integer>{1,3}", - "-ms-hyphenate-limit-lines": "no-limit|<integer>", - "-ms-hyphenate-limit-zone": "<percentage>|<length>", - "-ms-ime-align": "auto|after", - "-ms-overflow-style": "auto|none|scrollbar|-ms-autohiding-scrollbar", - "-ms-scrollbar-3dlight-color": "<color>", - "-ms-scrollbar-arrow-color": "<color>", - "-ms-scrollbar-base-color": "<color>", - "-ms-scrollbar-darkshadow-color": "<color>", - "-ms-scrollbar-face-color": "<color>", - "-ms-scrollbar-highlight-color": "<color>", - "-ms-scrollbar-shadow-color": "<color>", - "-ms-scrollbar-track-color": "<color>", - "-ms-scroll-chaining": "chained|none", - "-ms-scroll-limit": "<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>", - "-ms-scroll-limit-x-max": "auto|<length>", - "-ms-scroll-limit-x-min": "<length>", - "-ms-scroll-limit-y-max": "auto|<length>", - "-ms-scroll-limit-y-min": "<length>", - "-ms-scroll-rails": "none|railed", - "-ms-scroll-snap-points-x": "snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )", - "-ms-scroll-snap-points-y": "snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )", - "-ms-scroll-snap-type": "none|proximity|mandatory", - "-ms-scroll-snap-x": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>", - "-ms-scroll-snap-y": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>", - "-ms-scroll-translation": "none|vertical-to-horizontal", - "-ms-text-autospace": "none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space", - "-ms-touch-select": "grippers|none", - "-ms-user-select": "none|element|text", - "-ms-wrap-flow": "auto|both|start|end|maximum|clear", - "-ms-wrap-margin": "<length>", - "-ms-wrap-through": "wrap|none", - "-moz-appearance": "none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized", - "-moz-binding": "<url>|none", - "-moz-border-bottom-colors": "<color>+|none", - "-moz-border-left-colors": "<color>+|none", - "-moz-border-right-colors": "<color>+|none", - "-moz-border-top-colors": "<color>+|none", - "-moz-context-properties": "none|[fill|fill-opacity|stroke|stroke-opacity]#", - "-moz-float-edge": "border-box|content-box|margin-box|padding-box", - "-moz-force-broken-image-icon": "0|1", - "-moz-image-region": "<shape>|auto", - "-moz-orient": "inline|block|horizontal|vertical", - "-moz-outline-radius": "<outline-radius>{1,4} [/ <outline-radius>{1,4}]?", - "-moz-outline-radius-bottomleft": "<outline-radius>", - "-moz-outline-radius-bottomright": "<outline-radius>", - "-moz-outline-radius-topleft": "<outline-radius>", - "-moz-outline-radius-topright": "<outline-radius>", - "-moz-stack-sizing": "ignore|stretch-to-fit", - "-moz-text-blink": "none|blink", - "-moz-user-focus": "ignore|normal|select-after|select-before|select-menu|select-same|select-all|none", - "-moz-user-input": "auto|none|enabled|disabled", - "-moz-user-modify": "read-only|read-write|write-only", - "-moz-window-dragging": "drag|no-drag", - "-moz-window-shadow": "default|menu|tooltip|sheet|none", - "-webkit-appearance": "none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button", - "-webkit-border-before": "<'border-width'>||<'border-style'>||<color>", - "-webkit-border-before-color": "<color>", - "-webkit-border-before-style": "<'border-style'>", - "-webkit-border-before-width": "<'border-width'>", - "-webkit-box-reflect": "[above|below|right|left]? <length>? <image>?", - "-webkit-line-clamp": "none|<integer>", - "-webkit-mask": "[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#", - "-webkit-mask-attachment": "<attachment>#", - "-webkit-mask-clip": "[<box>|border|padding|content|text]#", - "-webkit-mask-composite": "<composite-style>#", - "-webkit-mask-image": "<mask-reference>#", - "-webkit-mask-origin": "[<box>|border|padding|content]#", - "-webkit-mask-position": "<position>#", - "-webkit-mask-position-x": "[<length-percentage>|left|center|right]#", - "-webkit-mask-position-y": "[<length-percentage>|top|center|bottom]#", - "-webkit-mask-repeat": "<repeat-style>#", - "-webkit-mask-repeat-x": "repeat|no-repeat|space|round", - "-webkit-mask-repeat-y": "repeat|no-repeat|space|round", - "-webkit-mask-size": "<bg-size>#", - "-webkit-overflow-scrolling": "auto|touch", - "-webkit-tap-highlight-color": "<color>", - "-webkit-text-fill-color": "<color>", - "-webkit-text-stroke": "<length>||<color>", - "-webkit-text-stroke-color": "<color>", - "-webkit-text-stroke-width": "<length>", - "-webkit-touch-callout": "default|none", - "-webkit-user-modify": "read-only|read-write|read-write-plaintext-only", - "accent-color": "auto|<color>", - "align-content": "normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>", - "align-items": "normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]", - "align-self": "auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>", - "align-tracks": "[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#", - "all": "initial|inherit|unset|revert|revert-layer", - "animation": "<single-animation>#", - "animation-delay": "<time>#", - "animation-direction": "<single-animation-direction>#", - "animation-duration": "<time>#", - "animation-fill-mode": "<single-animation-fill-mode>#", - "animation-iteration-count": "<single-animation-iteration-count>#", - "animation-name": "[none|<keyframes-name>]#", - "animation-play-state": "<single-animation-play-state>#", - "animation-timing-function": "<easing-function>#", - "animation-timeline": "<single-animation-timeline>#", - "appearance": "none|auto|textfield|menulist-button|<compat-auto>", - "aspect-ratio": "auto|<ratio>", - "azimuth": "<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards", - "backdrop-filter": "none|<filter-function-list>", - "backface-visibility": "visible|hidden", - "background": "[<bg-layer> ,]* <final-bg-layer>", - "background-attachment": "<attachment>#", - "background-blend-mode": "<blend-mode>#", - "background-clip": "<bg-clip>#", - "background-color": "<color>", - "background-image": "<bg-image>#", - "background-origin": "<box>#", - "background-position": "<bg-position>#", - "background-position-x": "[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#", - "background-position-y": "[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#", - "background-repeat": "<repeat-style>#", - "background-size": "<bg-size>#", - "block-overflow": "clip|ellipsis|<string>", - "block-size": "<'width'>", - "border": "<line-width>||<line-style>||<color>", - "border-block": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-block-color": "<'border-top-color'>{1,2}", - "border-block-style": "<'border-top-style'>", - "border-block-width": "<'border-top-width'>", - "border-block-end": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-block-end-color": "<'border-top-color'>", - "border-block-end-style": "<'border-top-style'>", - "border-block-end-width": "<'border-top-width'>", - "border-block-start": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-block-start-color": "<'border-top-color'>", - "border-block-start-style": "<'border-top-style'>", - "border-block-start-width": "<'border-top-width'>", - "border-bottom": "<line-width>||<line-style>||<color>", - "border-bottom-color": "<'border-top-color'>", - "border-bottom-left-radius": "<length-percentage>{1,2}", - "border-bottom-right-radius": "<length-percentage>{1,2}", - "border-bottom-style": "<line-style>", - "border-bottom-width": "<line-width>", - "border-collapse": "collapse|separate", - "border-color": "<color>{1,4}", - "border-end-end-radius": "<length-percentage>{1,2}", - "border-end-start-radius": "<length-percentage>{1,2}", - "border-image": "<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>", - "border-image-outset": "[<length>|<number>]{1,4}", - "border-image-repeat": "[stretch|repeat|round|space]{1,2}", - "border-image-slice": "<number-percentage>{1,4}&&fill?", - "border-image-source": "none|<image>", - "border-image-width": "[<length-percentage>|<number>|auto]{1,4}", - "border-inline": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-inline-end": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-inline-color": "<'border-top-color'>{1,2}", - "border-inline-style": "<'border-top-style'>", - "border-inline-width": "<'border-top-width'>", - "border-inline-end-color": "<'border-top-color'>", - "border-inline-end-style": "<'border-top-style'>", - "border-inline-end-width": "<'border-top-width'>", - "border-inline-start": "<'border-top-width'>||<'border-top-style'>||<color>", - "border-inline-start-color": "<'border-top-color'>", - "border-inline-start-style": "<'border-top-style'>", - "border-inline-start-width": "<'border-top-width'>", - "border-left": "<line-width>||<line-style>||<color>", - "border-left-color": "<color>", - "border-left-style": "<line-style>", - "border-left-width": "<line-width>", - "border-radius": "<length-percentage>{1,4} [/ <length-percentage>{1,4}]?", - "border-right": "<line-width>||<line-style>||<color>", - "border-right-color": "<color>", - "border-right-style": "<line-style>", - "border-right-width": "<line-width>", - "border-spacing": "<length> <length>?", - "border-start-end-radius": "<length-percentage>{1,2}", - "border-start-start-radius": "<length-percentage>{1,2}", - "border-style": "<line-style>{1,4}", - "border-top": "<line-width>||<line-style>||<color>", - "border-top-color": "<color>", - "border-top-left-radius": "<length-percentage>{1,2}", - "border-top-right-radius": "<length-percentage>{1,2}", - "border-top-style": "<line-style>", - "border-top-width": "<line-width>", - "border-width": "<line-width>{1,4}", - "bottom": "<length>|<percentage>|auto", - "box-align": "start|center|end|baseline|stretch", - "box-decoration-break": "slice|clone", - "box-direction": "normal|reverse|inherit", - "box-flex": "<number>", - "box-flex-group": "<integer>", - "box-lines": "single|multiple", - "box-ordinal-group": "<integer>", - "box-orient": "horizontal|vertical|inline-axis|block-axis|inherit", - "box-pack": "start|center|end|justify", - "box-shadow": "none|<shadow>#", - "box-sizing": "content-box|border-box", - "break-after": "auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region", - "break-before": "auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region", - "break-inside": "auto|avoid|avoid-page|avoid-column|avoid-region", - "caption-side": "top|bottom|block-start|block-end|inline-start|inline-end", - "caret-color": "auto|<color>", - "clear": "none|left|right|both|inline-start|inline-end", - "clip": "<shape>|auto", - "clip-path": "<clip-source>|[<basic-shape>||<geometry-box>]|none", - "color": "<color>", - "print-color-adjust": "economy|exact", - "color-scheme": "normal|[light|dark|<custom-ident>]+&&only?", - "column-count": "<integer>|auto", - "column-fill": "auto|balance|balance-all", - "column-gap": "normal|<length-percentage>", - "column-rule": "<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>", - "column-rule-color": "<color>", - "column-rule-style": "<'border-style'>", - "column-rule-width": "<'border-width'>", - "column-span": "none|all", - "column-width": "<length>|auto", - "columns": "<'column-width'>||<'column-count'>", - "contain": "none|strict|content|[size||layout||style||paint]", - "content": "normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>]+]?", - "content-visibility": "visible|auto|hidden", - "counter-increment": "[<counter-name> <integer>?]+|none", - "counter-reset": "[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none", - "counter-set": "[<counter-name> <integer>?]+|none", - "cursor": "[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]", - "direction": "ltr|rtl", - "display": "[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>", - "empty-cells": "show|hide", - "filter": "none|<filter-function-list>|<-ms-filter-function-list>", - "flex": "none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]", - "flex-basis": "content|<'width'>", - "flex-direction": "row|row-reverse|column|column-reverse", - "flex-flow": "<'flex-direction'>||<'flex-wrap'>", - "flex-grow": "<number>", - "flex-shrink": "<number>", - "flex-wrap": "nowrap|wrap|wrap-reverse", - "float": "left|right|none|inline-start|inline-end", - "font": "[[<'font-style'>||<font-variant-css21>||<'font-weight'>||<'font-stretch'>]? <'font-size'> [/ <'line-height'>]? <'font-family'>]|caption|icon|menu|message-box|small-caption|status-bar", - "font-family": "[<family-name>|<generic-family>]#", - "font-feature-settings": "normal|<feature-tag-value>#", - "font-kerning": "auto|normal|none", - "font-language-override": "normal|<string>", - "font-optical-sizing": "auto|none", - "font-variation-settings": "normal|[<string> <number>]#", - "font-size": "<absolute-size>|<relative-size>|<length-percentage>", - "font-size-adjust": "none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]", - "font-smooth": "auto|never|always|<absolute-size>|<length>", - "font-stretch": "<font-stretch-absolute>", - "font-style": "normal|italic|oblique <angle>?", - "font-synthesis": "none|[weight||style||small-caps]", - "font-variant": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]", - "font-variant-alternates": "normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]", - "font-variant-caps": "normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps", - "font-variant-east-asian": "normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]", - "font-variant-ligatures": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]", - "font-variant-numeric": "normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]", - "font-variant-position": "normal|sub|super", - "font-weight": "<font-weight-absolute>|bolder|lighter", - "forced-color-adjust": "auto|none", - "gap": "<'row-gap'> <'column-gap'>?", - "grid": "<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>", - "grid-area": "<grid-line> [/ <grid-line>]{0,3}", - "grid-auto-columns": "<track-size>+", - "grid-auto-flow": "[row|column]||dense", - "grid-auto-rows": "<track-size>+", - "grid-column": "<grid-line> [/ <grid-line>]?", - "grid-column-end": "<grid-line>", - "grid-column-gap": "<length-percentage>", - "grid-column-start": "<grid-line>", - "grid-gap": "<'grid-row-gap'> <'grid-column-gap'>?", - "grid-row": "<grid-line> [/ <grid-line>]?", - "grid-row-end": "<grid-line>", - "grid-row-gap": "<length-percentage>", - "grid-row-start": "<grid-line>", - "grid-template": "none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?", - "grid-template-areas": "none|<string>+", - "grid-template-columns": "none|<track-list>|<auto-track-list>|subgrid <line-name-list>?", - "grid-template-rows": "none|<track-list>|<auto-track-list>|subgrid <line-name-list>?", - "hanging-punctuation": "none|[first||[force-end|allow-end]||last]", - "height": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )", - "hyphenate-character": "auto|<string>", - "hyphens": "none|manual|auto", - "image-orientation": "from-image|<angle>|[<angle>? flip]", - "image-rendering": "auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>", - "image-resolution": "[from-image||<resolution>]&&snap?", - "ime-mode": "auto|normal|active|inactive|disabled", - "initial-letter": "normal|[<number> <integer>?]", - "initial-letter-align": "[auto|alphabetic|hanging|ideographic]", - "inline-size": "<'width'>", - "input-security": "auto|none", - "inset": "<'top'>{1,4}", - "inset-block": "<'top'>{1,2}", - "inset-block-end": "<'top'>", - "inset-block-start": "<'top'>", - "inset-inline": "<'top'>{1,2}", - "inset-inline-end": "<'top'>", - "inset-inline-start": "<'top'>", - "isolation": "auto|isolate", - "justify-content": "normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]", - "justify-items": "normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]", - "justify-self": "auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]", - "justify-tracks": "[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#", - "left": "<length>|<percentage>|auto", - "letter-spacing": "normal|<length-percentage>", - "line-break": "auto|loose|normal|strict|anywhere", - "line-clamp": "none|<integer>", - "line-height": "normal|<number>|<length>|<percentage>", - "line-height-step": "<length>", - "list-style": "<'list-style-type'>||<'list-style-position'>||<'list-style-image'>", - "list-style-image": "<image>|none", - "list-style-position": "inside|outside", - "list-style-type": "<counter-style>|<string>|none", - "margin": "[<length>|<percentage>|auto]{1,4}", - "margin-block": "<'margin-left'>{1,2}", - "margin-block-end": "<'margin-left'>", - "margin-block-start": "<'margin-left'>", - "margin-bottom": "<length>|<percentage>|auto", - "margin-inline": "<'margin-left'>{1,2}", - "margin-inline-end": "<'margin-left'>", - "margin-inline-start": "<'margin-left'>", - "margin-left": "<length>|<percentage>|auto", - "margin-right": "<length>|<percentage>|auto", - "margin-top": "<length>|<percentage>|auto", - "margin-trim": "none|in-flow|all", - "mask": "<mask-layer>#", - "mask-border": "<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>", - "mask-border-mode": "luminance|alpha", - "mask-border-outset": "[<length>|<number>]{1,4}", - "mask-border-repeat": "[stretch|repeat|round|space]{1,2}", - "mask-border-slice": "<number-percentage>{1,4} fill?", - "mask-border-source": "none|<image>", - "mask-border-width": "[<length-percentage>|<number>|auto]{1,4}", - "mask-clip": "[<geometry-box>|no-clip]#", - "mask-composite": "<compositing-operator>#", - "mask-image": "<mask-reference>#", - "mask-mode": "<masking-mode>#", - "mask-origin": "<geometry-box>#", - "mask-position": "<position>#", - "mask-repeat": "<repeat-style>#", - "mask-size": "<bg-size>#", - "mask-type": "luminance|alpha", - "masonry-auto-flow": "[pack|next]||[definite-first|ordered]", - "math-style": "normal|compact", - "max-block-size": "<'max-width'>", - "max-height": "none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )", - "max-inline-size": "<'max-width'>", - "max-lines": "none|<integer>", - "max-width": "none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>", - "min-block-size": "<'min-width'>", - "min-height": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )", - "min-inline-size": "<'min-width'>", - "min-width": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>", - "mix-blend-mode": "<blend-mode>|plus-lighter", - "object-fit": "fill|contain|cover|none|scale-down", - "object-position": "<position>", - "offset": "[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?", - "offset-anchor": "auto|<position>", - "offset-distance": "<length-percentage>", - "offset-path": "none|ray( [<angle>&&<size>&&contain?] )|<path()>|<url>|[<basic-shape>||<geometry-box>]", - "offset-position": "auto|<position>", - "offset-rotate": "[auto|reverse]||<angle>", - "opacity": "<alpha-value>", - "order": "<integer>", - "orphans": "<integer>", - "outline": "[<'outline-color'>||<'outline-style'>||<'outline-width'>]", - "outline-color": "<color>|invert", - "outline-offset": "<length>", - "outline-style": "auto|<'border-style'>", - "outline-width": "<line-width>", - "overflow": "[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>", - "overflow-anchor": "auto|none", - "overflow-block": "visible|hidden|clip|scroll|auto", - "overflow-clip-box": "padding-box|content-box", - "overflow-clip-margin": "<visual-box>||<length [0,∞]>", - "overflow-inline": "visible|hidden|clip|scroll|auto", - "overflow-wrap": "normal|break-word|anywhere", - "overflow-x": "visible|hidden|clip|scroll|auto", - "overflow-y": "visible|hidden|clip|scroll|auto", - "overscroll-behavior": "[contain|none|auto]{1,2}", - "overscroll-behavior-block": "contain|none|auto", - "overscroll-behavior-inline": "contain|none|auto", - "overscroll-behavior-x": "contain|none|auto", - "overscroll-behavior-y": "contain|none|auto", - "padding": "[<length>|<percentage>]{1,4}", - "padding-block": "<'padding-left'>{1,2}", - "padding-block-end": "<'padding-left'>", - "padding-block-start": "<'padding-left'>", - "padding-bottom": "<length>|<percentage>", - "padding-inline": "<'padding-left'>{1,2}", - "padding-inline-end": "<'padding-left'>", - "padding-inline-start": "<'padding-left'>", - "padding-left": "<length>|<percentage>", - "padding-right": "<length>|<percentage>", - "padding-top": "<length>|<percentage>", - "page-break-after": "auto|always|avoid|left|right|recto|verso", - "page-break-before": "auto|always|avoid|left|right|recto|verso", - "page-break-inside": "auto|avoid", - "paint-order": "normal|[fill||stroke||markers]", - "perspective": "none|<length>", - "perspective-origin": "<position>", - "place-content": "<'align-content'> <'justify-content'>?", - "place-items": "<'align-items'> <'justify-items'>?", - "place-self": "<'align-self'> <'justify-self'>?", - "pointer-events": "auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit", - "position": "static|relative|absolute|sticky|fixed|-webkit-sticky", - "quotes": "none|auto|[<string> <string>]+", - "resize": "none|both|horizontal|vertical|block|inline", - "right": "<length>|<percentage>|auto", - "rotate": "none|<angle>|[x|y|z|<number>{3}]&&<angle>", - "row-gap": "normal|<length-percentage>", - "ruby-align": "start|center|space-between|space-around", - "ruby-merge": "separate|collapse|auto", - "ruby-position": "[alternate||[over|under]]|inter-character", - "scale": "none|<number>{1,3}", - "scrollbar-color": "auto|<color>{2}", - "scrollbar-gutter": "auto|stable&&both-edges?", - "scrollbar-width": "auto|thin|none", - "scroll-behavior": "auto|smooth", - "scroll-margin": "<length>{1,4}", - "scroll-margin-block": "<length>{1,2}", - "scroll-margin-block-start": "<length>", - "scroll-margin-block-end": "<length>", - "scroll-margin-bottom": "<length>", - "scroll-margin-inline": "<length>{1,2}", - "scroll-margin-inline-start": "<length>", - "scroll-margin-inline-end": "<length>", - "scroll-margin-left": "<length>", - "scroll-margin-right": "<length>", - "scroll-margin-top": "<length>", - "scroll-padding": "[auto|<length-percentage>]{1,4}", - "scroll-padding-block": "[auto|<length-percentage>]{1,2}", - "scroll-padding-block-start": "auto|<length-percentage>", - "scroll-padding-block-end": "auto|<length-percentage>", - "scroll-padding-bottom": "auto|<length-percentage>", - "scroll-padding-inline": "[auto|<length-percentage>]{1,2}", - "scroll-padding-inline-start": "auto|<length-percentage>", - "scroll-padding-inline-end": "auto|<length-percentage>", - "scroll-padding-left": "auto|<length-percentage>", - "scroll-padding-right": "auto|<length-percentage>", - "scroll-padding-top": "auto|<length-percentage>", - "scroll-snap-align": "[none|start|end|center]{1,2}", - "scroll-snap-coordinate": "none|<position>#", - "scroll-snap-destination": "<position>", - "scroll-snap-points-x": "none|repeat( <length-percentage> )", - "scroll-snap-points-y": "none|repeat( <length-percentage> )", - "scroll-snap-stop": "normal|always", - "scroll-snap-type": "none|[x|y|block|inline|both] [mandatory|proximity]?", - "scroll-snap-type-x": "none|mandatory|proximity", - "scroll-snap-type-y": "none|mandatory|proximity", - "shape-image-threshold": "<alpha-value>", - "shape-margin": "<length-percentage>", - "shape-outside": "none|[<shape-box>||<basic-shape>]|<image>", - "tab-size": "<integer>|<length>", - "table-layout": "auto|fixed", - "text-align": "start|end|left|right|center|justify|match-parent", - "text-align-last": "auto|start|end|left|right|center|justify", - "text-combine-upright": "none|all|[digits <integer>?]", - "text-decoration": "<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>", - "text-decoration-color": "<color>", - "text-decoration-line": "none|[underline||overline||line-through||blink]|spelling-error|grammar-error", - "text-decoration-skip": "none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]", - "text-decoration-skip-ink": "auto|all|none", - "text-decoration-style": "solid|double|dotted|dashed|wavy", - "text-decoration-thickness": "auto|from-font|<length>|<percentage>", - "text-emphasis": "<'text-emphasis-style'>||<'text-emphasis-color'>", - "text-emphasis-color": "<color>", - "text-emphasis-position": "[over|under]&&[right|left]", - "text-emphasis-style": "none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>", - "text-indent": "<length-percentage>&&hanging?&&each-line?", - "text-justify": "auto|inter-character|inter-word|none", - "text-orientation": "mixed|upright|sideways", - "text-overflow": "[clip|ellipsis|<string>]{1,2}", - "text-rendering": "auto|optimizeSpeed|optimizeLegibility|geometricPrecision", - "text-shadow": "none|<shadow-t>#", - "text-size-adjust": "none|auto|<percentage>", - "text-transform": "none|capitalize|uppercase|lowercase|full-width|full-size-kana", - "text-underline-offset": "auto|<length>|<percentage>", - "text-underline-position": "auto|from-font|[under||[left|right]]", - "top": "<length>|<percentage>|auto", - "touch-action": "auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation", - "transform": "none|<transform-list>", - "transform-box": "content-box|border-box|fill-box|stroke-box|view-box", - "transform-origin": "[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?", - "transform-style": "flat|preserve-3d", - "transition": "<single-transition>#", - "transition-delay": "<time>#", - "transition-duration": "<time>#", - "transition-property": "none|<single-transition-property>#", - "transition-timing-function": "<easing-function>#", - "translate": "none|<length-percentage> [<length-percentage> <length>?]?", - "unicode-bidi": "normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext", - "user-select": "auto|text|none|contain|all", - "vertical-align": "baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>", - "visibility": "visible|hidden|collapse", - "white-space": "normal|pre|nowrap|pre-wrap|pre-line|break-spaces", - "widows": "<integer>", - "width": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|fill|stretch|intrinsic|-moz-max-content|-webkit-max-content|-moz-fit-content|-webkit-fit-content", - "will-change": "auto|<animateable-feature>#", - "word-break": "normal|break-all|keep-all|break-word", - "word-spacing": "normal|<length>", - "word-wrap": "normal|break-word", - "writing-mode": "horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>", - "z-index": "auto|<integer>", - "zoom": "normal|reset|<number>|<percentage>", - "-moz-background-clip": "padding|border", - "-moz-border-radius-bottomleft": "<'border-bottom-left-radius'>", - "-moz-border-radius-bottomright": "<'border-bottom-right-radius'>", - "-moz-border-radius-topleft": "<'border-top-left-radius'>", - "-moz-border-radius-topright": "<'border-bottom-right-radius'>", - "-moz-control-character-visibility": "visible|hidden", - "-moz-osx-font-smoothing": "auto|grayscale", - "-moz-user-select": "none|text|all|-moz-none", - "-ms-flex-align": "start|end|center|baseline|stretch", - "-ms-flex-item-align": "auto|start|end|center|baseline|stretch", - "-ms-flex-line-pack": "start|end|center|justify|distribute|stretch", - "-ms-flex-negative": "<'flex-shrink'>", - "-ms-flex-pack": "start|end|center|justify|distribute", - "-ms-flex-order": "<integer>", - "-ms-flex-positive": "<'flex-grow'>", - "-ms-flex-preferred-size": "<'flex-basis'>", - "-ms-interpolation-mode": "nearest-neighbor|bicubic", - "-ms-grid-column-align": "start|end|center|stretch", - "-ms-grid-row-align": "start|end|center|stretch", - "-ms-hyphenate-limit-last": "none|always|column|page|spread", - "-webkit-background-clip": "[<box>|border|padding|content|text]#", - "-webkit-column-break-after": "always|auto|avoid", - "-webkit-column-break-before": "always|auto|avoid", - "-webkit-column-break-inside": "always|auto|avoid", - "-webkit-font-smoothing": "auto|none|antialiased|subpixel-antialiased", - "-webkit-mask-box-image": "[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?", - "-webkit-print-color-adjust": "economy|exact", - "-webkit-text-security": "none|circle|disc|square", - "-webkit-user-drag": "none|element|auto", - "-webkit-user-select": "auto|none|text|all", - "alignment-baseline": "auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical", - "baseline-shift": "baseline|sub|super|<svg-length>", - "behavior": "<url>+", - "clip-rule": "nonzero|evenodd", - "cue": "<'cue-before'> <'cue-after'>?", - "cue-after": "<url> <decibel>?|none", - "cue-before": "<url> <decibel>?|none", - "dominant-baseline": "auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge", - "fill": "<paint>", - "fill-opacity": "<number-zero-one>", - "fill-rule": "nonzero|evenodd", - "glyph-orientation-horizontal": "<angle>", - "glyph-orientation-vertical": "<angle>", - "kerning": "auto|<svg-length>", - "marker": "none|<url>", - "marker-end": "none|<url>", - "marker-mid": "none|<url>", - "marker-start": "none|<url>", - "pause": "<'pause-before'> <'pause-after'>?", - "pause-after": "<time>|none|x-weak|weak|medium|strong|x-strong", - "pause-before": "<time>|none|x-weak|weak|medium|strong|x-strong", - "rest": "<'rest-before'> <'rest-after'>?", - "rest-after": "<time>|none|x-weak|weak|medium|strong|x-strong", - "rest-before": "<time>|none|x-weak|weak|medium|strong|x-strong", - "shape-rendering": "auto|optimizeSpeed|crispEdges|geometricPrecision", - "src": "[<url> [format( <string># )]?|local( <family-name> )]#", - "speak": "auto|none|normal", - "speak-as": "normal|spell-out||digits||[literal-punctuation|no-punctuation]", - "stroke": "<paint>", - "stroke-dasharray": "none|[<svg-length>+]#", - "stroke-dashoffset": "<svg-length>", - "stroke-linecap": "butt|round|square", - "stroke-linejoin": "miter|round|bevel", - "stroke-miterlimit": "<number-one-or-greater>", - "stroke-opacity": "<number-zero-one>", - "stroke-width": "<svg-length>", - "text-anchor": "start|middle|end", - "unicode-range": "<urange>#", - "voice-balance": "<number>|left|center|right|leftwards|rightwards", - "voice-duration": "auto|<time>", - "voice-family": "[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve", - "voice-pitch": "<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]", - "voice-range": "<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]", - "voice-rate": "[normal|x-slow|slow|medium|fast|x-fast]||<percentage>", - "voice-stress": "normal|strong|moderate|none|reduced", - "voice-volume": "silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]" - }, - "atrules": { - "charset": { - "prelude": "<string>", - "descriptors": null - }, - "counter-style": { - "prelude": "<counter-style-name>", - "descriptors": { - "additive-symbols": "[<integer>&&<symbol>]#", - "fallback": "<counter-style-name>", - "negative": "<symbol> <symbol>?", - "pad": "<integer>&&<symbol>", - "prefix": "<symbol>", - "range": "[[<integer>|infinite]{2}]#|auto", - "speak-as": "auto|bullets|numbers|words|spell-out|<counter-style-name>", - "suffix": "<symbol>", - "symbols": "<symbol>+", - "system": "cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]" - } - }, - "document": { - "prelude": "[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#", - "descriptors": null - }, - "font-face": { - "prelude": null, - "descriptors": { - "ascent-override": "normal|<percentage>", - "descent-override": "normal|<percentage>", - "font-display": "[auto|block|swap|fallback|optional]", - "font-family": "<family-name>", - "font-feature-settings": "normal|<feature-tag-value>#", - "font-variation-settings": "normal|[<string> <number>]#", - "font-stretch": "<font-stretch-absolute>{1,2}", - "font-style": "normal|italic|oblique <angle>{0,2}", - "font-weight": "<font-weight-absolute>{1,2}", - "font-variant": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]", - "line-gap-override": "normal|<percentage>", - "size-adjust": "<percentage>", - "src": "[<url> [format( <string># )]?|local( <family-name> )]#", - "unicode-range": "<urange>#" - } - }, - "font-feature-values": { - "prelude": "<family-name>#", - "descriptors": null - }, - "import": { - "prelude": "[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?", - "descriptors": null - }, - "keyframes": { - "prelude": "<keyframes-name>", - "descriptors": null - }, - "layer": { - "prelude": "[<layer-name>#|<layer-name>?]", - "descriptors": null - }, - "media": { - "prelude": "<media-query-list>", - "descriptors": null - }, - "namespace": { - "prelude": "<namespace-prefix>? [<string>|<url>]", - "descriptors": null - }, - "page": { - "prelude": "<page-selector-list>", - "descriptors": { - "bleed": "auto|<length>", - "marks": "none|[crop||cross]", - "size": "<length>{1,2}|auto|[<page-size>||[portrait|landscape]]" - } - }, - "property": { - "prelude": "<custom-property-name>", - "descriptors": { - "syntax": "<string>", - "inherits": "true|false", - "initial-value": "<string>" - } - }, - "scroll-timeline": { - "prelude": "<timeline-name>", - "descriptors": null - }, - "supports": { - "prelude": "<supports-condition>", - "descriptors": null - }, - "viewport": { - "prelude": null, - "descriptors": { - "height": "<viewport-length>{1,2}", - "max-height": "<viewport-length>", - "max-width": "<viewport-length>", - "max-zoom": "auto|<number>|<percentage>", - "min-height": "<viewport-length>", - "min-width": "<viewport-length>", - "min-zoom": "auto|<number>|<percentage>", - "orientation": "auto|portrait|landscape", - "user-zoom": "zoom|fixed", - "viewport-fit": "auto|contain|cover", - "width": "<viewport-length>{1,2}", - "zoom": "auto|<number>|<percentage>" - } - } - } -};
\ No newline at end of file diff --git a/node_modules/csso/node_modules/css-tree/dist/version.cjs b/node_modules/csso/node_modules/css-tree/dist/version.cjs deleted file mode 100644 index af8d4635..00000000 --- a/node_modules/csso/node_modules/css-tree/dist/version.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = "2.2.1";
\ No newline at end of file diff --git a/node_modules/csso/node_modules/css-tree/dist/version.js b/node_modules/csso/node_modules/css-tree/dist/version.js deleted file mode 100644 index 9730a8a8..00000000 --- a/node_modules/csso/node_modules/css-tree/dist/version.js +++ /dev/null @@ -1 +0,0 @@ -export const version = "2.2.1";
\ No newline at end of file diff --git a/node_modules/csso/node_modules/css-tree/lib/convertor/create.js b/node_modules/csso/node_modules/css-tree/lib/convertor/create.js deleted file mode 100644 index 56e43338..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/convertor/create.js +++ /dev/null @@ -1,28 +0,0 @@ -import { List } from '../utils/List.js'; - -export function createConvertor(walk) { - return { - fromPlainObject(ast) { - walk(ast, { - enter(node) { - if (node.children && node.children instanceof List === false) { - node.children = new List().fromArray(node.children); - } - } - }); - - return ast; - }, - toPlainObject(ast) { - walk(ast, { - leave(node) { - if (node.children && node.children instanceof List) { - node.children = node.children.toArray(); - } - } - }); - - return ast; - } - }; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/convertor/index.js b/node_modules/csso/node_modules/css-tree/lib/convertor/index.js deleted file mode 100644 index 0f8d4afd..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/convertor/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import { createConvertor } from './create.js'; -import walker from '../walker/index.js'; - -export default createConvertor(walker); diff --git a/node_modules/csso/node_modules/css-tree/lib/data-patch.js b/node_modules/csso/node_modules/css-tree/lib/data-patch.js deleted file mode 100644 index cd49cbec..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/data-patch.js +++ /dev/null @@ -1,6 +0,0 @@ -import { createRequire } from 'module'; - -const require = createRequire(import.meta.url); -const patch = require('../data/patch.json'); - -export default patch; diff --git a/node_modules/csso/node_modules/css-tree/lib/data.js b/node_modules/csso/node_modules/css-tree/lib/data.js deleted file mode 100755 index 2d7eb5aa..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/data.js +++ /dev/null @@ -1,95 +0,0 @@ -import { createRequire } from 'module'; -import patch from './data-patch.js'; - -const require = createRequire(import.meta.url); -const mdnAtrules = require('mdn-data/css/at-rules.json'); -const mdnProperties = require('mdn-data/css/properties.json'); -const mdnSyntaxes = require('mdn-data/css/syntaxes.json'); - -const extendSyntax = /^\s*\|\s*/; - -function preprocessAtrules(dict) { - const result = Object.create(null); - - for (const atruleName in dict) { - const atrule = dict[atruleName]; - let descriptors = null; - - if (atrule.descriptors) { - descriptors = Object.create(null); - - for (const descriptor in atrule.descriptors) { - descriptors[descriptor] = atrule.descriptors[descriptor].syntax; - } - } - - result[atruleName.substr(1)] = { - prelude: atrule.syntax.trim().replace(/\{(.|\s)+\}/, '').match(/^@\S+\s+([^;\{]*)/)[1].trim() || null, - descriptors - }; - } - - return result; -} - -function patchDictionary(dict, patchDict) { - const result = {}; - - // copy all syntaxes for an original dict - for (const key in dict) { - result[key] = dict[key].syntax || dict[key]; - } - - // apply a patch - for (const key in patchDict) { - if (key in dict) { - if (patchDict[key].syntax) { - result[key] = extendSyntax.test(patchDict[key].syntax) - ? result[key] + ' ' + patchDict[key].syntax.trim() - : patchDict[key].syntax; - } else { - delete result[key]; - } - } else { - if (patchDict[key].syntax) { - result[key] = patchDict[key].syntax.replace(extendSyntax, ''); - } - } - } - - return result; -} - -function patchAtrules(dict, patchDict) { - const result = {}; - - // copy all syntaxes for an original dict - for (const key in dict) { - const patchDescriptors = (patchDict[key] && patchDict[key].descriptors) || null; - - result[key] = { - prelude: key in patchDict && 'prelude' in patchDict[key] - ? patchDict[key].prelude - : dict[key].prelude || null, - descriptors: patchDictionary(dict[key].descriptors || {}, patchDescriptors || {}) - }; - } - - // apply a patch - for (const key in patchDict) { - if (!hasOwnProperty.call(dict, key)) { - result[key] = { - prelude: patchDict[key].prelude || null, - descriptors: patchDict[key].descriptors && patchDictionary({}, patchDict[key].descriptors) - }; - } - } - - return result; -} - -export default { - types: patchDictionary(mdnSyntaxes, patch.types), - atrules: patchAtrules(preprocessAtrules(mdnAtrules), patch.atrules), - properties: patchDictionary(mdnProperties, patch.properties) -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/SyntaxError.js b/node_modules/csso/node_modules/css-tree/lib/definition-syntax/SyntaxError.js deleted file mode 100644 index 5f631387..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/SyntaxError.js +++ /dev/null @@ -1,12 +0,0 @@ -import { createCustomError } from '../utils/create-custom-error.js'; - -export function SyntaxError(message, input, offset) { - return Object.assign(createCustomError('SyntaxError', message), { - input, - offset, - rawMessage: message, - message: message + '\n' + - ' ' + input + '\n' + - '--' + new Array((offset || input.length) + 1).join('-') + '^' - }); -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/generate.js b/node_modules/csso/node_modules/css-tree/lib/definition-syntax/generate.js deleted file mode 100644 index 3d6c277f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/generate.js +++ /dev/null @@ -1,131 +0,0 @@ -function noop(value) { - return value; -} - -function generateMultiplier(multiplier) { - const { min, max, comma } = multiplier; - - if (min === 0 && max === 0) { - return comma ? '#?' : '*'; - } - - if (min === 0 && max === 1) { - return '?'; - } - - if (min === 1 && max === 0) { - return comma ? '#' : '+'; - } - - if (min === 1 && max === 1) { - return ''; - } - - return ( - (comma ? '#' : '') + - (min === max - ? '{' + min + '}' - : '{' + min + ',' + (max !== 0 ? max : '') + '}' - ) - ); -} - -function generateTypeOpts(node) { - switch (node.type) { - case 'Range': - return ( - ' [' + - (node.min === null ? '-∞' : node.min) + - ',' + - (node.max === null ? '∞' : node.max) + - ']' - ); - - default: - throw new Error('Unknown node type `' + node.type + '`'); - } -} - -function generateSequence(node, decorate, forceBraces, compact) { - const combinator = node.combinator === ' ' || compact ? node.combinator : ' ' + node.combinator + ' '; - const result = node.terms - .map(term => internalGenerate(term, decorate, forceBraces, compact)) - .join(combinator); - - if (node.explicit || forceBraces) { - return (compact || result[0] === ',' ? '[' : '[ ') + result + (compact ? ']' : ' ]'); - } - - return result; -} - -function internalGenerate(node, decorate, forceBraces, compact) { - let result; - - switch (node.type) { - case 'Group': - result = - generateSequence(node, decorate, forceBraces, compact) + - (node.disallowEmpty ? '!' : ''); - break; - - case 'Multiplier': - // return since node is a composition - return ( - internalGenerate(node.term, decorate, forceBraces, compact) + - decorate(generateMultiplier(node), node) - ); - - case 'Type': - result = '<' + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : '') + '>'; - break; - - case 'Property': - result = '<\'' + node.name + '\'>'; - break; - - case 'Keyword': - result = node.name; - break; - - case 'AtKeyword': - result = '@' + node.name; - break; - - case 'Function': - result = node.name + '('; - break; - - case 'String': - case 'Token': - result = node.value; - break; - - case 'Comma': - result = ','; - break; - - default: - throw new Error('Unknown node type `' + node.type + '`'); - } - - return decorate(result, node); -} - -export function generate(node, options) { - let decorate = noop; - let forceBraces = false; - let compact = false; - - if (typeof options === 'function') { - decorate = options; - } else if (options) { - forceBraces = Boolean(options.forceBraces); - compact = Boolean(options.compact); - if (typeof options.decorate === 'function') { - decorate = options.decorate; - } - } - - return internalGenerate(node, decorate, forceBraces, compact); -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/index.js b/node_modules/csso/node_modules/css-tree/lib/definition-syntax/index.js deleted file mode 100644 index 0c24dbd8..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/index.js +++ /dev/null @@ -1,4 +0,0 @@ -export { SyntaxError } from './SyntaxError.js'; -export { generate } from './generate.js'; -export { parse } from './parse.js'; -export { walk } from './walk.js'; diff --git a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/parse.js b/node_modules/csso/node_modules/css-tree/lib/definition-syntax/parse.js deleted file mode 100644 index a3b4b73e..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/parse.js +++ /dev/null @@ -1,584 +0,0 @@ -import { Tokenizer } from './tokenizer.js'; - -const TAB = 9; -const N = 10; -const F = 12; -const R = 13; -const SPACE = 32; -const EXCLAMATIONMARK = 33; // ! -const NUMBERSIGN = 35; // # -const AMPERSAND = 38; // & -const APOSTROPHE = 39; // ' -const LEFTPARENTHESIS = 40; // ( -const RIGHTPARENTHESIS = 41; // ) -const ASTERISK = 42; // * -const PLUSSIGN = 43; // + -const COMMA = 44; // , -const HYPERMINUS = 45; // - -const LESSTHANSIGN = 60; // < -const GREATERTHANSIGN = 62; // > -const QUESTIONMARK = 63; // ? -const COMMERCIALAT = 64; // @ -const LEFTSQUAREBRACKET = 91; // [ -const RIGHTSQUAREBRACKET = 93; // ] -const LEFTCURLYBRACKET = 123; // { -const VERTICALLINE = 124; // | -const RIGHTCURLYBRACKET = 125; // } -const INFINITY = 8734; // ∞ -const NAME_CHAR = new Uint8Array(128).map((_, idx) => - /[a-zA-Z0-9\-]/.test(String.fromCharCode(idx)) ? 1 : 0 -); -const COMBINATOR_PRECEDENCE = { - ' ': 1, - '&&': 2, - '||': 3, - '|': 4 -}; - -function scanSpaces(tokenizer) { - return tokenizer.substringToPos( - tokenizer.findWsEnd(tokenizer.pos) - ); -} - -function scanWord(tokenizer) { - let end = tokenizer.pos; - - for (; end < tokenizer.str.length; end++) { - const code = tokenizer.str.charCodeAt(end); - if (code >= 128 || NAME_CHAR[code] === 0) { - break; - } - } - - if (tokenizer.pos === end) { - tokenizer.error('Expect a keyword'); - } - - return tokenizer.substringToPos(end); -} - -function scanNumber(tokenizer) { - let end = tokenizer.pos; - - for (; end < tokenizer.str.length; end++) { - const code = tokenizer.str.charCodeAt(end); - if (code < 48 || code > 57) { - break; - } - } - - if (tokenizer.pos === end) { - tokenizer.error('Expect a number'); - } - - return tokenizer.substringToPos(end); -} - -function scanString(tokenizer) { - const end = tokenizer.str.indexOf('\'', tokenizer.pos + 1); - - if (end === -1) { - tokenizer.pos = tokenizer.str.length; - tokenizer.error('Expect an apostrophe'); - } - - return tokenizer.substringToPos(end + 1); -} - -function readMultiplierRange(tokenizer) { - let min = null; - let max = null; - - tokenizer.eat(LEFTCURLYBRACKET); - - min = scanNumber(tokenizer); - - if (tokenizer.charCode() === COMMA) { - tokenizer.pos++; - if (tokenizer.charCode() !== RIGHTCURLYBRACKET) { - max = scanNumber(tokenizer); - } - } else { - max = min; - } - - tokenizer.eat(RIGHTCURLYBRACKET); - - return { - min: Number(min), - max: max ? Number(max) : 0 - }; -} - -function readMultiplier(tokenizer) { - let range = null; - let comma = false; - - switch (tokenizer.charCode()) { - case ASTERISK: - tokenizer.pos++; - - range = { - min: 0, - max: 0 - }; - - break; - - case PLUSSIGN: - tokenizer.pos++; - - range = { - min: 1, - max: 0 - }; - - break; - - case QUESTIONMARK: - tokenizer.pos++; - - range = { - min: 0, - max: 1 - }; - - break; - - case NUMBERSIGN: - tokenizer.pos++; - - comma = true; - - if (tokenizer.charCode() === LEFTCURLYBRACKET) { - range = readMultiplierRange(tokenizer); - } else if (tokenizer.charCode() === QUESTIONMARK) { - // https://www.w3.org/TR/css-values-4/#component-multipliers - // > the # and ? multipliers may be stacked as #? - // In this case just treat "#?" as a single multiplier - // { min: 0, max: 0, comma: true } - tokenizer.pos++; - range = { - min: 0, - max: 0 - }; - } else { - range = { - min: 1, - max: 0 - }; - } - - break; - - case LEFTCURLYBRACKET: - range = readMultiplierRange(tokenizer); - break; - - default: - return null; - } - - return { - type: 'Multiplier', - comma, - min: range.min, - max: range.max, - term: null - }; -} - -function maybeMultiplied(tokenizer, node) { - const multiplier = readMultiplier(tokenizer); - - if (multiplier !== null) { - multiplier.term = node; - - // https://www.w3.org/TR/css-values-4/#component-multipliers - // > The + and # multipliers may be stacked as +#; - // Represent "+#" as nested multipliers: - // { ...<multiplier #>, - // term: { - // ...<multipler +>, - // term: node - // } - // } - if (tokenizer.charCode() === NUMBERSIGN && - tokenizer.charCodeAt(tokenizer.pos - 1) === PLUSSIGN) { - return maybeMultiplied(tokenizer, multiplier); - } - - return multiplier; - } - - return node; -} - -function maybeToken(tokenizer) { - const ch = tokenizer.peek(); - - if (ch === '') { - return null; - } - - return { - type: 'Token', - value: ch - }; -} - -function readProperty(tokenizer) { - let name; - - tokenizer.eat(LESSTHANSIGN); - tokenizer.eat(APOSTROPHE); - - name = scanWord(tokenizer); - - tokenizer.eat(APOSTROPHE); - tokenizer.eat(GREATERTHANSIGN); - - return maybeMultiplied(tokenizer, { - type: 'Property', - name - }); -} - -// https://drafts.csswg.org/css-values-3/#numeric-ranges -// 4.1. Range Restrictions and Range Definition Notation -// -// Range restrictions can be annotated in the numeric type notation using CSS bracketed -// range notation—[min,max]—within the angle brackets, after the identifying keyword, -// indicating a closed range between (and including) min and max. -// For example, <integer [0, 10]> indicates an integer between 0 and 10, inclusive. -function readTypeRange(tokenizer) { - // use null for Infinity to make AST format JSON serializable/deserializable - let min = null; // -Infinity - let max = null; // Infinity - let sign = 1; - - tokenizer.eat(LEFTSQUAREBRACKET); - - if (tokenizer.charCode() === HYPERMINUS) { - tokenizer.peek(); - sign = -1; - } - - if (sign == -1 && tokenizer.charCode() === INFINITY) { - tokenizer.peek(); - } else { - min = sign * Number(scanNumber(tokenizer)); - - if (NAME_CHAR[tokenizer.charCode()] !== 0) { - min += scanWord(tokenizer); - } - } - - scanSpaces(tokenizer); - tokenizer.eat(COMMA); - scanSpaces(tokenizer); - - if (tokenizer.charCode() === INFINITY) { - tokenizer.peek(); - } else { - sign = 1; - - if (tokenizer.charCode() === HYPERMINUS) { - tokenizer.peek(); - sign = -1; - } - - max = sign * Number(scanNumber(tokenizer)); - - if (NAME_CHAR[tokenizer.charCode()] !== 0) { - max += scanWord(tokenizer); - } - } - - tokenizer.eat(RIGHTSQUAREBRACKET); - - return { - type: 'Range', - min, - max - }; -} - -function readType(tokenizer) { - let name; - let opts = null; - - tokenizer.eat(LESSTHANSIGN); - name = scanWord(tokenizer); - - if (tokenizer.charCode() === LEFTPARENTHESIS && - tokenizer.nextCharCode() === RIGHTPARENTHESIS) { - tokenizer.pos += 2; - name += '()'; - } - - if (tokenizer.charCodeAt(tokenizer.findWsEnd(tokenizer.pos)) === LEFTSQUAREBRACKET) { - scanSpaces(tokenizer); - opts = readTypeRange(tokenizer); - } - - tokenizer.eat(GREATERTHANSIGN); - - return maybeMultiplied(tokenizer, { - type: 'Type', - name, - opts - }); -} - -function readKeywordOrFunction(tokenizer) { - const name = scanWord(tokenizer); - - if (tokenizer.charCode() === LEFTPARENTHESIS) { - tokenizer.pos++; - - return { - type: 'Function', - name - }; - } - - return maybeMultiplied(tokenizer, { - type: 'Keyword', - name - }); -} - -function regroupTerms(terms, combinators) { - function createGroup(terms, combinator) { - return { - type: 'Group', - terms, - combinator, - disallowEmpty: false, - explicit: false - }; - } - - let combinator; - - combinators = Object.keys(combinators) - .sort((a, b) => COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]); - - while (combinators.length > 0) { - combinator = combinators.shift(); - - let i = 0; - let subgroupStart = 0; - - for (; i < terms.length; i++) { - const term = terms[i]; - - if (term.type === 'Combinator') { - if (term.value === combinator) { - if (subgroupStart === -1) { - subgroupStart = i - 1; - } - terms.splice(i, 1); - i--; - } else { - if (subgroupStart !== -1 && i - subgroupStart > 1) { - terms.splice( - subgroupStart, - i - subgroupStart, - createGroup(terms.slice(subgroupStart, i), combinator) - ); - i = subgroupStart + 1; - } - subgroupStart = -1; - } - } - } - - if (subgroupStart !== -1 && combinators.length) { - terms.splice( - subgroupStart, - i - subgroupStart, - createGroup(terms.slice(subgroupStart, i), combinator) - ); - } - } - - return combinator; -} - -function readImplicitGroup(tokenizer) { - const terms = []; - const combinators = {}; - let token; - let prevToken = null; - let prevTokenPos = tokenizer.pos; - - while (token = peek(tokenizer)) { - if (token.type !== 'Spaces') { - if (token.type === 'Combinator') { - // check for combinator in group beginning and double combinator sequence - if (prevToken === null || prevToken.type === 'Combinator') { - tokenizer.pos = prevTokenPos; - tokenizer.error('Unexpected combinator'); - } - - combinators[token.value] = true; - } else if (prevToken !== null && prevToken.type !== 'Combinator') { - combinators[' '] = true; // a b - terms.push({ - type: 'Combinator', - value: ' ' - }); - } - - terms.push(token); - prevToken = token; - prevTokenPos = tokenizer.pos; - } - } - - // check for combinator in group ending - if (prevToken !== null && prevToken.type === 'Combinator') { - tokenizer.pos -= prevTokenPos; - tokenizer.error('Unexpected combinator'); - } - - return { - type: 'Group', - terms, - combinator: regroupTerms(terms, combinators) || ' ', - disallowEmpty: false, - explicit: false - }; -} - -function readGroup(tokenizer) { - let result; - - tokenizer.eat(LEFTSQUAREBRACKET); - result = readImplicitGroup(tokenizer); - tokenizer.eat(RIGHTSQUAREBRACKET); - - result.explicit = true; - - if (tokenizer.charCode() === EXCLAMATIONMARK) { - tokenizer.pos++; - result.disallowEmpty = true; - } - - return result; -} - -function peek(tokenizer) { - let code = tokenizer.charCode(); - - if (code < 128 && NAME_CHAR[code] === 1) { - return readKeywordOrFunction(tokenizer); - } - - switch (code) { - case RIGHTSQUAREBRACKET: - // don't eat, stop scan a group - break; - - case LEFTSQUAREBRACKET: - return maybeMultiplied(tokenizer, readGroup(tokenizer)); - - case LESSTHANSIGN: - return tokenizer.nextCharCode() === APOSTROPHE - ? readProperty(tokenizer) - : readType(tokenizer); - - case VERTICALLINE: - return { - type: 'Combinator', - value: tokenizer.substringToPos( - tokenizer.pos + (tokenizer.nextCharCode() === VERTICALLINE ? 2 : 1) - ) - }; - - case AMPERSAND: - tokenizer.pos++; - tokenizer.eat(AMPERSAND); - - return { - type: 'Combinator', - value: '&&' - }; - - case COMMA: - tokenizer.pos++; - return { - type: 'Comma' - }; - - case APOSTROPHE: - return maybeMultiplied(tokenizer, { - type: 'String', - value: scanString(tokenizer) - }); - - case SPACE: - case TAB: - case N: - case R: - case F: - return { - type: 'Spaces', - value: scanSpaces(tokenizer) - }; - - case COMMERCIALAT: - code = tokenizer.nextCharCode(); - - if (code < 128 && NAME_CHAR[code] === 1) { - tokenizer.pos++; - return { - type: 'AtKeyword', - name: scanWord(tokenizer) - }; - } - - return maybeToken(tokenizer); - - case ASTERISK: - case PLUSSIGN: - case QUESTIONMARK: - case NUMBERSIGN: - case EXCLAMATIONMARK: - // prohibited tokens (used as a multiplier start) - break; - - case LEFTCURLYBRACKET: - // LEFTCURLYBRACKET is allowed since mdn/data uses it w/o quoting - // check next char isn't a number, because it's likely a disjoined multiplier - code = tokenizer.nextCharCode(); - - if (code < 48 || code > 57) { - return maybeToken(tokenizer); - } - - break; - - default: - return maybeToken(tokenizer); - } -} - -export function parse(source) { - const tokenizer = new Tokenizer(source); - const result = readImplicitGroup(tokenizer); - - if (tokenizer.pos !== source.length) { - tokenizer.error('Unexpected input'); - } - - // reduce redundant groups with single group term - if (result.terms.length === 1 && result.terms[0].type === 'Group') { - return result.terms[0]; - } - - return result; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/tokenizer.js b/node_modules/csso/node_modules/css-tree/lib/definition-syntax/tokenizer.js deleted file mode 100644 index 8c392627..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/tokenizer.js +++ /dev/null @@ -1,52 +0,0 @@ -import { SyntaxError } from './SyntaxError.js'; - -const TAB = 9; -const N = 10; -const F = 12; -const R = 13; -const SPACE = 32; - -export class Tokenizer { - constructor(str) { - this.str = str; - this.pos = 0; - } - charCodeAt(pos) { - return pos < this.str.length ? this.str.charCodeAt(pos) : 0; - } - charCode() { - return this.charCodeAt(this.pos); - } - nextCharCode() { - return this.charCodeAt(this.pos + 1); - } - nextNonWsCode(pos) { - return this.charCodeAt(this.findWsEnd(pos)); - } - findWsEnd(pos) { - for (; pos < this.str.length; pos++) { - const code = this.str.charCodeAt(pos); - if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) { - break; - } - } - - return pos; - } - substringToPos(end) { - return this.str.substring(this.pos, this.pos = end); - } - eat(code) { - if (this.charCode() !== code) { - this.error('Expect `' + String.fromCharCode(code) + '`'); - } - - this.pos++; - } - peek() { - return this.pos < this.str.length ? this.str.charAt(this.pos++) : ''; - } - error(message) { - throw new SyntaxError(message, this.str, this.pos); - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/walk.js b/node_modules/csso/node_modules/css-tree/lib/definition-syntax/walk.js deleted file mode 100644 index f54e9cae..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/definition-syntax/walk.js +++ /dev/null @@ -1,52 +0,0 @@ -const noop = function() {}; - -function ensureFunction(value) { - return typeof value === 'function' ? value : noop; -} - -export function walk(node, options, context) { - function walk(node) { - enter.call(context, node); - - switch (node.type) { - case 'Group': - node.terms.forEach(walk); - break; - - case 'Multiplier': - walk(node.term); - break; - - case 'Type': - case 'Property': - case 'Keyword': - case 'AtKeyword': - case 'Function': - case 'String': - case 'Token': - case 'Comma': - break; - - default: - throw new Error('Unknown type: ' + node.type); - } - - leave.call(context, node); - } - - let enter = noop; - let leave = noop; - - if (typeof options === 'function') { - enter = options; - } else if (options) { - enter = ensureFunction(options.enter); - leave = ensureFunction(options.leave); - } - - if (enter === noop && leave === noop) { - throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\'t a function'); - } - - walk(node, context); -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/generator/create.js b/node_modules/csso/node_modules/css-tree/lib/generator/create.js deleted file mode 100644 index 9d41657f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/generator/create.js +++ /dev/null @@ -1,98 +0,0 @@ -import { tokenize, Delim, WhiteSpace } from '../tokenizer/index.js'; -import { generateSourceMap } from './sourceMap.js'; -import * as tokenBefore from './token-before.js'; - -const REVERSESOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\) - -function processChildren(node, delimeter) { - if (typeof delimeter === 'function') { - let prev = null; - - node.children.forEach(node => { - if (prev !== null) { - delimeter.call(this, prev); - } - - this.node(node); - prev = node; - }); - - return; - } - - node.children.forEach(this.node, this); -} - -function processChunk(chunk) { - tokenize(chunk, (type, start, end) => { - this.token(type, chunk.slice(start, end)); - }); -} - -export function createGenerator(config) { - const types = new Map(); - - for (let name in config.node) { - const item = config.node[name]; - const fn = item.generate || item; - - if (typeof fn === 'function') { - types.set(name, item.generate || item); - } - } - - return function(node, options) { - let buffer = ''; - let prevCode = 0; - let handlers = { - node(node) { - if (types.has(node.type)) { - types.get(node.type).call(publicApi, node); - } else { - throw new Error('Unknown node type: ' + node.type); - } - }, - tokenBefore: tokenBefore.safe, - token(type, value) { - prevCode = this.tokenBefore(prevCode, type, value); - - this.emit(value, type, false); - - if (type === Delim && value.charCodeAt(0) === REVERSESOLIDUS) { - this.emit('\n', WhiteSpace, true); - } - }, - emit(value) { - buffer += value; - }, - result() { - return buffer; - } - }; - - if (options) { - if (typeof options.decorator === 'function') { - handlers = options.decorator(handlers); - } - - if (options.sourceMap) { - handlers = generateSourceMap(handlers); - } - - if (options.mode in tokenBefore) { - handlers.tokenBefore = tokenBefore[options.mode]; - } - } - - const publicApi = { - node: (node) => handlers.node(node), - children: processChildren, - token: (type, value) => handlers.token(type, value), - tokenize: processChunk - }; - - handlers.node(node); - - return handlers.result(); - }; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/generator/index.js b/node_modules/csso/node_modules/css-tree/lib/generator/index.js deleted file mode 100644 index dc051167..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/generator/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import { createGenerator } from './create.js'; -import config from '../syntax/config/generator.js'; - -export default createGenerator(config); diff --git a/node_modules/csso/node_modules/css-tree/lib/generator/sourceMap.js b/node_modules/csso/node_modules/css-tree/lib/generator/sourceMap.js deleted file mode 100644 index 0c5ff27e..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/generator/sourceMap.js +++ /dev/null @@ -1,92 +0,0 @@ -import { SourceMapGenerator } from 'source-map-js/lib/source-map-generator.js'; - -const trackNodes = new Set(['Atrule', 'Selector', 'Declaration']); - -export function generateSourceMap(handlers) { - const map = new SourceMapGenerator(); - const generated = { - line: 1, - column: 0 - }; - const original = { - line: 0, // should be zero to add first mapping - column: 0 - }; - const activatedGenerated = { - line: 1, - column: 0 - }; - const activatedMapping = { - generated: activatedGenerated - }; - let line = 1; - let column = 0; - let sourceMappingActive = false; - - const origHandlersNode = handlers.node; - handlers.node = function(node) { - if (node.loc && node.loc.start && trackNodes.has(node.type)) { - const nodeLine = node.loc.start.line; - const nodeColumn = node.loc.start.column - 1; - - if (original.line !== nodeLine || - original.column !== nodeColumn) { - original.line = nodeLine; - original.column = nodeColumn; - - generated.line = line; - generated.column = column; - - if (sourceMappingActive) { - sourceMappingActive = false; - if (generated.line !== activatedGenerated.line || - generated.column !== activatedGenerated.column) { - map.addMapping(activatedMapping); - } - } - - sourceMappingActive = true; - map.addMapping({ - source: node.loc.source, - original, - generated - }); - } - } - - origHandlersNode.call(this, node); - - if (sourceMappingActive && trackNodes.has(node.type)) { - activatedGenerated.line = line; - activatedGenerated.column = column; - } - }; - - const origHandlersEmit = handlers.emit; - handlers.emit = function(value, type, auto) { - for (let i = 0; i < value.length; i++) { - if (value.charCodeAt(i) === 10) { // \n - line++; - column = 0; - } else { - column++; - } - } - - origHandlersEmit(value, type, auto); - }; - - const origHandlersResult = handlers.result; - handlers.result = function() { - if (sourceMappingActive) { - map.addMapping(activatedMapping); - } - - return { - css: origHandlersResult(), - map - }; - }; - - return handlers; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/generator/token-before.js b/node_modules/csso/node_modules/css-tree/lib/generator/token-before.js deleted file mode 100644 index da3fed00..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/generator/token-before.js +++ /dev/null @@ -1,182 +0,0 @@ -import { - WhiteSpace, - Delim, - Ident, - Function as FunctionToken, - Url, - BadUrl, - AtKeyword, - Hash, - Percentage, - Dimension, - Number as NumberToken, - String as StringToken, - Colon, - LeftParenthesis, - RightParenthesis, - CDC -} from '../tokenizer/index.js'; - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) - -const code = (type, value) => { - if (type === Delim) { - type = value; - } - - if (typeof type === 'string') { - const charCode = type.charCodeAt(0); - return charCode > 0x7F ? 0x8000 : charCode << 8; - } - - return type; -}; - -// https://www.w3.org/TR/css-syntax-3/#serialization -// The only requirement for serialization is that it must "round-trip" with parsing, -// that is, parsing the stylesheet must produce the same data structures as parsing, -// serializing, and parsing again, except for consecutive <whitespace-token>s, -// which may be collapsed into a single token. - -const specPairs = [ - [Ident, Ident], - [Ident, FunctionToken], - [Ident, Url], - [Ident, BadUrl], - [Ident, '-'], - [Ident, NumberToken], - [Ident, Percentage], - [Ident, Dimension], - [Ident, CDC], - [Ident, LeftParenthesis], - - [AtKeyword, Ident], - [AtKeyword, FunctionToken], - [AtKeyword, Url], - [AtKeyword, BadUrl], - [AtKeyword, '-'], - [AtKeyword, NumberToken], - [AtKeyword, Percentage], - [AtKeyword, Dimension], - [AtKeyword, CDC], - - [Hash, Ident], - [Hash, FunctionToken], - [Hash, Url], - [Hash, BadUrl], - [Hash, '-'], - [Hash, NumberToken], - [Hash, Percentage], - [Hash, Dimension], - [Hash, CDC], - - [Dimension, Ident], - [Dimension, FunctionToken], - [Dimension, Url], - [Dimension, BadUrl], - [Dimension, '-'], - [Dimension, NumberToken], - [Dimension, Percentage], - [Dimension, Dimension], - [Dimension, CDC], - - ['#', Ident], - ['#', FunctionToken], - ['#', Url], - ['#', BadUrl], - ['#', '-'], - ['#', NumberToken], - ['#', Percentage], - ['#', Dimension], - ['#', CDC], // https://github.com/w3c/csswg-drafts/pull/6874 - - ['-', Ident], - ['-', FunctionToken], - ['-', Url], - ['-', BadUrl], - ['-', '-'], - ['-', NumberToken], - ['-', Percentage], - ['-', Dimension], - ['-', CDC], // https://github.com/w3c/csswg-drafts/pull/6874 - - [NumberToken, Ident], - [NumberToken, FunctionToken], - [NumberToken, Url], - [NumberToken, BadUrl], - [NumberToken, NumberToken], - [NumberToken, Percentage], - [NumberToken, Dimension], - [NumberToken, '%'], - [NumberToken, CDC], // https://github.com/w3c/csswg-drafts/pull/6874 - - ['@', Ident], - ['@', FunctionToken], - ['@', Url], - ['@', BadUrl], - ['@', '-'], - ['@', CDC], // https://github.com/w3c/csswg-drafts/pull/6874 - - ['.', NumberToken], - ['.', Percentage], - ['.', Dimension], - - ['+', NumberToken], - ['+', Percentage], - ['+', Dimension], - - ['/', '*'] -]; -// validate with scripts/generate-safe -const safePairs = specPairs.concat([ - [Ident, Hash], - - [Dimension, Hash], - - [Hash, Hash], - - [AtKeyword, LeftParenthesis], - [AtKeyword, StringToken], - [AtKeyword, Colon], - - [Percentage, Percentage], - [Percentage, Dimension], - [Percentage, FunctionToken], - [Percentage, '-'], - - [RightParenthesis, Ident], - [RightParenthesis, FunctionToken], - [RightParenthesis, Percentage], - [RightParenthesis, Dimension], - [RightParenthesis, Hash], - [RightParenthesis, '-'] -]); - -function createMap(pairs) { - const isWhiteSpaceRequired = new Set( - pairs.map(([prev, next]) => (code(prev) << 16 | code(next))) - ); - - return function(prevCode, type, value) { - const nextCode = code(type, value); - const nextCharCode = value.charCodeAt(0); - const emitWs = - (nextCharCode === HYPHENMINUS && - type !== Ident && - type !== FunctionToken && - type !== CDC) || - (nextCharCode === PLUSSIGN) - ? isWhiteSpaceRequired.has(prevCode << 16 | nextCharCode << 8) - : isWhiteSpaceRequired.has(prevCode << 16 | nextCode); - - if (emitWs) { - this.emit(' ', WhiteSpace, true); - } - - return nextCode; - }; -} - -export const spec = createMap(specPairs); -export const safe = createMap(safePairs); diff --git a/node_modules/csso/node_modules/css-tree/lib/index.js b/node_modules/csso/node_modules/css-tree/lib/index.js deleted file mode 100644 index 019f8258..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/index.js +++ /dev/null @@ -1,30 +0,0 @@ -import syntax from './syntax/index.js'; - -export * from './version.js'; -export { default as createSyntax } from './syntax/create.js'; -export { List } from './utils/List.js'; -export { Lexer } from './lexer/Lexer.js'; -export { tokenTypes, tokenNames, TokenStream } from './tokenizer/index.js'; -export * as definitionSyntax from './definition-syntax/index.js'; -export { clone } from './utils/clone.js'; -export * from './utils/names.js'; -export * as ident from './utils/ident.js'; -export * as string from './utils/string.js'; -export * as url from './utils/url.js'; -export const { - tokenize, - parse, - generate, - lexer, - createLexer, - - walk, - find, - findLast, - findAll, - - toPlainObject, - fromPlainObject, - - fork -} = syntax; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/Lexer.js b/node_modules/csso/node_modules/css-tree/lib/lexer/Lexer.js deleted file mode 100644 index f1d5a565..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/Lexer.js +++ /dev/null @@ -1,453 +0,0 @@ -import { SyntaxReferenceError, SyntaxMatchError } from './error.js'; -import * as names from '../utils/names.js'; -import { cssWideKeywords } from './generic-const.js'; -import generic from './generic.js'; -import { parse, generate, walk } from '../definition-syntax/index.js'; -import prepareTokens from './prepare-tokens.js'; -import { buildMatchGraph } from './match-graph.js'; -import { matchAsTree } from './match.js'; -import * as trace from './trace.js'; -import { matchFragments } from './search.js'; -import { getStructureFromConfig } from './structure.js'; - -const cssWideKeywordsSyntax = buildMatchGraph(cssWideKeywords.join(' | ')); - -function dumpMapSyntax(map, compact, syntaxAsAst) { - const result = {}; - - for (const name in map) { - if (map[name].syntax) { - result[name] = syntaxAsAst - ? map[name].syntax - : generate(map[name].syntax, { compact }); - } - } - - return result; -} - -function dumpAtruleMapSyntax(map, compact, syntaxAsAst) { - const result = {}; - - for (const [name, atrule] of Object.entries(map)) { - result[name] = { - prelude: atrule.prelude && ( - syntaxAsAst - ? atrule.prelude.syntax - : generate(atrule.prelude.syntax, { compact }) - ), - descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst) - }; - } - - return result; -} - -function valueHasVar(tokens) { - for (let i = 0; i < tokens.length; i++) { - if (tokens[i].value.toLowerCase() === 'var(') { - return true; - } - } - - return false; -} - -function buildMatchResult(matched, error, iterations) { - return { - matched, - iterations, - error, - ...trace - }; -} - -function matchSyntax(lexer, syntax, value, useCssWideKeywords) { - const tokens = prepareTokens(value, lexer.syntax); - let result; - - if (valueHasVar(tokens)) { - return buildMatchResult(null, new Error('Matching for a tree with var() is not supported')); - } - - if (useCssWideKeywords) { - result = matchAsTree(tokens, lexer.cssWideKeywordsSyntax, lexer); - } - - if (!useCssWideKeywords || !result.match) { - result = matchAsTree(tokens, syntax.match, lexer); - if (!result.match) { - return buildMatchResult( - null, - new SyntaxMatchError(result.reason, syntax.syntax, value, result), - result.iterations - ); - } - } - - return buildMatchResult(result.match, null, result.iterations); -} - -export class Lexer { - constructor(config, syntax, structure) { - this.cssWideKeywordsSyntax = cssWideKeywordsSyntax; - this.syntax = syntax; - this.generic = false; - this.atrules = Object.create(null); - this.properties = Object.create(null); - this.types = Object.create(null); - this.structure = structure || getStructureFromConfig(config); - - if (config) { - if (config.types) { - for (const name in config.types) { - this.addType_(name, config.types[name]); - } - } - - if (config.generic) { - this.generic = true; - for (const name in generic) { - this.addType_(name, generic[name]); - } - } - - if (config.atrules) { - for (const name in config.atrules) { - this.addAtrule_(name, config.atrules[name]); - } - } - - if (config.properties) { - for (const name in config.properties) { - this.addProperty_(name, config.properties[name]); - } - } - } - } - - checkStructure(ast) { - function collectWarning(node, message) { - warns.push({ node, message }); - } - - const structure = this.structure; - const warns = []; - - this.syntax.walk(ast, function(node) { - if (structure.hasOwnProperty(node.type)) { - structure[node.type].check(node, collectWarning); - } else { - collectWarning(node, 'Unknown node type `' + node.type + '`'); - } - }); - - return warns.length ? warns : false; - } - - createDescriptor(syntax, type, name, parent = null) { - const ref = { - type, - name - }; - const descriptor = { - type, - name, - parent, - serializable: typeof syntax === 'string' || (syntax && typeof syntax.type === 'string'), - syntax: null, - match: null - }; - - if (typeof syntax === 'function') { - descriptor.match = buildMatchGraph(syntax, ref); - } else { - if (typeof syntax === 'string') { - // lazy parsing on first access - Object.defineProperty(descriptor, 'syntax', { - get() { - Object.defineProperty(descriptor, 'syntax', { - value: parse(syntax) - }); - - return descriptor.syntax; - } - }); - } else { - descriptor.syntax = syntax; - } - - // lazy graph build on first access - Object.defineProperty(descriptor, 'match', { - get() { - Object.defineProperty(descriptor, 'match', { - value: buildMatchGraph(descriptor.syntax, ref) - }); - - return descriptor.match; - } - }); - } - - return descriptor; - } - addAtrule_(name, syntax) { - if (!syntax) { - return; - } - - this.atrules[name] = { - type: 'Atrule', - name: name, - prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, 'AtrulePrelude', name) : null, - descriptors: syntax.descriptors - ? Object.keys(syntax.descriptors).reduce( - (map, descName) => { - map[descName] = this.createDescriptor(syntax.descriptors[descName], 'AtruleDescriptor', descName, name); - return map; - }, - Object.create(null) - ) - : null - }; - } - addProperty_(name, syntax) { - if (!syntax) { - return; - } - - this.properties[name] = this.createDescriptor(syntax, 'Property', name); - } - addType_(name, syntax) { - if (!syntax) { - return; - } - - this.types[name] = this.createDescriptor(syntax, 'Type', name); - } - - checkAtruleName(atruleName) { - if (!this.getAtrule(atruleName)) { - return new SyntaxReferenceError('Unknown at-rule', '@' + atruleName); - } - } - checkAtrulePrelude(atruleName, prelude) { - const error = this.checkAtruleName(atruleName); - - if (error) { - return error; - } - - const atrule = this.getAtrule(atruleName); - - if (!atrule.prelude && prelude) { - return new SyntaxError('At-rule `@' + atruleName + '` should not contain a prelude'); - } - - if (atrule.prelude && !prelude) { - if (!matchSyntax(this, atrule.prelude, '', false).matched) { - return new SyntaxError('At-rule `@' + atruleName + '` should contain a prelude'); - } - } - } - checkAtruleDescriptorName(atruleName, descriptorName) { - const error = this.checkAtruleName(atruleName); - - if (error) { - return error; - } - - const atrule = this.getAtrule(atruleName); - const descriptor = names.keyword(descriptorName); - - if (!atrule.descriptors) { - return new SyntaxError('At-rule `@' + atruleName + '` has no known descriptors'); - } - - if (!atrule.descriptors[descriptor.name] && - !atrule.descriptors[descriptor.basename]) { - return new SyntaxReferenceError('Unknown at-rule descriptor', descriptorName); - } - } - checkPropertyName(propertyName) { - if (!this.getProperty(propertyName)) { - return new SyntaxReferenceError('Unknown property', propertyName); - } - } - - matchAtrulePrelude(atruleName, prelude) { - const error = this.checkAtrulePrelude(atruleName, prelude); - - if (error) { - return buildMatchResult(null, error); - } - - const atrule = this.getAtrule(atruleName); - - if (!atrule.prelude) { - return buildMatchResult(null, null); - } - - return matchSyntax(this, atrule.prelude, prelude || '', false); - } - matchAtruleDescriptor(atruleName, descriptorName, value) { - const error = this.checkAtruleDescriptorName(atruleName, descriptorName); - - if (error) { - return buildMatchResult(null, error); - } - - const atrule = this.getAtrule(atruleName); - const descriptor = names.keyword(descriptorName); - - return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false); - } - matchDeclaration(node) { - if (node.type !== 'Declaration') { - return buildMatchResult(null, new Error('Not a Declaration node')); - } - - return this.matchProperty(node.property, node.value); - } - matchProperty(propertyName, value) { - // don't match syntax for a custom property at the moment - if (names.property(propertyName).custom) { - return buildMatchResult(null, new Error('Lexer matching doesn\'t applicable for custom properties')); - } - - const error = this.checkPropertyName(propertyName); - - if (error) { - return buildMatchResult(null, error); - } - - return matchSyntax(this, this.getProperty(propertyName), value, true); - } - matchType(typeName, value) { - const typeSyntax = this.getType(typeName); - - if (!typeSyntax) { - return buildMatchResult(null, new SyntaxReferenceError('Unknown type', typeName)); - } - - return matchSyntax(this, typeSyntax, value, false); - } - match(syntax, value) { - if (typeof syntax !== 'string' && (!syntax || !syntax.type)) { - return buildMatchResult(null, new SyntaxReferenceError('Bad syntax')); - } - - if (typeof syntax === 'string' || !syntax.match) { - syntax = this.createDescriptor(syntax, 'Type', 'anonymous'); - } - - return matchSyntax(this, syntax, value, false); - } - - findValueFragments(propertyName, value, type, name) { - return matchFragments(this, value, this.matchProperty(propertyName, value), type, name); - } - findDeclarationValueFragments(declaration, type, name) { - return matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name); - } - findAllFragments(ast, type, name) { - const result = []; - - this.syntax.walk(ast, { - visit: 'Declaration', - enter: (declaration) => { - result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name)); - } - }); - - return result; - } - - getAtrule(atruleName, fallbackBasename = true) { - const atrule = names.keyword(atruleName); - const atruleEntry = atrule.vendor && fallbackBasename - ? this.atrules[atrule.name] || this.atrules[atrule.basename] - : this.atrules[atrule.name]; - - return atruleEntry || null; - } - getAtrulePrelude(atruleName, fallbackBasename = true) { - const atrule = this.getAtrule(atruleName, fallbackBasename); - - return atrule && atrule.prelude || null; - } - getAtruleDescriptor(atruleName, name) { - return this.atrules.hasOwnProperty(atruleName) && this.atrules.declarators - ? this.atrules[atruleName].declarators[name] || null - : null; - } - getProperty(propertyName, fallbackBasename = true) { - const property = names.property(propertyName); - const propertyEntry = property.vendor && fallbackBasename - ? this.properties[property.name] || this.properties[property.basename] - : this.properties[property.name]; - - return propertyEntry || null; - } - getType(name) { - return hasOwnProperty.call(this.types, name) ? this.types[name] : null; - } - - validate() { - function validate(syntax, name, broken, descriptor) { - if (broken.has(name)) { - return broken.get(name); - } - - broken.set(name, false); - if (descriptor.syntax !== null) { - walk(descriptor.syntax, function(node) { - if (node.type !== 'Type' && node.type !== 'Property') { - return; - } - - const map = node.type === 'Type' ? syntax.types : syntax.properties; - const brokenMap = node.type === 'Type' ? brokenTypes : brokenProperties; - - if (!hasOwnProperty.call(map, node.name) || validate(syntax, node.name, brokenMap, map[node.name])) { - broken.set(name, true); - } - }, this); - } - } - - let brokenTypes = new Map(); - let brokenProperties = new Map(); - - for (const key in this.types) { - validate(this, key, brokenTypes, this.types[key]); - } - - for (const key in this.properties) { - validate(this, key, brokenProperties, this.properties[key]); - } - - brokenTypes = [...brokenTypes.keys()].filter(name => brokenTypes.get(name)); - brokenProperties = [...brokenProperties.keys()].filter(name => brokenProperties.get(name)); - - if (brokenTypes.length || brokenProperties.length) { - return { - types: brokenTypes, - properties: brokenProperties - }; - } - - return null; - } - dump(syntaxAsAst, pretty) { - return { - generic: this.generic, - types: dumpMapSyntax(this.types, !pretty, syntaxAsAst), - properties: dumpMapSyntax(this.properties, !pretty, syntaxAsAst), - atrules: dumpAtruleMapSyntax(this.atrules, !pretty, syntaxAsAst) - }; - } - toString() { - return JSON.stringify(this.dump()); - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/error.js b/node_modules/csso/node_modules/css-tree/lib/lexer/error.js deleted file mode 100644 index 89a5400b..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/error.js +++ /dev/null @@ -1,123 +0,0 @@ -import { createCustomError } from '../utils/create-custom-error.js'; -import { generate } from '../definition-syntax/generate.js'; - -const defaultLoc = { offset: 0, line: 1, column: 1 }; - -function locateMismatch(matchResult, node) { - const tokens = matchResult.tokens; - const longestMatch = matchResult.longestMatch; - const mismatchNode = longestMatch < tokens.length ? tokens[longestMatch].node || null : null; - const badNode = mismatchNode !== node ? mismatchNode : null; - let mismatchOffset = 0; - let mismatchLength = 0; - let entries = 0; - let css = ''; - let start; - let end; - - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i].value; - - if (i === longestMatch) { - mismatchLength = token.length; - mismatchOffset = css.length; - } - - if (badNode !== null && tokens[i].node === badNode) { - if (i <= longestMatch) { - entries++; - } else { - entries = 0; - } - } - - css += token; - } - - if (longestMatch === tokens.length || entries > 1) { // last - start = fromLoc(badNode || node, 'end') || buildLoc(defaultLoc, css); - end = buildLoc(start); - } else { - start = fromLoc(badNode, 'start') || - buildLoc(fromLoc(node, 'start') || defaultLoc, css.slice(0, mismatchOffset)); - end = fromLoc(badNode, 'end') || - buildLoc(start, css.substr(mismatchOffset, mismatchLength)); - } - - return { - css, - mismatchOffset, - mismatchLength, - start, - end - }; -} - -function fromLoc(node, point) { - const value = node && node.loc && node.loc[point]; - - if (value) { - return 'line' in value ? buildLoc(value) : value; - } - - return null; -} - -function buildLoc({ offset, line, column }, extra) { - const loc = { - offset, - line, - column - }; - - if (extra) { - const lines = extra.split(/\n|\r\n?|\f/); - - loc.offset += extra.length; - loc.line += lines.length - 1; - loc.column = lines.length === 1 ? loc.column + extra.length : lines.pop().length + 1; - } - - return loc; -} - -export const SyntaxReferenceError = function(type, referenceName) { - const error = createCustomError( - 'SyntaxReferenceError', - type + (referenceName ? ' `' + referenceName + '`' : '') - ); - - error.reference = referenceName; - - return error; -}; - -export const SyntaxMatchError = function(message, syntax, node, matchResult) { - const error = createCustomError('SyntaxMatchError', message); - const { - css, - mismatchOffset, - mismatchLength, - start, - end - } = locateMismatch(matchResult, node); - - error.rawMessage = message; - error.syntax = syntax ? generate(syntax) : '<generic>'; - error.css = css; - error.mismatchOffset = mismatchOffset; - error.mismatchLength = mismatchLength; - error.message = message + '\n' + - ' syntax: ' + error.syntax + '\n' + - ' value: ' + (css || '<empty string>') + '\n' + - ' --------' + new Array(error.mismatchOffset + 1).join('-') + '^'; - - Object.assign(error, start); - error.loc = { - source: (node && node.loc && node.loc.source) || '<unknown>', - start, - end - }; - - return error; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/generic-an-plus-b.js b/node_modules/csso/node_modules/css-tree/lib/lexer/generic-an-plus-b.js deleted file mode 100644 index 347715c2..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/generic-an-plus-b.js +++ /dev/null @@ -1,238 +0,0 @@ -import { - isDigit, - cmpChar, - Delim, - WhiteSpace, - Comment, - Ident, - Number as NumberToken, - Dimension -} from '../tokenizer/index.js'; - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const N = 0x006E; // U+006E LATIN SMALL LETTER N (n) -const DISALLOW_SIGN = true; -const ALLOW_SIGN = false; - -function isDelim(token, code) { - return token !== null && token.type === Delim && token.value.charCodeAt(0) === code; -} - -function skipSC(token, offset, getNextToken) { - while (token !== null && (token.type === WhiteSpace || token.type === Comment)) { - token = getNextToken(++offset); - } - - return offset; -} - -function checkInteger(token, valueOffset, disallowSign, offset) { - if (!token) { - return 0; - } - - const code = token.value.charCodeAt(valueOffset); - - if (code === PLUSSIGN || code === HYPHENMINUS) { - if (disallowSign) { - // Number sign is not allowed - return 0; - } - valueOffset++; - } - - for (; valueOffset < token.value.length; valueOffset++) { - if (!isDigit(token.value.charCodeAt(valueOffset))) { - // Integer is expected - return 0; - } - } - - return offset + 1; -} - -// ... <signed-integer> -// ... ['+' | '-'] <signless-integer> -function consumeB(token, offset_, getNextToken) { - let sign = false; - let offset = skipSC(token, offset_, getNextToken); - - token = getNextToken(offset); - - if (token === null) { - return offset_; - } - - if (token.type !== NumberToken) { - if (isDelim(token, PLUSSIGN) || isDelim(token, HYPHENMINUS)) { - sign = true; - offset = skipSC(getNextToken(++offset), offset, getNextToken); - token = getNextToken(offset); - - if (token === null || token.type !== NumberToken) { - return 0; - } - } else { - return offset_; - } - } - - if (!sign) { - const code = token.value.charCodeAt(0); - if (code !== PLUSSIGN && code !== HYPHENMINUS) { - // Number sign is expected - return 0; - } - } - - return checkInteger(token, sign ? 0 : 1, sign, offset); -} - -// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb -export default function anPlusB(token, getNextToken) { - /* eslint-disable brace-style*/ - let offset = 0; - - if (!token) { - return 0; - } - - // <integer> - if (token.type === NumberToken) { - return checkInteger(token, 0, ALLOW_SIGN, offset); // b - } - - // -n - // -n <signed-integer> - // -n ['+' | '-'] <signless-integer> - // -n- <signless-integer> - // <dashndashdigit-ident> - else if (token.type === Ident && token.value.charCodeAt(0) === HYPHENMINUS) { - // expect 1st char is N - if (!cmpChar(token.value, 1, N)) { - return 0; - } - - switch (token.value.length) { - // -n - // -n <signed-integer> - // -n ['+' | '-'] <signless-integer> - case 2: - return consumeB(getNextToken(++offset), offset, getNextToken); - - // -n- <signless-integer> - case 3: - if (token.value.charCodeAt(2) !== HYPHENMINUS) { - return 0; - } - - offset = skipSC(getNextToken(++offset), offset, getNextToken); - token = getNextToken(offset); - - return checkInteger(token, 0, DISALLOW_SIGN, offset); - - // <dashndashdigit-ident> - default: - if (token.value.charCodeAt(2) !== HYPHENMINUS) { - return 0; - } - - return checkInteger(token, 3, DISALLOW_SIGN, offset); - } - } - - // '+'? n - // '+'? n <signed-integer> - // '+'? n ['+' | '-'] <signless-integer> - // '+'? n- <signless-integer> - // '+'? <ndashdigit-ident> - else if (token.type === Ident || (isDelim(token, PLUSSIGN) && getNextToken(offset + 1).type === Ident)) { - // just ignore a plus - if (token.type !== Ident) { - token = getNextToken(++offset); - } - - if (token === null || !cmpChar(token.value, 0, N)) { - return 0; - } - - switch (token.value.length) { - // '+'? n - // '+'? n <signed-integer> - // '+'? n ['+' | '-'] <signless-integer> - case 1: - return consumeB(getNextToken(++offset), offset, getNextToken); - - // '+'? n- <signless-integer> - case 2: - if (token.value.charCodeAt(1) !== HYPHENMINUS) { - return 0; - } - - offset = skipSC(getNextToken(++offset), offset, getNextToken); - token = getNextToken(offset); - - return checkInteger(token, 0, DISALLOW_SIGN, offset); - - // '+'? <ndashdigit-ident> - default: - if (token.value.charCodeAt(1) !== HYPHENMINUS) { - return 0; - } - - return checkInteger(token, 2, DISALLOW_SIGN, offset); - } - } - - // <ndashdigit-dimension> - // <ndash-dimension> <signless-integer> - // <n-dimension> - // <n-dimension> <signed-integer> - // <n-dimension> ['+' | '-'] <signless-integer> - else if (token.type === Dimension) { - let code = token.value.charCodeAt(0); - let sign = code === PLUSSIGN || code === HYPHENMINUS ? 1 : 0; - let i = sign; - - for (; i < token.value.length; i++) { - if (!isDigit(token.value.charCodeAt(i))) { - break; - } - } - - if (i === sign) { - // Integer is expected - return 0; - } - - if (!cmpChar(token.value, i, N)) { - return 0; - } - - // <n-dimension> - // <n-dimension> <signed-integer> - // <n-dimension> ['+' | '-'] <signless-integer> - if (i + 1 === token.value.length) { - return consumeB(getNextToken(++offset), offset, getNextToken); - } else { - if (token.value.charCodeAt(i + 1) !== HYPHENMINUS) { - return 0; - } - - // <ndash-dimension> <signless-integer> - if (i + 2 === token.value.length) { - offset = skipSC(getNextToken(++offset), offset, getNextToken); - token = getNextToken(offset); - - return checkInteger(token, 0, DISALLOW_SIGN, offset); - } - // <ndashdigit-dimension> - else { - return checkInteger(token, i + 2, DISALLOW_SIGN, offset); - } - } - } - - return 0; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/generic-const.js b/node_modules/csso/node_modules/css-tree/lib/lexer/generic-const.js deleted file mode 100644 index 8efe6aee..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/generic-const.js +++ /dev/null @@ -1,8 +0,0 @@ -// https://drafts.csswg.org/css-cascade-5/ -export const cssWideKeywords = [ - 'initial', - 'inherit', - 'unset', - 'revert', - 'revert-layer' -]; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/generic-urange.js b/node_modules/csso/node_modules/css-tree/lib/lexer/generic-urange.js deleted file mode 100644 index d878409e..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/generic-urange.js +++ /dev/null @@ -1,151 +0,0 @@ -import { - isHexDigit, - cmpChar, - Ident, - Delim, - Number as NumberToken, - Dimension -} from '../tokenizer/index.js'; - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?) -const U = 0x0075; // U+0075 LATIN SMALL LETTER U (u) - -function isDelim(token, code) { - return token !== null && token.type === Delim && token.value.charCodeAt(0) === code; -} - -function startsWith(token, code) { - return token.value.charCodeAt(0) === code; -} - -function hexSequence(token, offset, allowDash) { - let hexlen = 0; - - for (let pos = offset; pos < token.value.length; pos++) { - const code = token.value.charCodeAt(pos); - - if (code === HYPHENMINUS && allowDash && hexlen !== 0) { - hexSequence(token, offset + hexlen + 1, false); - return 6; // dissallow following question marks - } - - if (!isHexDigit(code)) { - return 0; // not a hex digit - } - - if (++hexlen > 6) { - return 0; // too many hex digits - }; - } - - return hexlen; -} - -function withQuestionMarkSequence(consumed, length, getNextToken) { - if (!consumed) { - return 0; // nothing consumed - } - - while (isDelim(getNextToken(length), QUESTIONMARK)) { - if (++consumed > 6) { - return 0; // too many question marks - } - - length++; - } - - return length; -} - -// https://drafts.csswg.org/css-syntax/#urange -// Informally, the <urange> production has three forms: -// U+0001 -// Defines a range consisting of a single code point, in this case the code point "1". -// U+0001-00ff -// Defines a range of codepoints between the first and the second value, in this case -// the range between "1" and "ff" (255 in decimal) inclusive. -// U+00?? -// Defines a range of codepoints where the "?" characters range over all hex digits, -// in this case defining the same as the value U+0000-00ff. -// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat "?" as a hexadecimal digit). -// -// <urange> = -// u '+' <ident-token> '?'* | -// u <dimension-token> '?'* | -// u <number-token> '?'* | -// u <number-token> <dimension-token> | -// u <number-token> <number-token> | -// u '+' '?'+ -export default function urange(token, getNextToken) { - let length = 0; - - // should start with `u` or `U` - if (token === null || token.type !== Ident || !cmpChar(token.value, 0, U)) { - return 0; - } - - token = getNextToken(++length); - if (token === null) { - return 0; - } - - // u '+' <ident-token> '?'* - // u '+' '?'+ - if (isDelim(token, PLUSSIGN)) { - token = getNextToken(++length); - if (token === null) { - return 0; - } - - if (token.type === Ident) { - // u '+' <ident-token> '?'* - return withQuestionMarkSequence(hexSequence(token, 0, true), ++length, getNextToken); - } - - if (isDelim(token, QUESTIONMARK)) { - // u '+' '?'+ - return withQuestionMarkSequence(1, ++length, getNextToken); - } - - // Hex digit or question mark is expected - return 0; - } - - // u <number-token> '?'* - // u <number-token> <dimension-token> - // u <number-token> <number-token> - if (token.type === NumberToken) { - const consumedHexLength = hexSequence(token, 1, true); - if (consumedHexLength === 0) { - return 0; - } - - token = getNextToken(++length); - if (token === null) { - // u <number-token> <eof> - return length; - } - - if (token.type === Dimension || token.type === NumberToken) { - // u <number-token> <dimension-token> - // u <number-token> <number-token> - if (!startsWith(token, HYPHENMINUS) || !hexSequence(token, 1, false)) { - return 0; - } - - return length + 1; - } - - // u <number-token> '?'* - return withQuestionMarkSequence(consumedHexLength, length, getNextToken); - } - - // u <dimension-token> '?'* - if (token.type === Dimension) { - return withQuestionMarkSequence(hexSequence(token, 1, true), ++length, getNextToken); - } - - return 0; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/generic.js b/node_modules/csso/node_modules/css-tree/lib/lexer/generic.js deleted file mode 100644 index 10c60ccb..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/generic.js +++ /dev/null @@ -1,598 +0,0 @@ -import { cssWideKeywords } from './generic-const.js'; -import anPlusB from './generic-an-plus-b.js'; -import urange from './generic-urange.js'; -import { - isIdentifierStart, - isHexDigit, - isDigit, - cmpStr, - consumeNumber, - - Ident, - Function as FunctionToken, - AtKeyword, - Hash, - String as StringToken, - BadString, - Url, - BadUrl, - Delim, - Number as NumberToken, - Percentage, - Dimension, - WhiteSpace, - CDO, - CDC, - Colon, - Semicolon, - Comma, - LeftSquareBracket, - RightSquareBracket, - LeftParenthesis, - RightParenthesis, - LeftCurlyBracket, - RightCurlyBracket -} from '../tokenizer/index.js'; - -const calcFunctionNames = ['calc(', '-moz-calc(', '-webkit-calc(']; -const balancePair = new Map([ - [FunctionToken, RightParenthesis], - [LeftParenthesis, RightParenthesis], - [LeftSquareBracket, RightSquareBracket], - [LeftCurlyBracket, RightCurlyBracket] -]); - -// units -const LENGTH = [ - // absolute length units https://www.w3.org/TR/css-values-3/#lengths - 'cm', 'mm', 'q', 'in', 'pt', 'pc', 'px', - // font-relative length units https://drafts.csswg.org/css-values-4/#font-relative-lengths - 'em', 'rem', - 'ex', 'rex', - 'cap', 'rcap', - 'ch', 'rch', - 'ic', 'ric', - 'lh', 'rlh', - // viewport-percentage lengths https://drafts.csswg.org/css-values-4/#viewport-relative-lengths - 'vw', 'svw', 'lvw', 'dvw', - 'vh', 'svh', 'lvh', 'dvh', - 'vi', 'svi', 'lvi', 'dvi', - 'vb', 'svb', 'lvb', 'dvb', - 'vmin', 'svmin', 'lvmin', 'dvmin', - 'vmax', 'svmax', 'lvmax', 'dvmax', - // container relative lengths https://drafts.csswg.org/css-contain-3/#container-lengths - 'cqw', 'cqh', 'cqi', 'cqb', 'cqmin', 'cqmax' -]; -const ANGLE = ['deg', 'grad', 'rad', 'turn']; // https://www.w3.org/TR/css-values-3/#angles -const TIME = ['s', 'ms']; // https://www.w3.org/TR/css-values-3/#time -const FREQUENCY = ['hz', 'khz']; // https://www.w3.org/TR/css-values-3/#frequency -const RESOLUTION = ['dpi', 'dpcm', 'dppx', 'x']; // https://www.w3.org/TR/css-values-3/#resolution -const FLEX = ['fr']; // https://drafts.csswg.org/css-grid/#fr-unit -const DECIBEL = ['db']; // https://www.w3.org/TR/css3-speech/#mixing-props-voice-volume -const SEMITONES = ['st']; // https://www.w3.org/TR/css3-speech/#voice-props-voice-pitch - -// safe char code getter -function charCodeAt(str, index) { - return index < str.length ? str.charCodeAt(index) : 0; -} - -function eqStr(actual, expected) { - return cmpStr(actual, 0, actual.length, expected); -} - -function eqStrAny(actual, expected) { - for (let i = 0; i < expected.length; i++) { - if (eqStr(actual, expected[i])) { - return true; - } - } - - return false; -} - -// IE postfix hack, i.e. 123\0 or 123px\9 -function isPostfixIeHack(str, offset) { - if (offset !== str.length - 2) { - return false; - } - - return ( - charCodeAt(str, offset) === 0x005C && // U+005C REVERSE SOLIDUS (\) - isDigit(charCodeAt(str, offset + 1)) - ); -} - -function outOfRange(opts, value, numEnd) { - if (opts && opts.type === 'Range') { - const num = Number( - numEnd !== undefined && numEnd !== value.length - ? value.substr(0, numEnd) - : value - ); - - if (isNaN(num)) { - return true; - } - - // FIXME: when opts.min is a string it's a dimension, skip a range validation - // for now since it requires a type covertation which is not implmented yet - if (opts.min !== null && num < opts.min && typeof opts.min !== 'string') { - return true; - } - - // FIXME: when opts.max is a string it's a dimension, skip a range validation - // for now since it requires a type covertation which is not implmented yet - if (opts.max !== null && num > opts.max && typeof opts.max !== 'string') { - return true; - } - } - - return false; -} - -function consumeFunction(token, getNextToken) { - let balanceCloseType = 0; - let balanceStash = []; - let length = 0; - - // balanced token consuming - scan: - do { - switch (token.type) { - case RightCurlyBracket: - case RightParenthesis: - case RightSquareBracket: - if (token.type !== balanceCloseType) { - break scan; - } - - balanceCloseType = balanceStash.pop(); - - if (balanceStash.length === 0) { - length++; - break scan; - } - - break; - - case FunctionToken: - case LeftParenthesis: - case LeftSquareBracket: - case LeftCurlyBracket: - balanceStash.push(balanceCloseType); - balanceCloseType = balancePair.get(token.type); - break; - } - - length++; - } while (token = getNextToken(length)); - - return length; -} - -// TODO: implement -// can be used wherever <length>, <frequency>, <angle>, <time>, <percentage>, <number>, or <integer> values are allowed -// https://drafts.csswg.org/css-values/#calc-notation -function calc(next) { - return function(token, getNextToken, opts) { - if (token === null) { - return 0; - } - - if (token.type === FunctionToken && eqStrAny(token.value, calcFunctionNames)) { - return consumeFunction(token, getNextToken); - } - - return next(token, getNextToken, opts); - }; -} - -function tokenType(expectedTokenType) { - return function(token) { - if (token === null || token.type !== expectedTokenType) { - return 0; - } - - return 1; - }; -} - -// ========================= -// Complex types -// - -// https://drafts.csswg.org/css-values-4/#custom-idents -// 4.2. Author-defined Identifiers: the <custom-ident> type -// Some properties accept arbitrary author-defined identifiers as a component value. -// This generic data type is denoted by <custom-ident>, and represents any valid CSS identifier -// that would not be misinterpreted as a pre-defined keyword in that property’s value definition. -// -// See also: https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident -function customIdent(token) { - if (token === null || token.type !== Ident) { - return 0; - } - - const name = token.value.toLowerCase(); - - // The CSS-wide keywords are not valid <custom-ident>s - if (eqStrAny(name, cssWideKeywords)) { - return 0; - } - - // The default keyword is reserved and is also not a valid <custom-ident> - if (eqStr(name, 'default')) { - return 0; - } - - // TODO: ignore property specific keywords (as described https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident) - // Specifications using <custom-ident> must specify clearly what other keywords - // are excluded from <custom-ident>, if any—for example by saying that any pre-defined keywords - // in that property’s value definition are excluded. Excluded keywords are excluded - // in all ASCII case permutations. - - return 1; -} - -// https://drafts.csswg.org/css-variables/#typedef-custom-property-name -// A custom property is any property whose name starts with two dashes (U+002D HYPHEN-MINUS), like --foo. -// The <custom-property-name> production corresponds to this: it’s defined as any valid identifier -// that starts with two dashes, except -- itself, which is reserved for future use by CSS. -// NOTE: Current implementation treat `--` as a valid name since most (all?) major browsers treat it as valid. -function customPropertyName(token) { - // ... defined as any valid identifier - if (token === null || token.type !== Ident) { - return 0; - } - - // ... that starts with two dashes (U+002D HYPHEN-MINUS) - if (charCodeAt(token.value, 0) !== 0x002D || charCodeAt(token.value, 1) !== 0x002D) { - return 0; - } - - return 1; -} - -// https://drafts.csswg.org/css-color-4/#hex-notation -// The syntax of a <hex-color> is a <hash-token> token whose value consists of 3, 4, 6, or 8 hexadecimal digits. -// In other words, a hex color is written as a hash character, "#", followed by some number of digits 0-9 or -// letters a-f (the case of the letters doesn’t matter - #00ff00 is identical to #00FF00). -function hexColor(token) { - if (token === null || token.type !== Hash) { - return 0; - } - - const length = token.value.length; - - // valid values (length): #rgb (4), #rgba (5), #rrggbb (7), #rrggbbaa (9) - if (length !== 4 && length !== 5 && length !== 7 && length !== 9) { - return 0; - } - - for (let i = 1; i < length; i++) { - if (!isHexDigit(charCodeAt(token.value, i))) { - return 0; - } - } - - return 1; -} - -function idSelector(token) { - if (token === null || token.type !== Hash) { - return 0; - } - - if (!isIdentifierStart(charCodeAt(token.value, 1), charCodeAt(token.value, 2), charCodeAt(token.value, 3))) { - return 0; - } - - return 1; -} - -// https://drafts.csswg.org/css-syntax/#any-value -// It represents the entirety of what a valid declaration can have as its value. -function declarationValue(token, getNextToken) { - if (!token) { - return 0; - } - - let balanceCloseType = 0; - let balanceStash = []; - let length = 0; - - // The <declaration-value> production matches any sequence of one or more tokens, - // so long as the sequence does not contain ... - scan: - do { - switch (token.type) { - // ... <bad-string-token>, <bad-url-token>, - case BadString: - case BadUrl: - break scan; - - // ... unmatched <)-token>, <]-token>, or <}-token>, - case RightCurlyBracket: - case RightParenthesis: - case RightSquareBracket: - if (token.type !== balanceCloseType) { - break scan; - } - - balanceCloseType = balanceStash.pop(); - break; - - // ... or top-level <semicolon-token> tokens - case Semicolon: - if (balanceCloseType === 0) { - break scan; - } - - break; - - // ... or <delim-token> tokens with a value of "!" - case Delim: - if (balanceCloseType === 0 && token.value === '!') { - break scan; - } - - break; - - case FunctionToken: - case LeftParenthesis: - case LeftSquareBracket: - case LeftCurlyBracket: - balanceStash.push(balanceCloseType); - balanceCloseType = balancePair.get(token.type); - break; - } - - length++; - } while (token = getNextToken(length)); - - return length; -} - -// https://drafts.csswg.org/css-syntax/#any-value -// The <any-value> production is identical to <declaration-value>, but also -// allows top-level <semicolon-token> tokens and <delim-token> tokens -// with a value of "!". It represents the entirety of what valid CSS can be in any context. -function anyValue(token, getNextToken) { - if (!token) { - return 0; - } - - let balanceCloseType = 0; - let balanceStash = []; - let length = 0; - - // The <any-value> production matches any sequence of one or more tokens, - // so long as the sequence ... - scan: - do { - switch (token.type) { - // ... does not contain <bad-string-token>, <bad-url-token>, - case BadString: - case BadUrl: - break scan; - - // ... unmatched <)-token>, <]-token>, or <}-token>, - case RightCurlyBracket: - case RightParenthesis: - case RightSquareBracket: - if (token.type !== balanceCloseType) { - break scan; - } - - balanceCloseType = balanceStash.pop(); - break; - - case FunctionToken: - case LeftParenthesis: - case LeftSquareBracket: - case LeftCurlyBracket: - balanceStash.push(balanceCloseType); - balanceCloseType = balancePair.get(token.type); - break; - } - - length++; - } while (token = getNextToken(length)); - - return length; -} - -// ========================= -// Dimensions -// - -function dimension(type) { - if (type) { - type = new Set(type); - } - - return function(token, getNextToken, opts) { - if (token === null || token.type !== Dimension) { - return 0; - } - - const numberEnd = consumeNumber(token.value, 0); - - // check unit - if (type !== null) { - // check for IE postfix hack, i.e. 123px\0 or 123px\9 - const reverseSolidusOffset = token.value.indexOf('\\', numberEnd); - const unit = reverseSolidusOffset === -1 || !isPostfixIeHack(token.value, reverseSolidusOffset) - ? token.value.substr(numberEnd) - : token.value.substring(numberEnd, reverseSolidusOffset); - - if (type.has(unit.toLowerCase()) === false) { - return 0; - } - } - - // check range if specified - if (outOfRange(opts, token.value, numberEnd)) { - return 0; - } - - return 1; - }; -} - -// ========================= -// Percentage -// - -// §5.5. Percentages: the <percentage> type -// https://drafts.csswg.org/css-values-4/#percentages -function percentage(token, getNextToken, opts) { - // ... corresponds to the <percentage-token> production - if (token === null || token.type !== Percentage) { - return 0; - } - - // check range if specified - if (outOfRange(opts, token.value, token.value.length - 1)) { - return 0; - } - - return 1; -} - -// ========================= -// Numeric -// - -// https://drafts.csswg.org/css-values-4/#numbers -// The value <zero> represents a literal number with the value 0. Expressions that merely -// evaluate to a <number> with the value 0 (for example, calc(0)) do not match <zero>; -// only literal <number-token>s do. -function zero(next) { - if (typeof next !== 'function') { - next = function() { - return 0; - }; - } - - return function(token, getNextToken, opts) { - if (token !== null && token.type === NumberToken) { - if (Number(token.value) === 0) { - return 1; - } - } - - return next(token, getNextToken, opts); - }; -} - -// § 5.3. Real Numbers: the <number> type -// https://drafts.csswg.org/css-values-4/#numbers -// Number values are denoted by <number>, and represent real numbers, possibly with a fractional component. -// ... It corresponds to the <number-token> production -function number(token, getNextToken, opts) { - if (token === null) { - return 0; - } - - const numberEnd = consumeNumber(token.value, 0); - const isNumber = numberEnd === token.value.length; - if (!isNumber && !isPostfixIeHack(token.value, numberEnd)) { - return 0; - } - - // check range if specified - if (outOfRange(opts, token.value, numberEnd)) { - return 0; - } - - return 1; -} - -// §5.2. Integers: the <integer> type -// https://drafts.csswg.org/css-values-4/#integers -function integer(token, getNextToken, opts) { - // ... corresponds to a subset of the <number-token> production - if (token === null || token.type !== NumberToken) { - return 0; - } - - // The first digit of an integer may be immediately preceded by `-` or `+` to indicate the integer’s sign. - let i = charCodeAt(token.value, 0) === 0x002B || // U+002B PLUS SIGN (+) - charCodeAt(token.value, 0) === 0x002D ? 1 : 0; // U+002D HYPHEN-MINUS (-) - - // When written literally, an integer is one or more decimal digits 0 through 9 ... - for (; i < token.value.length; i++) { - if (!isDigit(charCodeAt(token.value, i))) { - return 0; - } - } - - // check range if specified - if (outOfRange(opts, token.value, i)) { - return 0; - } - - return 1; -} - -export default { - // token types - 'ident-token': tokenType(Ident), - 'function-token': tokenType(FunctionToken), - 'at-keyword-token': tokenType(AtKeyword), - 'hash-token': tokenType(Hash), - 'string-token': tokenType(StringToken), - 'bad-string-token': tokenType(BadString), - 'url-token': tokenType(Url), - 'bad-url-token': tokenType(BadUrl), - 'delim-token': tokenType(Delim), - 'number-token': tokenType(NumberToken), - 'percentage-token': tokenType(Percentage), - 'dimension-token': tokenType(Dimension), - 'whitespace-token': tokenType(WhiteSpace), - 'CDO-token': tokenType(CDO), - 'CDC-token': tokenType(CDC), - 'colon-token': tokenType(Colon), - 'semicolon-token': tokenType(Semicolon), - 'comma-token': tokenType(Comma), - '[-token': tokenType(LeftSquareBracket), - ']-token': tokenType(RightSquareBracket), - '(-token': tokenType(LeftParenthesis), - ')-token': tokenType(RightParenthesis), - '{-token': tokenType(LeftCurlyBracket), - '}-token': tokenType(RightCurlyBracket), - - // token type aliases - 'string': tokenType(StringToken), - 'ident': tokenType(Ident), - - // complex types - 'custom-ident': customIdent, - 'custom-property-name': customPropertyName, - 'hex-color': hexColor, - 'id-selector': idSelector, // element( <id-selector> ) - 'an-plus-b': anPlusB, - 'urange': urange, - 'declaration-value': declarationValue, - 'any-value': anyValue, - - // dimensions - 'dimension': calc(dimension(null)), - 'angle': calc(dimension(ANGLE)), - 'decibel': calc(dimension(DECIBEL)), - 'frequency': calc(dimension(FREQUENCY)), - 'flex': calc(dimension(FLEX)), - 'length': calc(zero(dimension(LENGTH))), - 'resolution': calc(dimension(RESOLUTION)), - 'semitones': calc(dimension(SEMITONES)), - 'time': calc(dimension(TIME)), - - // percentage - 'percentage': calc(percentage), - - // numeric - 'zero': zero(), - 'number': calc(number), - 'integer': calc(integer) -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/index.js b/node_modules/csso/node_modules/css-tree/lib/lexer/index.js deleted file mode 100644 index 1661b763..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/index.js +++ /dev/null @@ -1 +0,0 @@ -export { Lexer } from './Lexer.js'; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/match-graph.js b/node_modules/csso/node_modules/css-tree/lib/lexer/match-graph.js deleted file mode 100644 index b7677399..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/match-graph.js +++ /dev/null @@ -1,456 +0,0 @@ -import { parse } from '../definition-syntax/parse.js'; - -export const MATCH = { type: 'Match' }; -export const MISMATCH = { type: 'Mismatch' }; -export const DISALLOW_EMPTY = { type: 'DisallowEmpty' }; - -const LEFTPARENTHESIS = 40; // ( -const RIGHTPARENTHESIS = 41; // ) - -function createCondition(match, thenBranch, elseBranch) { - // reduce node count - if (thenBranch === MATCH && elseBranch === MISMATCH) { - return match; - } - - if (match === MATCH && thenBranch === MATCH && elseBranch === MATCH) { - return match; - } - - if (match.type === 'If' && match.else === MISMATCH && thenBranch === MATCH) { - thenBranch = match.then; - match = match.match; - } - - return { - type: 'If', - match, - then: thenBranch, - else: elseBranch - }; -} - -function isFunctionType(name) { - return ( - name.length > 2 && - name.charCodeAt(name.length - 2) === LEFTPARENTHESIS && - name.charCodeAt(name.length - 1) === RIGHTPARENTHESIS - ); -} - -function isEnumCapatible(term) { - return ( - term.type === 'Keyword' || - term.type === 'AtKeyword' || - term.type === 'Function' || - term.type === 'Type' && isFunctionType(term.name) - ); -} - -function buildGroupMatchGraph(combinator, terms, atLeastOneTermMatched) { - switch (combinator) { - case ' ': { - // Juxtaposing components means that all of them must occur, in the given order. - // - // a b c - // = - // match a - // then match b - // then match c - // then MATCH - // else MISMATCH - // else MISMATCH - // else MISMATCH - let result = MATCH; - - for (let i = terms.length - 1; i >= 0; i--) { - const term = terms[i]; - - result = createCondition( - term, - result, - MISMATCH - ); - }; - - return result; - } - - case '|': { - // A bar (|) separates two or more alternatives: exactly one of them must occur. - // - // a | b | c - // = - // match a - // then MATCH - // else match b - // then MATCH - // else match c - // then MATCH - // else MISMATCH - - let result = MISMATCH; - let map = null; - - for (let i = terms.length - 1; i >= 0; i--) { - let term = terms[i]; - - // reduce sequence of keywords into a Enum - if (isEnumCapatible(term)) { - if (map === null && i > 0 && isEnumCapatible(terms[i - 1])) { - map = Object.create(null); - result = createCondition( - { - type: 'Enum', - map - }, - MATCH, - result - ); - } - - if (map !== null) { - const key = (isFunctionType(term.name) ? term.name.slice(0, -1) : term.name).toLowerCase(); - if (key in map === false) { - map[key] = term; - continue; - } - } - } - - map = null; - - // create a new conditonal node - result = createCondition( - term, - MATCH, - result - ); - }; - - return result; - } - - case '&&': { - // A double ampersand (&&) separates two or more components, - // all of which must occur, in any order. - - // Use MatchOnce for groups with a large number of terms, - // since &&-groups produces at least N!-node trees - if (terms.length > 5) { - return { - type: 'MatchOnce', - terms, - all: true - }; - } - - // Use a combination tree for groups with small number of terms - // - // a && b && c - // = - // match a - // then [b && c] - // else match b - // then [a && c] - // else match c - // then [a && b] - // else MISMATCH - // - // a && b - // = - // match a - // then match b - // then MATCH - // else MISMATCH - // else match b - // then match a - // then MATCH - // else MISMATCH - // else MISMATCH - let result = MISMATCH; - - for (let i = terms.length - 1; i >= 0; i--) { - const term = terms[i]; - let thenClause; - - if (terms.length > 1) { - thenClause = buildGroupMatchGraph( - combinator, - terms.filter(function(newGroupTerm) { - return newGroupTerm !== term; - }), - false - ); - } else { - thenClause = MATCH; - } - - result = createCondition( - term, - thenClause, - result - ); - }; - - return result; - } - - case '||': { - // A double bar (||) separates two or more options: - // one or more of them must occur, in any order. - - // Use MatchOnce for groups with a large number of terms, - // since ||-groups produces at least N!-node trees - if (terms.length > 5) { - return { - type: 'MatchOnce', - terms, - all: false - }; - } - - // Use a combination tree for groups with small number of terms - // - // a || b || c - // = - // match a - // then [b || c] - // else match b - // then [a || c] - // else match c - // then [a || b] - // else MISMATCH - // - // a || b - // = - // match a - // then match b - // then MATCH - // else MATCH - // else match b - // then match a - // then MATCH - // else MATCH - // else MISMATCH - let result = atLeastOneTermMatched ? MATCH : MISMATCH; - - for (let i = terms.length - 1; i >= 0; i--) { - const term = terms[i]; - let thenClause; - - if (terms.length > 1) { - thenClause = buildGroupMatchGraph( - combinator, - terms.filter(function(newGroupTerm) { - return newGroupTerm !== term; - }), - true - ); - } else { - thenClause = MATCH; - } - - result = createCondition( - term, - thenClause, - result - ); - }; - - return result; - } - } -} - -function buildMultiplierMatchGraph(node) { - let result = MATCH; - let matchTerm = buildMatchGraphInternal(node.term); - - if (node.max === 0) { - // disable repeating of empty match to prevent infinite loop - matchTerm = createCondition( - matchTerm, - DISALLOW_EMPTY, - MISMATCH - ); - - // an occurrence count is not limited, make a cycle; - // to collect more terms on each following matching mismatch - result = createCondition( - matchTerm, - null, // will be a loop - MISMATCH - ); - - result.then = createCondition( - MATCH, - MATCH, - result // make a loop - ); - - if (node.comma) { - result.then.else = createCondition( - { type: 'Comma', syntax: node }, - result, - MISMATCH - ); - } - } else { - // create a match node chain for [min .. max] interval with optional matches - for (let i = node.min || 1; i <= node.max; i++) { - if (node.comma && result !== MATCH) { - result = createCondition( - { type: 'Comma', syntax: node }, - result, - MISMATCH - ); - } - - result = createCondition( - matchTerm, - createCondition( - MATCH, - MATCH, - result - ), - MISMATCH - ); - } - } - - if (node.min === 0) { - // allow zero match - result = createCondition( - MATCH, - MATCH, - result - ); - } else { - // create a match node chain to collect [0 ... min - 1] required matches - for (let i = 0; i < node.min - 1; i++) { - if (node.comma && result !== MATCH) { - result = createCondition( - { type: 'Comma', syntax: node }, - result, - MISMATCH - ); - } - - result = createCondition( - matchTerm, - result, - MISMATCH - ); - } - } - - return result; -} - -function buildMatchGraphInternal(node) { - if (typeof node === 'function') { - return { - type: 'Generic', - fn: node - }; - } - - switch (node.type) { - case 'Group': { - let result = buildGroupMatchGraph( - node.combinator, - node.terms.map(buildMatchGraphInternal), - false - ); - - if (node.disallowEmpty) { - result = createCondition( - result, - DISALLOW_EMPTY, - MISMATCH - ); - } - - return result; - } - - case 'Multiplier': - return buildMultiplierMatchGraph(node); - - case 'Type': - case 'Property': - return { - type: node.type, - name: node.name, - syntax: node - }; - - case 'Keyword': - return { - type: node.type, - name: node.name.toLowerCase(), - syntax: node - }; - - case 'AtKeyword': - return { - type: node.type, - name: '@' + node.name.toLowerCase(), - syntax: node - }; - - case 'Function': - return { - type: node.type, - name: node.name.toLowerCase() + '(', - syntax: node - }; - - case 'String': - // convert a one char length String to a Token - if (node.value.length === 3) { - return { - type: 'Token', - value: node.value.charAt(1), - syntax: node - }; - } - - // otherwise use it as is - return { - type: node.type, - value: node.value.substr(1, node.value.length - 2).replace(/\\'/g, '\''), - syntax: node - }; - - case 'Token': - return { - type: node.type, - value: node.value, - syntax: node - }; - - case 'Comma': - return { - type: node.type, - syntax: node - }; - - default: - throw new Error('Unknown node type:', node.type); - } -} - -export function buildMatchGraph(syntaxTree, ref) { - if (typeof syntaxTree === 'string') { - syntaxTree = parse(syntaxTree); - } - - return { - type: 'MatchGraph', - match: buildMatchGraphInternal(syntaxTree), - syntax: ref || null, - source: syntaxTree - }; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/match.js b/node_modules/csso/node_modules/css-tree/lib/lexer/match.js deleted file mode 100644 index 9efe5ca9..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/match.js +++ /dev/null @@ -1,630 +0,0 @@ -import { MATCH, MISMATCH, DISALLOW_EMPTY } from './match-graph.js'; -import * as TYPE from '../tokenizer/types.js'; - -const { hasOwnProperty } = Object.prototype; -const STUB = 0; -const TOKEN = 1; -const OPEN_SYNTAX = 2; -const CLOSE_SYNTAX = 3; - -const EXIT_REASON_MATCH = 'Match'; -const EXIT_REASON_MISMATCH = 'Mismatch'; -const EXIT_REASON_ITERATION_LIMIT = 'Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)'; - -const ITERATION_LIMIT = 15000; -export let totalIterationCount = 0; - -function reverseList(list) { - let prev = null; - let next = null; - let item = list; - - while (item !== null) { - next = item.prev; - item.prev = prev; - prev = item; - item = next; - } - - return prev; -} - -function areStringsEqualCaseInsensitive(testStr, referenceStr) { - if (testStr.length !== referenceStr.length) { - return false; - } - - for (let i = 0; i < testStr.length; i++) { - const referenceCode = referenceStr.charCodeAt(i); - let testCode = testStr.charCodeAt(i); - - // testCode.toLowerCase() for U+0041 LATIN CAPITAL LETTER A (A) .. U+005A LATIN CAPITAL LETTER Z (Z). - if (testCode >= 0x0041 && testCode <= 0x005A) { - testCode = testCode | 32; - } - - if (testCode !== referenceCode) { - return false; - } - } - - return true; -} - -function isContextEdgeDelim(token) { - if (token.type !== TYPE.Delim) { - return false; - } - - // Fix matching for unicode-range: U+30??, U+FF00-FF9F - // Probably we need to check out previous match instead - return token.value !== '?'; -} - -function isCommaContextStart(token) { - if (token === null) { - return true; - } - - return ( - token.type === TYPE.Comma || - token.type === TYPE.Function || - token.type === TYPE.LeftParenthesis || - token.type === TYPE.LeftSquareBracket || - token.type === TYPE.LeftCurlyBracket || - isContextEdgeDelim(token) - ); -} - -function isCommaContextEnd(token) { - if (token === null) { - return true; - } - - return ( - token.type === TYPE.RightParenthesis || - token.type === TYPE.RightSquareBracket || - token.type === TYPE.RightCurlyBracket || - (token.type === TYPE.Delim && token.value === '/') - ); -} - -function internalMatch(tokens, state, syntaxes) { - function moveToNextToken() { - do { - tokenIndex++; - token = tokenIndex < tokens.length ? tokens[tokenIndex] : null; - } while (token !== null && (token.type === TYPE.WhiteSpace || token.type === TYPE.Comment)); - } - - function getNextToken(offset) { - const nextIndex = tokenIndex + offset; - - return nextIndex < tokens.length ? tokens[nextIndex] : null; - } - - function stateSnapshotFromSyntax(nextState, prev) { - return { - nextState, - matchStack, - syntaxStack, - thenStack, - tokenIndex, - prev - }; - } - - function pushThenStack(nextState) { - thenStack = { - nextState, - matchStack, - syntaxStack, - prev: thenStack - }; - } - - function pushElseStack(nextState) { - elseStack = stateSnapshotFromSyntax(nextState, elseStack); - } - - function addTokenToMatch() { - matchStack = { - type: TOKEN, - syntax: state.syntax, - token, - prev: matchStack - }; - - moveToNextToken(); - syntaxStash = null; - - if (tokenIndex > longestMatch) { - longestMatch = tokenIndex; - } - } - - function openSyntax() { - syntaxStack = { - syntax: state.syntax, - opts: state.syntax.opts || (syntaxStack !== null && syntaxStack.opts) || null, - prev: syntaxStack - }; - - matchStack = { - type: OPEN_SYNTAX, - syntax: state.syntax, - token: matchStack.token, - prev: matchStack - }; - } - - function closeSyntax() { - if (matchStack.type === OPEN_SYNTAX) { - matchStack = matchStack.prev; - } else { - matchStack = { - type: CLOSE_SYNTAX, - syntax: syntaxStack.syntax, - token: matchStack.token, - prev: matchStack - }; - } - - syntaxStack = syntaxStack.prev; - } - - let syntaxStack = null; - let thenStack = null; - let elseStack = null; - - // null – stashing allowed, nothing stashed - // false – stashing disabled, nothing stashed - // anithing else – fail stashable syntaxes, some syntax stashed - let syntaxStash = null; - - let iterationCount = 0; // count iterations and prevent infinite loop - let exitReason = null; - - let token = null; - let tokenIndex = -1; - let longestMatch = 0; - let matchStack = { - type: STUB, - syntax: null, - token: null, - prev: null - }; - - moveToNextToken(); - - while (exitReason === null && ++iterationCount < ITERATION_LIMIT) { - // function mapList(list, fn) { - // const result = []; - // while (list) { - // result.unshift(fn(list)); - // list = list.prev; - // } - // return result; - // } - // console.log('--\n', - // '#' + iterationCount, - // require('util').inspect({ - // match: mapList(matchStack, x => x.type === TOKEN ? x.token && x.token.value : x.syntax ? ({ [OPEN_SYNTAX]: '<', [CLOSE_SYNTAX]: '</' }[x.type] || x.type) + '!' + x.syntax.name : null), - // token: token && token.value, - // tokenIndex, - // syntax: syntax.type + (syntax.id ? ' #' + syntax.id : '') - // }, { depth: null }) - // ); - switch (state.type) { - case 'Match': - if (thenStack === null) { - // turn to MISMATCH when some tokens left unmatched - if (token !== null) { - // doesn't mismatch if just one token left and it's an IE hack - if (tokenIndex !== tokens.length - 1 || (token.value !== '\\0' && token.value !== '\\9')) { - state = MISMATCH; - break; - } - } - - // break the main loop, return a result - MATCH - exitReason = EXIT_REASON_MATCH; - break; - } - - // go to next syntax (`then` branch) - state = thenStack.nextState; - - // check match is not empty - if (state === DISALLOW_EMPTY) { - if (thenStack.matchStack === matchStack) { - state = MISMATCH; - break; - } else { - state = MATCH; - } - } - - // close syntax if needed - while (thenStack.syntaxStack !== syntaxStack) { - closeSyntax(); - } - - // pop stack - thenStack = thenStack.prev; - break; - - case 'Mismatch': - // when some syntax is stashed - if (syntaxStash !== null && syntaxStash !== false) { - // there is no else branches or a branch reduce match stack - if (elseStack === null || tokenIndex > elseStack.tokenIndex) { - // restore state from the stash - elseStack = syntaxStash; - syntaxStash = false; // disable stashing - } - } else if (elseStack === null) { - // no else branches -> break the main loop - // return a result - MISMATCH - exitReason = EXIT_REASON_MISMATCH; - break; - } - - // go to next syntax (`else` branch) - state = elseStack.nextState; - - // restore all the rest stack states - thenStack = elseStack.thenStack; - syntaxStack = elseStack.syntaxStack; - matchStack = elseStack.matchStack; - tokenIndex = elseStack.tokenIndex; - token = tokenIndex < tokens.length ? tokens[tokenIndex] : null; - - // pop stack - elseStack = elseStack.prev; - break; - - case 'MatchGraph': - state = state.match; - break; - - case 'If': - // IMPORTANT: else stack push must go first, - // since it stores the state of thenStack before changes - if (state.else !== MISMATCH) { - pushElseStack(state.else); - } - - if (state.then !== MATCH) { - pushThenStack(state.then); - } - - state = state.match; - break; - - case 'MatchOnce': - state = { - type: 'MatchOnceBuffer', - syntax: state, - index: 0, - mask: 0 - }; - break; - - case 'MatchOnceBuffer': { - const terms = state.syntax.terms; - - if (state.index === terms.length) { - // no matches at all or it's required all terms to be matched - if (state.mask === 0 || state.syntax.all) { - state = MISMATCH; - break; - } - - // a partial match is ok - state = MATCH; - break; - } - - // all terms are matched - if (state.mask === (1 << terms.length) - 1) { - state = MATCH; - break; - } - - for (; state.index < terms.length; state.index++) { - const matchFlag = 1 << state.index; - - if ((state.mask & matchFlag) === 0) { - // IMPORTANT: else stack push must go first, - // since it stores the state of thenStack before changes - pushElseStack(state); - pushThenStack({ - type: 'AddMatchOnce', - syntax: state.syntax, - mask: state.mask | matchFlag - }); - - // match - state = terms[state.index++]; - break; - } - } - break; - } - - case 'AddMatchOnce': - state = { - type: 'MatchOnceBuffer', - syntax: state.syntax, - index: 0, - mask: state.mask - }; - break; - - case 'Enum': - if (token !== null) { - let name = token.value.toLowerCase(); - - // drop \0 and \9 hack from keyword name - if (name.indexOf('\\') !== -1) { - name = name.replace(/\\[09].*$/, ''); - } - - if (hasOwnProperty.call(state.map, name)) { - state = state.map[name]; - break; - } - } - - state = MISMATCH; - break; - - case 'Generic': { - const opts = syntaxStack !== null ? syntaxStack.opts : null; - const lastTokenIndex = tokenIndex + Math.floor(state.fn(token, getNextToken, opts)); - - if (!isNaN(lastTokenIndex) && lastTokenIndex > tokenIndex) { - while (tokenIndex < lastTokenIndex) { - addTokenToMatch(); - } - - state = MATCH; - } else { - state = MISMATCH; - } - - break; - } - - case 'Type': - case 'Property': { - const syntaxDict = state.type === 'Type' ? 'types' : 'properties'; - const dictSyntax = hasOwnProperty.call(syntaxes, syntaxDict) ? syntaxes[syntaxDict][state.name] : null; - - if (!dictSyntax || !dictSyntax.match) { - throw new Error( - 'Bad syntax reference: ' + - (state.type === 'Type' - ? '<' + state.name + '>' - : '<\'' + state.name + '\'>') - ); - } - - // stash a syntax for types with low priority - if (syntaxStash !== false && token !== null && state.type === 'Type') { - const lowPriorityMatching = - // https://drafts.csswg.org/css-values-4/#custom-idents - // When parsing positionally-ambiguous keywords in a property value, a <custom-ident> production - // can only claim the keyword if no other unfulfilled production can claim it. - (state.name === 'custom-ident' && token.type === TYPE.Ident) || - - // https://drafts.csswg.org/css-values-4/#lengths - // ... if a `0` could be parsed as either a <number> or a <length> in a property (such as line-height), - // it must parse as a <number> - (state.name === 'length' && token.value === '0'); - - if (lowPriorityMatching) { - if (syntaxStash === null) { - syntaxStash = stateSnapshotFromSyntax(state, elseStack); - } - - state = MISMATCH; - break; - } - } - - openSyntax(); - state = dictSyntax.match; - break; - } - - case 'Keyword': { - const name = state.name; - - if (token !== null) { - let keywordName = token.value; - - // drop \0 and \9 hack from keyword name - if (keywordName.indexOf('\\') !== -1) { - keywordName = keywordName.replace(/\\[09].*$/, ''); - } - - if (areStringsEqualCaseInsensitive(keywordName, name)) { - addTokenToMatch(); - state = MATCH; - break; - } - } - - state = MISMATCH; - break; - } - - case 'AtKeyword': - case 'Function': - if (token !== null && areStringsEqualCaseInsensitive(token.value, state.name)) { - addTokenToMatch(); - state = MATCH; - break; - } - - state = MISMATCH; - break; - - case 'Token': - if (token !== null && token.value === state.value) { - addTokenToMatch(); - state = MATCH; - break; - } - - state = MISMATCH; - break; - - case 'Comma': - if (token !== null && token.type === TYPE.Comma) { - if (isCommaContextStart(matchStack.token)) { - state = MISMATCH; - } else { - addTokenToMatch(); - state = isCommaContextEnd(token) ? MISMATCH : MATCH; - } - } else { - state = isCommaContextStart(matchStack.token) || isCommaContextEnd(token) ? MATCH : MISMATCH; - } - - break; - - case 'String': - let string = ''; - let lastTokenIndex = tokenIndex; - - for (; lastTokenIndex < tokens.length && string.length < state.value.length; lastTokenIndex++) { - string += tokens[lastTokenIndex].value; - } - - if (areStringsEqualCaseInsensitive(string, state.value)) { - while (tokenIndex < lastTokenIndex) { - addTokenToMatch(); - } - - state = MATCH; - } else { - state = MISMATCH; - } - - break; - - default: - throw new Error('Unknown node type: ' + state.type); - } - } - - totalIterationCount += iterationCount; - - switch (exitReason) { - case null: - console.warn('[csstree-match] BREAK after ' + ITERATION_LIMIT + ' iterations'); - exitReason = EXIT_REASON_ITERATION_LIMIT; - matchStack = null; - break; - - case EXIT_REASON_MATCH: - while (syntaxStack !== null) { - closeSyntax(); - } - break; - - default: - matchStack = null; - } - - return { - tokens, - reason: exitReason, - iterations: iterationCount, - match: matchStack, - longestMatch - }; -} - -export function matchAsList(tokens, matchGraph, syntaxes) { - const matchResult = internalMatch(tokens, matchGraph, syntaxes || {}); - - if (matchResult.match !== null) { - let item = reverseList(matchResult.match).prev; - - matchResult.match = []; - - while (item !== null) { - switch (item.type) { - case OPEN_SYNTAX: - case CLOSE_SYNTAX: - matchResult.match.push({ - type: item.type, - syntax: item.syntax - }); - break; - - default: - matchResult.match.push({ - token: item.token.value, - node: item.token.node - }); - break; - } - - item = item.prev; - } - } - - return matchResult; -} - -export function matchAsTree(tokens, matchGraph, syntaxes) { - const matchResult = internalMatch(tokens, matchGraph, syntaxes || {}); - - if (matchResult.match === null) { - return matchResult; - } - - let item = matchResult.match; - let host = matchResult.match = { - syntax: matchGraph.syntax || null, - match: [] - }; - const hostStack = [host]; - - // revert a list and start with 2nd item since 1st is a stub item - item = reverseList(item).prev; - - // build a tree - while (item !== null) { - switch (item.type) { - case OPEN_SYNTAX: - host.match.push(host = { - syntax: item.syntax, - match: [] - }); - hostStack.push(host); - break; - - case CLOSE_SYNTAX: - hostStack.pop(); - host = hostStack[hostStack.length - 1]; - break; - - default: - host.match.push({ - syntax: item.syntax || null, - token: item.token.value, - node: item.token.node - }); - } - - item = item.prev; - } - - return matchResult; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/prepare-tokens.js b/node_modules/csso/node_modules/css-tree/lib/lexer/prepare-tokens.js deleted file mode 100644 index 4243fa88..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/prepare-tokens.js +++ /dev/null @@ -1,50 +0,0 @@ -import { tokenize } from '../tokenizer/index.js'; - -const astToTokens = { - decorator(handlers) { - const tokens = []; - let curNode = null; - - return { - ...handlers, - node(node) { - const tmp = curNode; - curNode = node; - handlers.node.call(this, node); - curNode = tmp; - }, - emit(value, type, auto) { - tokens.push({ - type, - value, - node: auto ? null : curNode - }); - }, - result() { - return tokens; - } - }; - } -}; - -function stringToTokens(str) { - const tokens = []; - - tokenize(str, (type, start, end) => - tokens.push({ - type, - value: str.slice(start, end), - node: null - }) - ); - - return tokens; -} - -export default function(value, syntax) { - if (typeof value === 'string') { - return stringToTokens(value); - } - - return syntax.generate(value, astToTokens); -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/search.js b/node_modules/csso/node_modules/css-tree/lib/lexer/search.js deleted file mode 100644 index ee68e2d6..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/search.js +++ /dev/null @@ -1,61 +0,0 @@ -import { List } from '../utils/List.js'; - -function getFirstMatchNode(matchNode) { - if ('node' in matchNode) { - return matchNode.node; - } - - return getFirstMatchNode(matchNode.match[0]); -} - -function getLastMatchNode(matchNode) { - if ('node' in matchNode) { - return matchNode.node; - } - - return getLastMatchNode(matchNode.match[matchNode.match.length - 1]); -} - -export function matchFragments(lexer, ast, match, type, name) { - function findFragments(matchNode) { - if (matchNode.syntax !== null && - matchNode.syntax.type === type && - matchNode.syntax.name === name) { - const start = getFirstMatchNode(matchNode); - const end = getLastMatchNode(matchNode); - - lexer.syntax.walk(ast, function(node, item, list) { - if (node === start) { - const nodes = new List(); - - do { - nodes.appendData(item.data); - - if (item.data === end) { - break; - } - - item = item.next; - } while (item !== null); - - fragments.push({ - parent: list, - nodes - }); - } - }); - } - - if (Array.isArray(matchNode.match)) { - matchNode.match.forEach(findFragments); - } - } - - const fragments = []; - - if (match.matched !== null) { - findFragments(match.matched); - } - - return fragments; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/structure.js b/node_modules/csso/node_modules/css-tree/lib/lexer/structure.js deleted file mode 100644 index 0c8ee62f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/structure.js +++ /dev/null @@ -1,164 +0,0 @@ -import { List } from '../utils/List.js'; - -const { hasOwnProperty } = Object.prototype; - -function isValidNumber(value) { - // Number.isInteger(value) && value >= 0 - return ( - typeof value === 'number' && - isFinite(value) && - Math.floor(value) === value && - value >= 0 - ); -} - -function isValidLocation(loc) { - return ( - Boolean(loc) && - isValidNumber(loc.offset) && - isValidNumber(loc.line) && - isValidNumber(loc.column) - ); -} - -function createNodeStructureChecker(type, fields) { - return function checkNode(node, warn) { - if (!node || node.constructor !== Object) { - return warn(node, 'Type of node should be an Object'); - } - - for (let key in node) { - let valid = true; - - if (hasOwnProperty.call(node, key) === false) { - continue; - } - - if (key === 'type') { - if (node.type !== type) { - warn(node, 'Wrong node type `' + node.type + '`, expected `' + type + '`'); - } - } else if (key === 'loc') { - if (node.loc === null) { - continue; - } else if (node.loc && node.loc.constructor === Object) { - if (typeof node.loc.source !== 'string') { - key += '.source'; - } else if (!isValidLocation(node.loc.start)) { - key += '.start'; - } else if (!isValidLocation(node.loc.end)) { - key += '.end'; - } else { - continue; - } - } - - valid = false; - } else if (fields.hasOwnProperty(key)) { - valid = false; - - for (let i = 0; !valid && i < fields[key].length; i++) { - const fieldType = fields[key][i]; - - switch (fieldType) { - case String: - valid = typeof node[key] === 'string'; - break; - - case Boolean: - valid = typeof node[key] === 'boolean'; - break; - - case null: - valid = node[key] === null; - break; - - default: - if (typeof fieldType === 'string') { - valid = node[key] && node[key].type === fieldType; - } else if (Array.isArray(fieldType)) { - valid = node[key] instanceof List; - } - } - } - } else { - warn(node, 'Unknown field `' + key + '` for ' + type + ' node type'); - } - - if (!valid) { - warn(node, 'Bad value for `' + type + '.' + key + '`'); - } - } - - for (const key in fields) { - if (hasOwnProperty.call(fields, key) && - hasOwnProperty.call(node, key) === false) { - warn(node, 'Field `' + type + '.' + key + '` is missed'); - } - } - }; -} - -function processStructure(name, nodeType) { - const structure = nodeType.structure; - const fields = { - type: String, - loc: true - }; - const docs = { - type: '"' + name + '"' - }; - - for (const key in structure) { - if (hasOwnProperty.call(structure, key) === false) { - continue; - } - - const docsTypes = []; - const fieldTypes = fields[key] = Array.isArray(structure[key]) - ? structure[key].slice() - : [structure[key]]; - - for (let i = 0; i < fieldTypes.length; i++) { - const fieldType = fieldTypes[i]; - if (fieldType === String || fieldType === Boolean) { - docsTypes.push(fieldType.name); - } else if (fieldType === null) { - docsTypes.push('null'); - } else if (typeof fieldType === 'string') { - docsTypes.push('<' + fieldType + '>'); - } else if (Array.isArray(fieldType)) { - docsTypes.push('List'); // TODO: use type enum - } else { - throw new Error('Wrong value `' + fieldType + '` in `' + name + '.' + key + '` structure definition'); - } - } - - docs[key] = docsTypes.join(' | '); - } - - return { - docs, - check: createNodeStructureChecker(name, fields) - }; -} - -export function getStructureFromConfig(config) { - const structure = {}; - - if (config.node) { - for (const name in config.node) { - if (hasOwnProperty.call(config.node, name)) { - const nodeType = config.node[name]; - - if (nodeType.structure) { - structure[name] = processStructure(name, nodeType); - } else { - throw new Error('Missed `structure` field in `' + name + '` node type definition'); - } - } - } - } - - return structure; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/lexer/trace.js b/node_modules/csso/node_modules/css-tree/lib/lexer/trace.js deleted file mode 100644 index 959813c5..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/lexer/trace.js +++ /dev/null @@ -1,66 +0,0 @@ -export function getTrace(node) { - function shouldPutToTrace(syntax) { - if (syntax === null) { - return false; - } - - return ( - syntax.type === 'Type' || - syntax.type === 'Property' || - syntax.type === 'Keyword' - ); - } - - function hasMatch(matchNode) { - if (Array.isArray(matchNode.match)) { - // use for-loop for better perfomance - for (let i = 0; i < matchNode.match.length; i++) { - if (hasMatch(matchNode.match[i])) { - if (shouldPutToTrace(matchNode.syntax)) { - result.unshift(matchNode.syntax); - } - - return true; - } - } - } else if (matchNode.node === node) { - result = shouldPutToTrace(matchNode.syntax) - ? [matchNode.syntax] - : []; - - return true; - } - - return false; - } - - let result = null; - - if (this.matched !== null) { - hasMatch(this.matched); - } - - return result; -} - -export function isType(node, type) { - return testNode(this, node, match => match.type === 'Type' && match.name === type); -} - -export function isProperty(node, property) { - return testNode(this, node, match => match.type === 'Property' && match.name === property); -} - -export function isKeyword(node) { - return testNode(this, node, match => match.type === 'Keyword'); -} - -function testNode(match, node, fn) { - const trace = getTrace.call(match, node); - - if (trace === null) { - return false; - } - - return trace.some(fn); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/parser/SyntaxError.js b/node_modules/csso/node_modules/css-tree/lib/parser/SyntaxError.js deleted file mode 100644 index 324b67e2..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/parser/SyntaxError.js +++ /dev/null @@ -1,65 +0,0 @@ -import { createCustomError } from '../utils/create-custom-error.js'; - -const MAX_LINE_LENGTH = 100; -const OFFSET_CORRECTION = 60; -const TAB_REPLACEMENT = ' '; - -function sourceFragment({ source, line, column }, extraLines) { - function processLines(start, end) { - return lines - .slice(start, end) - .map((line, idx) => - String(start + idx + 1).padStart(maxNumLength) + ' |' + line - ).join('\n'); - } - - const lines = source.split(/\r\n?|\n|\f/); - const startLine = Math.max(1, line - extraLines) - 1; - const endLine = Math.min(line + extraLines, lines.length + 1); - const maxNumLength = Math.max(4, String(endLine).length) + 1; - let cutLeft = 0; - - // column correction according to replaced tab before column - column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\t/g) || []).length; - - if (column > MAX_LINE_LENGTH) { - cutLeft = column - OFFSET_CORRECTION + 3; - column = OFFSET_CORRECTION - 2; - } - - for (let i = startLine; i <= endLine; i++) { - if (i >= 0 && i < lines.length) { - lines[i] = lines[i].replace(/\t/g, TAB_REPLACEMENT); - lines[i] = - (cutLeft > 0 && lines[i].length > cutLeft ? '\u2026' : '') + - lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) + - (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? '\u2026' : ''); - } - } - - return [ - processLines(startLine, line), - new Array(column + maxNumLength + 2).join('-') + '^', - processLines(line, endLine) - ].filter(Boolean).join('\n'); -} - -export function SyntaxError(message, source, offset, line, column) { - const error = Object.assign(createCustomError('SyntaxError', message), { - source, - offset, - line, - column, - sourceFragment(extraLines) { - return sourceFragment({ source, line, column }, isNaN(extraLines) ? 0 : extraLines); - }, - get formattedMessage() { - return ( - `Parse error: ${message}\n` + - sourceFragment({ source, line, column }, 2) - ); - } - }); - - return error; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/parser/create.js b/node_modules/csso/node_modules/css-tree/lib/parser/create.js deleted file mode 100644 index 3cd3df11..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/parser/create.js +++ /dev/null @@ -1,346 +0,0 @@ -import { List } from '../utils/List.js'; -import { SyntaxError } from './SyntaxError.js'; -import { - tokenize, - OffsetToLocation, - TokenStream, - tokenNames, - - consumeNumber, - findWhiteSpaceStart, - cmpChar, - cmpStr, - - WhiteSpace, - Comment, - Ident, - Function as FunctionToken, - Url, - Hash, - Percentage, - Number as NumberToken -} from '../tokenizer/index.js'; -import { readSequence } from './sequence.js'; - -const NOOP = () => {}; -const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) -const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) -const SEMICOLON = 0x003B; // U+003B SEMICOLON (;) -const LEFTCURLYBRACKET = 0x007B; // U+007B LEFT CURLY BRACKET ({) -const NULL = 0; - -function createParseContext(name) { - return function() { - return this[name](); - }; -} - -function fetchParseValues(dict) { - const result = Object.create(null); - - for (const name in dict) { - const item = dict[name]; - const fn = item.parse || item; - - if (fn) { - result[name] = fn; - } - } - - return result; -} - -function processConfig(config) { - const parseConfig = { - context: Object.create(null), - scope: Object.assign(Object.create(null), config.scope), - atrule: fetchParseValues(config.atrule), - pseudo: fetchParseValues(config.pseudo), - node: fetchParseValues(config.node) - }; - - for (const name in config.parseContext) { - switch (typeof config.parseContext[name]) { - case 'function': - parseConfig.context[name] = config.parseContext[name]; - break; - - case 'string': - parseConfig.context[name] = createParseContext(config.parseContext[name]); - break; - } - } - - return { - config: parseConfig, - ...parseConfig, - ...parseConfig.node - }; -} - -export function createParser(config) { - let source = ''; - let filename = '<unknown>'; - let needPositions = false; - let onParseError = NOOP; - let onParseErrorThrow = false; - - const locationMap = new OffsetToLocation(); - const parser = Object.assign(new TokenStream(), processConfig(config || {}), { - parseAtrulePrelude: true, - parseRulePrelude: true, - parseValue: true, - parseCustomProperty: false, - - readSequence, - - consumeUntilBalanceEnd: () => 0, - consumeUntilLeftCurlyBracket(code) { - return code === LEFTCURLYBRACKET ? 1 : 0; - }, - consumeUntilLeftCurlyBracketOrSemicolon(code) { - return code === LEFTCURLYBRACKET || code === SEMICOLON ? 1 : 0; - }, - consumeUntilExclamationMarkOrSemicolon(code) { - return code === EXCLAMATIONMARK || code === SEMICOLON ? 1 : 0; - }, - consumeUntilSemicolonIncluded(code) { - return code === SEMICOLON ? 2 : 0; - }, - - createList() { - return new List(); - }, - createSingleNodeList(node) { - return new List().appendData(node); - }, - getFirstListNode(list) { - return list && list.first; - }, - getLastListNode(list) { - return list && list.last; - }, - - parseWithFallback(consumer, fallback) { - const startToken = this.tokenIndex; - - try { - return consumer.call(this); - } catch (e) { - if (onParseErrorThrow) { - throw e; - } - - const fallbackNode = fallback.call(this, startToken); - - onParseErrorThrow = true; - onParseError(e, fallbackNode); - onParseErrorThrow = false; - - return fallbackNode; - } - }, - - lookupNonWSType(offset) { - let type; - - do { - type = this.lookupType(offset++); - if (type !== WhiteSpace) { - return type; - } - } while (type !== NULL); - - return NULL; - }, - - charCodeAt(offset) { - return offset >= 0 && offset < source.length ? source.charCodeAt(offset) : 0; - }, - substring(offsetStart, offsetEnd) { - return source.substring(offsetStart, offsetEnd); - }, - substrToCursor(start) { - return this.source.substring(start, this.tokenStart); - }, - - cmpChar(offset, charCode) { - return cmpChar(source, offset, charCode); - }, - cmpStr(offsetStart, offsetEnd, str) { - return cmpStr(source, offsetStart, offsetEnd, str); - }, - - consume(tokenType) { - const start = this.tokenStart; - - this.eat(tokenType); - - return this.substrToCursor(start); - }, - consumeFunctionName() { - const name = source.substring(this.tokenStart, this.tokenEnd - 1); - - this.eat(FunctionToken); - - return name; - }, - consumeNumber(type) { - const number = source.substring(this.tokenStart, consumeNumber(source, this.tokenStart)); - - this.eat(type); - - return number; - }, - - eat(tokenType) { - if (this.tokenType !== tokenType) { - const tokenName = tokenNames[tokenType].slice(0, -6).replace(/-/g, ' ').replace(/^./, m => m.toUpperCase()); - let message = `${/[[\](){}]/.test(tokenName) ? `"${tokenName}"` : tokenName} is expected`; - let offset = this.tokenStart; - - // tweak message and offset - switch (tokenType) { - case Ident: - // when identifier is expected but there is a function or url - if (this.tokenType === FunctionToken || this.tokenType === Url) { - offset = this.tokenEnd - 1; - message = 'Identifier is expected but function found'; - } else { - message = 'Identifier is expected'; - } - break; - - case Hash: - if (this.isDelim(NUMBERSIGN)) { - this.next(); - offset++; - message = 'Name is expected'; - } - break; - - case Percentage: - if (this.tokenType === NumberToken) { - offset = this.tokenEnd; - message = 'Percent sign is expected'; - } - break; - } - - this.error(message, offset); - } - - this.next(); - }, - eatIdent(name) { - if (this.tokenType !== Ident || this.lookupValue(0, name) === false) { - this.error(`Identifier "${name}" is expected`); - } - - this.next(); - }, - eatDelim(code) { - if (!this.isDelim(code)) { - this.error(`Delim "${String.fromCharCode(code)}" is expected`); - } - - this.next(); - }, - - getLocation(start, end) { - if (needPositions) { - return locationMap.getLocationRange( - start, - end, - filename - ); - } - - return null; - }, - getLocationFromList(list) { - if (needPositions) { - const head = this.getFirstListNode(list); - const tail = this.getLastListNode(list); - return locationMap.getLocationRange( - head !== null ? head.loc.start.offset - locationMap.startOffset : this.tokenStart, - tail !== null ? tail.loc.end.offset - locationMap.startOffset : this.tokenStart, - filename - ); - } - - return null; - }, - - error(message, offset) { - const location = typeof offset !== 'undefined' && offset < source.length - ? locationMap.getLocation(offset) - : this.eof - ? locationMap.getLocation(findWhiteSpaceStart(source, source.length - 1)) - : locationMap.getLocation(this.tokenStart); - - throw new SyntaxError( - message || 'Unexpected input', - source, - location.offset, - location.line, - location.column - ); - } - }); - - const parse = function(source_, options) { - source = source_; - options = options || {}; - - parser.setSource(source, tokenize); - locationMap.setSource( - source, - options.offset, - options.line, - options.column - ); - - filename = options.filename || '<unknown>'; - needPositions = Boolean(options.positions); - onParseError = typeof options.onParseError === 'function' ? options.onParseError : NOOP; - onParseErrorThrow = false; - - parser.parseAtrulePrelude = 'parseAtrulePrelude' in options ? Boolean(options.parseAtrulePrelude) : true; - parser.parseRulePrelude = 'parseRulePrelude' in options ? Boolean(options.parseRulePrelude) : true; - parser.parseValue = 'parseValue' in options ? Boolean(options.parseValue) : true; - parser.parseCustomProperty = 'parseCustomProperty' in options ? Boolean(options.parseCustomProperty) : false; - - const { context = 'default', onComment } = options; - - if (context in parser.context === false) { - throw new Error('Unknown context `' + context + '`'); - } - - if (typeof onComment === 'function') { - parser.forEachToken((type, start, end) => { - if (type === Comment) { - const loc = parser.getLocation(start, end); - const value = cmpStr(source, end - 2, end, '*/') - ? source.slice(start + 2, end - 2) - : source.slice(start + 2, end); - - onComment(value, loc); - } - }); - } - - const ast = parser.context[context].call(parser, options); - - if (!parser.eof) { - parser.error(); - } - - return ast; - }; - - return Object.assign(parse, { - SyntaxError, - config: parser.config - }); -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/parser/index.js b/node_modules/csso/node_modules/css-tree/lib/parser/index.js deleted file mode 100644 index 7cee62ec..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/parser/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import { createParser } from './create.js'; -import config from '../syntax/config/parser.js'; - -export default createParser(config); diff --git a/node_modules/csso/node_modules/css-tree/lib/parser/parse-selector.js b/node_modules/csso/node_modules/css-tree/lib/parser/parse-selector.js deleted file mode 100644 index 05b539a1..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/parser/parse-selector.js +++ /dev/null @@ -1,4 +0,0 @@ -import { createParser } from './create.js'; -import config from '../syntax/config/parser-selector.js'; - -export default createParser(config); diff --git a/node_modules/csso/node_modules/css-tree/lib/parser/sequence.js b/node_modules/csso/node_modules/css-tree/lib/parser/sequence.js deleted file mode 100644 index 47d1ccd2..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/parser/sequence.js +++ /dev/null @@ -1,43 +0,0 @@ -import { WhiteSpace, Comment } from '../tokenizer/index.js'; - -export function readSequence(recognizer) { - const children = this.createList(); - let space = false; - const context = { - recognizer - }; - - while (!this.eof) { - switch (this.tokenType) { - case Comment: - this.next(); - continue; - - case WhiteSpace: - space = true; - this.next(); - continue; - } - - let child = recognizer.getNode.call(this, context); - - if (child === undefined) { - break; - } - - if (space) { - if (recognizer.onWhiteSpace) { - recognizer.onWhiteSpace.call(this, child, children, context); - } - space = false; - } - - children.push(child); - } - - if (space && recognizer.onWhiteSpace) { - recognizer.onWhiteSpace.call(this, null, children, context); - } - - return children; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/font-face.js b/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/font-face.js deleted file mode 100644 index 48a0570a..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/font-face.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - parse: { - prelude: null, - block() { - return this.Block(true); - } - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/import.js b/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/import.js deleted file mode 100644 index 7403ad9e..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/import.js +++ /dev/null @@ -1,39 +0,0 @@ -import { - String as StringToken, - Ident, - Url, - Function as FunctionToken, - LeftParenthesis -} from '../../tokenizer/index.js'; - -export default { - parse: { - prelude() { - const children = this.createList(); - - this.skipSC(); - - switch (this.tokenType) { - case StringToken: - children.push(this.String()); - break; - - case Url: - case FunctionToken: - children.push(this.Url()); - break; - - default: - this.error('String or url() is expected'); - } - - if (this.lookupNonWSType(0) === Ident || - this.lookupNonWSType(0) === LeftParenthesis) { - children.push(this.MediaQueryList()); - } - - return children; - }, - block: null - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/index.js b/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/index.js deleted file mode 100644 index 782842cf..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import fontFace from './font-face.js'; -import importAtrule from './import.js'; -import media from './media.js'; -import page from './page.js'; -import supports from './supports.js'; - -export default { - 'font-face': fontFace, - 'import': importAtrule, - media, - page, - supports -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/media.js b/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/media.js deleted file mode 100644 index 66f77ca8..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/media.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - parse: { - prelude() { - return this.createSingleNodeList( - this.MediaQueryList() - ); - }, - block() { - return this.Block(false); - } - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/page.js b/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/page.js deleted file mode 100644 index 99fc15e5..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/page.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - parse: { - prelude() { - return this.createSingleNodeList( - this.SelectorList() - ); - }, - block() { - return this.Block(true); - } - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/supports.js b/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/supports.js deleted file mode 100644 index fd06357e..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/atrule/supports.js +++ /dev/null @@ -1,80 +0,0 @@ -import { - WhiteSpace, - Comment, - Ident, - Function, - Colon, - LeftParenthesis -} from '../../tokenizer/index.js'; - -function consumeRaw() { - return this.createSingleNodeList( - this.Raw(this.tokenIndex, null, false) - ); -} - -function parentheses() { - this.skipSC(); - - if (this.tokenType === Ident && - this.lookupNonWSType(1) === Colon) { - return this.createSingleNodeList( - this.Declaration() - ); - } - - return readSequence.call(this); -} - -function readSequence() { - const children = this.createList(); - let child; - - this.skipSC(); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case Comment: - case WhiteSpace: - this.next(); - continue; - - case Function: - child = this.Function(consumeRaw, this.scope.AtrulePrelude); - break; - - case Ident: - child = this.Identifier(); - break; - - case LeftParenthesis: - child = this.Parentheses(parentheses, this.scope.AtrulePrelude); - break; - - default: - break scan; - } - - children.push(child); - } - - return children; -} - -export default { - parse: { - prelude() { - const children = readSequence.call(this); - - if (this.getFirstListNode(children) === null) { - this.error('Condition is expected'); - } - - return children; - }, - block() { - return this.Block(false); - } - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/config/generator.js b/node_modules/csso/node_modules/css-tree/lib/syntax/config/generator.js deleted file mode 100644 index 82e874c4..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/config/generator.js +++ /dev/null @@ -1,5 +0,0 @@ -import * as node from '../node/index-generate.js'; - -export default { - node -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/config/lexer.js b/node_modules/csso/node_modules/css-tree/lib/syntax/config/lexer.js deleted file mode 100644 index d2119147..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/config/lexer.js +++ /dev/null @@ -1,8 +0,0 @@ -import definitions from '../../data.js'; -import * as node from '../node/index.js'; - -export default { - generic: true, - ...definitions, - node -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/config/mix.js b/node_modules/csso/node_modules/css-tree/lib/syntax/config/mix.js deleted file mode 100644 index 782e2c40..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/config/mix.js +++ /dev/null @@ -1,138 +0,0 @@ -const { hasOwnProperty } = Object.prototype; -const shape = { - generic: true, - types: appendOrAssign, - atrules: { - prelude: appendOrAssignOrNull, - descriptors: appendOrAssignOrNull - }, - properties: appendOrAssign, - parseContext: assign, - scope: deepAssign, - atrule: ['parse'], - pseudo: ['parse'], - node: ['name', 'structure', 'parse', 'generate', 'walkContext'] -}; - -function isObject(value) { - return value && value.constructor === Object; -} - -function copy(value) { - return isObject(value) - ? { ...value } - : value; -} - -function assign(dest, src) { - return Object.assign(dest, src); -} - -function deepAssign(dest, src) { - for (const key in src) { - if (hasOwnProperty.call(src, key)) { - if (isObject(dest[key])) { - deepAssign(dest[key], src[key]); - } else { - dest[key] = copy(src[key]); - } - } - } - - return dest; -} - -function append(a, b) { - if (typeof b === 'string' && /^\s*\|/.test(b)) { - return typeof a === 'string' - ? a + b - : b.replace(/^\s*\|\s*/, ''); - } - - return b || null; -} - -function appendOrAssign(a, b) { - if (typeof b === 'string') { - return append(a, b); - } - - const result = { ...a }; - for (let key in b) { - if (hasOwnProperty.call(b, key)) { - result[key] = append(hasOwnProperty.call(a, key) ? a[key] : undefined, b[key]); - } - } - - return result; -} - -function appendOrAssignOrNull(a, b) { - const result = appendOrAssign(a, b); - - return !isObject(result) || Object.keys(result).length - ? result - : null; -} - -function mix(dest, src, shape) { - for (const key in shape) { - if (hasOwnProperty.call(shape, key) === false) { - continue; - } - - if (shape[key] === true) { - if (hasOwnProperty.call(src, key)) { - dest[key] = copy(src[key]); - } - } else if (shape[key]) { - if (typeof shape[key] === 'function') { - const fn = shape[key]; - dest[key] = fn({}, dest[key]); - dest[key] = fn(dest[key] || {}, src[key]); - } else if (isObject(shape[key])) { - const result = {}; - - for (let name in dest[key]) { - result[name] = mix({}, dest[key][name], shape[key]); - } - - for (let name in src[key]) { - result[name] = mix(result[name] || {}, src[key][name], shape[key]); - } - - dest[key] = result; - } else if (Array.isArray(shape[key])) { - const res = {}; - const innerShape = shape[key].reduce(function(s, k) { - s[k] = true; - return s; - }, {}); - - for (const [name, value] of Object.entries(dest[key] || {})) { - res[name] = {}; - if (value) { - mix(res[name], value, innerShape); - } - } - - for (const name in src[key]) { - if (hasOwnProperty.call(src[key], name)) { - if (!res[name]) { - res[name] = {}; - } - - if (src[key] && src[key][name]) { - mix(res[name], src[key][name], innerShape); - } - } - } - - dest[key] = res; - } - } - } - return dest; -} - -export default (dest, src) => mix(dest, src, shape); diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/config/parser-selector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/config/parser-selector.js deleted file mode 100644 index c9e0ee2b..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/config/parser-selector.js +++ /dev/null @@ -1,15 +0,0 @@ -import { Selector } from '../scope/index.js'; -import pseudo from '../pseudo/index.js'; -import * as node from '../node/index-parse-selector.js'; - -export default { - parseContext: { - default: 'SelectorList', - selectorList: 'SelectorList', - selector: 'Selector' - }, - scope: { Selector }, - atrule: {}, - pseudo, - node -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/config/parser.js b/node_modules/csso/node_modules/css-tree/lib/syntax/config/parser.js deleted file mode 100644 index fe2cae23..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/config/parser.js +++ /dev/null @@ -1,30 +0,0 @@ -import * as scope from '../scope/index.js'; -import atrule from '../atrule/index.js'; -import pseudo from '../pseudo/index.js'; -import * as node from '../node/index-parse.js'; - -export default { - parseContext: { - default: 'StyleSheet', - stylesheet: 'StyleSheet', - atrule: 'Atrule', - atrulePrelude(options) { - return this.AtrulePrelude(options.atrule ? String(options.atrule) : null); - }, - mediaQueryList: 'MediaQueryList', - mediaQuery: 'MediaQuery', - rule: 'Rule', - selectorList: 'SelectorList', - selector: 'Selector', - block() { - return this.Block(true); - }, - declarationList: 'DeclarationList', - declaration: 'Declaration', - value: 'Value' - }, - scope, - atrule, - pseudo, - node -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/config/walker.js b/node_modules/csso/node_modules/css-tree/lib/syntax/config/walker.js deleted file mode 100644 index 215d0248..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/config/walker.js +++ /dev/null @@ -1,5 +0,0 @@ -import * as node from '../node/index.js'; - -export default { - node -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/create.js b/node_modules/csso/node_modules/css-tree/lib/syntax/create.js deleted file mode 100644 index 7f295c11..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/create.js +++ /dev/null @@ -1,53 +0,0 @@ -import { tokenize } from '../tokenizer/index.js'; -import { createParser } from '../parser/create.js'; -import { createGenerator } from '../generator/create.js'; -import { createConvertor } from '../convertor/create.js'; -import { createWalker } from '../walker/create.js'; -import { Lexer } from '../lexer/Lexer.js'; -import mix from './config/mix.js'; - -function createSyntax(config) { - const parse = createParser(config); - const walk = createWalker(config); - const generate = createGenerator(config); - const { fromPlainObject, toPlainObject } = createConvertor(walk); - - const syntax = { - lexer: null, - createLexer: config => new Lexer(config, syntax, syntax.lexer.structure), - - tokenize, - parse, - generate, - - walk, - find: walk.find, - findLast: walk.findLast, - findAll: walk.findAll, - - fromPlainObject, - toPlainObject, - - fork(extension) { - const base = mix({}, config); // copy of config - - return createSyntax( - typeof extension === 'function' - ? extension(base, Object.assign) - : mix(base, extension) - ); - } - }; - - syntax.lexer = new Lexer({ - generic: true, - types: config.types, - atrules: config.atrules, - properties: config.properties, - node: config.node - }, syntax); - - return syntax; -}; - -export default config => createSyntax(mix({}, config)); diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/function/expression.js b/node_modules/csso/node_modules/css-tree/lib/syntax/function/expression.js deleted file mode 100644 index c311c255..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/function/expression.js +++ /dev/null @@ -1,7 +0,0 @@ -// legacy IE function -// expression( <any-value> ) -export default function() { - return this.createSingleNodeList( - this.Raw(this.tokenIndex, null, false) - ); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/function/var.js b/node_modules/csso/node_modules/css-tree/lib/syntax/function/var.js deleted file mode 100644 index 8da7efe5..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/function/var.js +++ /dev/null @@ -1,39 +0,0 @@ -import { Comma, WhiteSpace } from '../../tokenizer/index.js'; - -// var( <ident> , <value>? ) -export default function() { - const children = this.createList(); - - this.skipSC(); - - // NOTE: Don't check more than a first argument is an ident, rest checks are for lexer - children.push(this.Identifier()); - - this.skipSC(); - - if (this.tokenType === Comma) { - children.push(this.Operator()); - - const startIndex = this.tokenIndex; - const value = this.parseCustomProperty - ? this.Value(null) - : this.Raw(this.tokenIndex, this.consumeUntilExclamationMarkOrSemicolon, false); - - if (value.type === 'Value' && value.children.isEmpty) { - for (let offset = startIndex - this.tokenIndex; offset <= 0; offset++) { - if (this.lookupType(offset) === WhiteSpace) { - value.children.appendData({ - type: 'WhiteSpace', - loc: null, - value: ' ' - }); - break; - } - } - } - - children.push(value); - } - - return children; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/index.js b/node_modules/csso/node_modules/css-tree/lib/syntax/index.js deleted file mode 100644 index c8c9152e..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import createSyntax from './create.js'; -import lexerConfig from './config/lexer.js'; -import parserConfig from './config/parser.js'; -import walkerConfig from './config/walker.js'; - -export default createSyntax({ - ...lexerConfig, - ...parserConfig, - ...walkerConfig -}); diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/AnPlusB.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/AnPlusB.js deleted file mode 100644 index 05c7e44f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/AnPlusB.js +++ /dev/null @@ -1,292 +0,0 @@ -import { - isDigit, - WhiteSpace, - Comment, - Ident, - Number, - Dimension -} from '../../tokenizer/index.js'; - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const N = 0x006E; // U+006E LATIN SMALL LETTER N (n) -const DISALLOW_SIGN = true; -const ALLOW_SIGN = false; - -function checkInteger(offset, disallowSign) { - let pos = this.tokenStart + offset; - const code = this.charCodeAt(pos); - - if (code === PLUSSIGN || code === HYPHENMINUS) { - if (disallowSign) { - this.error('Number sign is not allowed'); - } - pos++; - } - - for (; pos < this.tokenEnd; pos++) { - if (!isDigit(this.charCodeAt(pos))) { - this.error('Integer is expected', pos); - } - } -} - -function checkTokenIsInteger(disallowSign) { - return checkInteger.call(this, 0, disallowSign); -} - -function expectCharCode(offset, code) { - if (!this.cmpChar(this.tokenStart + offset, code)) { - let msg = ''; - - switch (code) { - case N: - msg = 'N is expected'; - break; - case HYPHENMINUS: - msg = 'HyphenMinus is expected'; - break; - } - - this.error(msg, this.tokenStart + offset); - } -} - -// ... <signed-integer> -// ... ['+' | '-'] <signless-integer> -function consumeB() { - let offset = 0; - let sign = 0; - let type = this.tokenType; - - while (type === WhiteSpace || type === Comment) { - type = this.lookupType(++offset); - } - - if (type !== Number) { - if (this.isDelim(PLUSSIGN, offset) || - this.isDelim(HYPHENMINUS, offset)) { - sign = this.isDelim(PLUSSIGN, offset) ? PLUSSIGN : HYPHENMINUS; - - do { - type = this.lookupType(++offset); - } while (type === WhiteSpace || type === Comment); - - if (type !== Number) { - this.skip(offset); - checkTokenIsInteger.call(this, DISALLOW_SIGN); - } - } else { - return null; - } - } - - if (offset > 0) { - this.skip(offset); - } - - if (sign === 0) { - type = this.charCodeAt(this.tokenStart); - if (type !== PLUSSIGN && type !== HYPHENMINUS) { - this.error('Number sign is expected'); - } - } - - checkTokenIsInteger.call(this, sign !== 0); - return sign === HYPHENMINUS ? '-' + this.consume(Number) : this.consume(Number); -} - -// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb -export const name = 'AnPlusB'; -export const structure = { - a: [String, null], - b: [String, null] -}; - -export function parse() { - /* eslint-disable brace-style*/ - const start = this.tokenStart; - let a = null; - let b = null; - - // <integer> - if (this.tokenType === Number) { - checkTokenIsInteger.call(this, ALLOW_SIGN); - b = this.consume(Number); - } - - // -n - // -n <signed-integer> - // -n ['+' | '-'] <signless-integer> - // -n- <signless-integer> - // <dashndashdigit-ident> - else if (this.tokenType === Ident && this.cmpChar(this.tokenStart, HYPHENMINUS)) { - a = '-1'; - - expectCharCode.call(this, 1, N); - - switch (this.tokenEnd - this.tokenStart) { - // -n - // -n <signed-integer> - // -n ['+' | '-'] <signless-integer> - case 2: - this.next(); - b = consumeB.call(this); - break; - - // -n- <signless-integer> - case 3: - expectCharCode.call(this, 2, HYPHENMINUS); - - this.next(); - this.skipSC(); - - checkTokenIsInteger.call(this, DISALLOW_SIGN); - - b = '-' + this.consume(Number); - break; - - // <dashndashdigit-ident> - default: - expectCharCode.call(this, 2, HYPHENMINUS); - checkInteger.call(this, 3, DISALLOW_SIGN); - this.next(); - - b = this.substrToCursor(start + 2); - } - } - - // '+'? n - // '+'? n <signed-integer> - // '+'? n ['+' | '-'] <signless-integer> - // '+'? n- <signless-integer> - // '+'? <ndashdigit-ident> - else if (this.tokenType === Ident || (this.isDelim(PLUSSIGN) && this.lookupType(1) === Ident)) { - let sign = 0; - a = '1'; - - // just ignore a plus - if (this.isDelim(PLUSSIGN)) { - sign = 1; - this.next(); - } - - expectCharCode.call(this, 0, N); - - switch (this.tokenEnd - this.tokenStart) { - // '+'? n - // '+'? n <signed-integer> - // '+'? n ['+' | '-'] <signless-integer> - case 1: - this.next(); - b = consumeB.call(this); - break; - - // '+'? n- <signless-integer> - case 2: - expectCharCode.call(this, 1, HYPHENMINUS); - - this.next(); - this.skipSC(); - - checkTokenIsInteger.call(this, DISALLOW_SIGN); - - b = '-' + this.consume(Number); - break; - - // '+'? <ndashdigit-ident> - default: - expectCharCode.call(this, 1, HYPHENMINUS); - checkInteger.call(this, 2, DISALLOW_SIGN); - this.next(); - - b = this.substrToCursor(start + sign + 1); - } - } - - // <ndashdigit-dimension> - // <ndash-dimension> <signless-integer> - // <n-dimension> - // <n-dimension> <signed-integer> - // <n-dimension> ['+' | '-'] <signless-integer> - else if (this.tokenType === Dimension) { - const code = this.charCodeAt(this.tokenStart); - const sign = code === PLUSSIGN || code === HYPHENMINUS; - let i = this.tokenStart + sign; - - for (; i < this.tokenEnd; i++) { - if (!isDigit(this.charCodeAt(i))) { - break; - } - } - - if (i === this.tokenStart + sign) { - this.error('Integer is expected', this.tokenStart + sign); - } - - expectCharCode.call(this, i - this.tokenStart, N); - a = this.substring(start, i); - - // <n-dimension> - // <n-dimension> <signed-integer> - // <n-dimension> ['+' | '-'] <signless-integer> - if (i + 1 === this.tokenEnd) { - this.next(); - b = consumeB.call(this); - } else { - expectCharCode.call(this, i - this.tokenStart + 1, HYPHENMINUS); - - // <ndash-dimension> <signless-integer> - if (i + 2 === this.tokenEnd) { - this.next(); - this.skipSC(); - checkTokenIsInteger.call(this, DISALLOW_SIGN); - b = '-' + this.consume(Number); - } - // <ndashdigit-dimension> - else { - checkInteger.call(this, i - this.tokenStart + 2, DISALLOW_SIGN); - this.next(); - b = this.substrToCursor(i + 1); - } - } - } else { - this.error(); - } - - if (a !== null && a.charCodeAt(0) === PLUSSIGN) { - a = a.substr(1); - } - - if (b !== null && b.charCodeAt(0) === PLUSSIGN) { - b = b.substr(1); - } - - return { - type: 'AnPlusB', - loc: this.getLocation(start, this.tokenStart), - a, - b - }; -} - -export function generate(node) { - if (node.a) { - const a = - node.a === '+1' && 'n' || - node.a === '1' && 'n' || - node.a === '-1' && '-n' || - node.a + 'n'; - - if (node.b) { - const b = node.b[0] === '-' || node.b[0] === '+' - ? node.b - : '+' + node.b; - this.tokenize(a + b); - } else { - this.tokenize(a); - } - } else { - this.tokenize(node.b); - } -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Atrule.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Atrule.js deleted file mode 100644 index f19a7046..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Atrule.js +++ /dev/null @@ -1,100 +0,0 @@ -import { - AtKeyword, - Semicolon, - LeftCurlyBracket, - RightCurlyBracket -} from '../../tokenizer/index.js'; - -function consumeRaw(startToken) { - return this.Raw(startToken, this.consumeUntilLeftCurlyBracketOrSemicolon, true); -} - -function isDeclarationBlockAtrule() { - for (let offset = 1, type; type = this.lookupType(offset); offset++) { - if (type === RightCurlyBracket) { - return true; - } - - if (type === LeftCurlyBracket || - type === AtKeyword) { - return false; - } - } - - return false; -} - - -export const name = 'Atrule'; -export const walkContext = 'atrule'; -export const structure = { - name: String, - prelude: ['AtrulePrelude', 'Raw', null], - block: ['Block', null] -}; - -export function parse() { - const start = this.tokenStart; - let name; - let nameLowerCase; - let prelude = null; - let block = null; - - this.eat(AtKeyword); - - name = this.substrToCursor(start + 1); - nameLowerCase = name.toLowerCase(); - this.skipSC(); - - // parse prelude - if (this.eof === false && - this.tokenType !== LeftCurlyBracket && - this.tokenType !== Semicolon) { - if (this.parseAtrulePrelude) { - prelude = this.parseWithFallback(this.AtrulePrelude.bind(this, name), consumeRaw); - } else { - prelude = consumeRaw.call(this, this.tokenIndex); - } - - this.skipSC(); - } - - switch (this.tokenType) { - case Semicolon: - this.next(); - break; - - case LeftCurlyBracket: - if (hasOwnProperty.call(this.atrule, nameLowerCase) && - typeof this.atrule[nameLowerCase].block === 'function') { - block = this.atrule[nameLowerCase].block.call(this); - } else { - // TODO: should consume block content as Raw? - block = this.Block(isDeclarationBlockAtrule.call(this)); - } - - break; - } - - return { - type: 'Atrule', - loc: this.getLocation(start, this.tokenStart), - name, - prelude, - block - }; -} - -export function generate(node) { - this.token(AtKeyword, '@' + node.name); - - if (node.prelude !== null) { - this.node(node.prelude); - } - - if (node.block) { - this.node(node.block); - } else { - this.token(Semicolon, ';'); - } -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/AtrulePrelude.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/AtrulePrelude.js deleted file mode 100644 index 5b5645a0..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/AtrulePrelude.js +++ /dev/null @@ -1,47 +0,0 @@ -import { - Semicolon, - LeftCurlyBracket -} from '../../tokenizer/index.js'; - -export const name = 'AtrulePrelude'; -export const walkContext = 'atrulePrelude'; -export const structure = { - children: [[]] -}; - -export function parse(name) { - let children = null; - - if (name !== null) { - name = name.toLowerCase(); - } - - this.skipSC(); - - if (hasOwnProperty.call(this.atrule, name) && - typeof this.atrule[name].prelude === 'function') { - // custom consumer - children = this.atrule[name].prelude.call(this); - } else { - // default consumer - children = this.readSequence(this.scope.AtrulePrelude); - } - - this.skipSC(); - - if (this.eof !== true && - this.tokenType !== LeftCurlyBracket && - this.tokenType !== Semicolon) { - this.error('Semicolon or block is expected'); - } - - return { - type: 'AtrulePrelude', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/AttributeSelector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/AttributeSelector.js deleted file mode 100644 index 8578dada..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/AttributeSelector.js +++ /dev/null @@ -1,147 +0,0 @@ -import { - Ident, - String as StringToken, - Delim, - LeftSquareBracket, - RightSquareBracket -} from '../../tokenizer/index.js'; - -const DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($) -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const EQUALSSIGN = 0x003D; // U+003D EQUALS SIGN (=) -const CIRCUMFLEXACCENT = 0x005E; // U+005E (^) -const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) -const TILDE = 0x007E; // U+007E TILDE (~) - -function getAttributeName() { - if (this.eof) { - this.error('Unexpected end of input'); - } - - const start = this.tokenStart; - let expectIdent = false; - - if (this.isDelim(ASTERISK)) { - expectIdent = true; - this.next(); - } else if (!this.isDelim(VERTICALLINE)) { - this.eat(Ident); - } - - if (this.isDelim(VERTICALLINE)) { - if (this.charCodeAt(this.tokenStart + 1) !== EQUALSSIGN) { - this.next(); - this.eat(Ident); - } else if (expectIdent) { - this.error('Identifier is expected', this.tokenEnd); - } - } else if (expectIdent) { - this.error('Vertical line is expected'); - } - - return { - type: 'Identifier', - loc: this.getLocation(start, this.tokenStart), - name: this.substrToCursor(start) - }; -} - -function getOperator() { - const start = this.tokenStart; - const code = this.charCodeAt(start); - - if (code !== EQUALSSIGN && // = - code !== TILDE && // ~= - code !== CIRCUMFLEXACCENT && // ^= - code !== DOLLARSIGN && // $= - code !== ASTERISK && // *= - code !== VERTICALLINE // |= - ) { - this.error('Attribute selector (=, ~=, ^=, $=, *=, |=) is expected'); - } - - this.next(); - - if (code !== EQUALSSIGN) { - if (!this.isDelim(EQUALSSIGN)) { - this.error('Equal sign is expected'); - } - - this.next(); - } - - return this.substrToCursor(start); -} - -// '[' <wq-name> ']' -// '[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']' -export const name = 'AttributeSelector'; -export const structure = { - name: 'Identifier', - matcher: [String, null], - value: ['String', 'Identifier', null], - flags: [String, null] -}; - -export function parse() { - const start = this.tokenStart; - let name; - let matcher = null; - let value = null; - let flags = null; - - this.eat(LeftSquareBracket); - this.skipSC(); - - name = getAttributeName.call(this); - this.skipSC(); - - if (this.tokenType !== RightSquareBracket) { - // avoid case `[name i]` - if (this.tokenType !== Ident) { - matcher = getOperator.call(this); - - this.skipSC(); - - value = this.tokenType === StringToken - ? this.String() - : this.Identifier(); - - this.skipSC(); - } - - // attribute flags - if (this.tokenType === Ident) { - flags = this.consume(Ident); - - this.skipSC(); - } - } - - this.eat(RightSquareBracket); - - return { - type: 'AttributeSelector', - loc: this.getLocation(start, this.tokenStart), - name, - matcher, - value, - flags - }; -} - -export function generate(node) { - this.token(Delim, '['); - this.node(node.name); - - if (node.matcher !== null) { - this.tokenize(node.matcher); - this.node(node.value); - } - - if (node.flags !== null) { - this.token(Ident, node.flags); - } - - this.token(Delim, ']'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Block.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Block.js deleted file mode 100644 index 543607e2..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Block.js +++ /dev/null @@ -1,89 +0,0 @@ -import { - WhiteSpace, - Comment, - Semicolon, - AtKeyword, - LeftCurlyBracket, - RightCurlyBracket -} from '../../tokenizer/index.js'; - -function consumeRaw(startToken) { - return this.Raw(startToken, null, true); -} -function consumeRule() { - return this.parseWithFallback(this.Rule, consumeRaw); -} -function consumeRawDeclaration(startToken) { - return this.Raw(startToken, this.consumeUntilSemicolonIncluded, true); -} -function consumeDeclaration() { - if (this.tokenType === Semicolon) { - return consumeRawDeclaration.call(this, this.tokenIndex); - } - - const node = this.parseWithFallback(this.Declaration, consumeRawDeclaration); - - if (this.tokenType === Semicolon) { - this.next(); - } - - return node; -} - -export const name = 'Block'; -export const walkContext = 'block'; -export const structure = { - children: [[ - 'Atrule', - 'Rule', - 'Declaration' - ]] -}; - -export function parse(isDeclaration) { - const consumer = isDeclaration ? consumeDeclaration : consumeRule; - const start = this.tokenStart; - let children = this.createList(); - - this.eat(LeftCurlyBracket); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case RightCurlyBracket: - break scan; - - case WhiteSpace: - case Comment: - this.next(); - break; - - case AtKeyword: - children.push(this.parseWithFallback(this.Atrule, consumeRaw)); - break; - - default: - children.push(consumer.call(this)); - } - } - - if (!this.eof) { - this.eat(RightCurlyBracket); - } - - return { - type: 'Block', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -export function generate(node) { - this.token(LeftCurlyBracket, '{'); - this.children(node, prev => { - if (prev.type === 'Declaration') { - this.token(Semicolon, ';'); - } - }); - this.token(RightCurlyBracket, '}'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Brackets.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Brackets.js deleted file mode 100644 index 1d97a4c0..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Brackets.js +++ /dev/null @@ -1,35 +0,0 @@ -import { - Delim, - LeftSquareBracket, - RightSquareBracket -} from '../../tokenizer/index.js'; - -export const name = 'Brackets'; -export const structure = { - children: [[]] -}; - -export function parse(readSequence, recognizer) { - const start = this.tokenStart; - let children = null; - - this.eat(LeftSquareBracket); - - children = readSequence.call(this, recognizer); - - if (!this.eof) { - this.eat(RightSquareBracket); - } - - return { - type: 'Brackets', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -export function generate(node) { - this.token(Delim, '['); - this.children(node); - this.token(Delim, ']'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/CDC.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/CDC.js deleted file mode 100644 index efed4a66..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/CDC.js +++ /dev/null @@ -1,19 +0,0 @@ -import { CDC } from '../../tokenizer/index.js'; - -export const name = 'CDC'; -export const structure = []; - -export function parse() { - const start = this.tokenStart; - - this.eat(CDC); // --> - - return { - type: 'CDC', - loc: this.getLocation(start, this.tokenStart) - }; -} - -export function generate() { - this.token(CDC, '-->'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/CDO.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/CDO.js deleted file mode 100644 index 3a9de89f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/CDO.js +++ /dev/null @@ -1,19 +0,0 @@ -import { CDO } from '../../tokenizer/index.js'; - -export const name = 'CDO'; -export const structure = []; - -export function parse() { - const start = this.tokenStart; - - this.eat(CDO); // <!-- - - return { - type: 'CDO', - loc: this.getLocation(start, this.tokenStart) - }; -} - -export function generate() { - this.token(CDO, '<!--'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/ClassSelector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/ClassSelector.js deleted file mode 100644 index febb0d96..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/ClassSelector.js +++ /dev/null @@ -1,24 +0,0 @@ -import { Delim, Ident } from '../../tokenizer/index.js'; - -const FULLSTOP = 0x002E; // U+002E FULL STOP (.) - -// '.' ident -export const name = 'ClassSelector'; -export const structure = { - name: String -}; - -export function parse() { - this.eatDelim(FULLSTOP); - - return { - type: 'ClassSelector', - loc: this.getLocation(this.tokenStart - 1, this.tokenEnd), - name: this.consume(Ident) - }; -} - -export function generate(node) { - this.token(Delim, '.'); - this.token(Ident, node.name); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Combinator.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Combinator.js deleted file mode 100644 index 2e5bb1fe..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Combinator.js +++ /dev/null @@ -1,54 +0,0 @@ -import { WhiteSpace, Delim } from '../../tokenizer/index.js'; - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) -const GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>) -const TILDE = 0x007E; // U+007E TILDE (~) - -export const name = 'Combinator'; -export const structure = { - name: String -}; - -// + | > | ~ | /deep/ -export function parse() { - const start = this.tokenStart; - let name; - - switch (this.tokenType) { - case WhiteSpace: - name = ' '; - break; - - case Delim: - switch (this.charCodeAt(this.tokenStart)) { - case GREATERTHANSIGN: - case PLUSSIGN: - case TILDE: - this.next(); - break; - - case SOLIDUS: - this.next(); - this.eatIdent('deep'); - this.eatDelim(SOLIDUS); - break; - - default: - this.error('Combinator is expected'); - } - - name = this.substrToCursor(start); - break; - } - - return { - type: 'Combinator', - loc: this.getLocation(start, this.tokenStart), - name - }; -} - -export function generate(node) { - this.tokenize(node.name); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Comment.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Comment.js deleted file mode 100644 index 8a9d291c..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Comment.js +++ /dev/null @@ -1,33 +0,0 @@ -import { Comment } from '../../tokenizer/index.js'; - -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) - - -export const name = 'Comment'; -export const structure = { - value: String -}; - -export function parse() { - const start = this.tokenStart; - let end = this.tokenEnd; - - this.eat(Comment); - - if ((end - start + 2) >= 2 && - this.charCodeAt(end - 2) === ASTERISK && - this.charCodeAt(end - 1) === SOLIDUS) { - end -= 2; - } - - return { - type: 'Comment', - loc: this.getLocation(start, this.tokenStart), - value: this.substring(start + 2, end) - }; -} - -export function generate(node) { - this.token(Comment, '/*' + node.value + '*/'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Declaration.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Declaration.js deleted file mode 100644 index 49326d58..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Declaration.js +++ /dev/null @@ -1,165 +0,0 @@ -import { isCustomProperty } from '../../utils/names.js'; -import { - Ident, - Hash, - Colon, - Semicolon, - Delim, - WhiteSpace -} from '../../tokenizer/index.js'; - -const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) -const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) -const DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($) -const AMPERSAND = 0x0026; // U+0026 AMPERSAND (&) -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) - -function consumeValueRaw(startToken) { - return this.Raw(startToken, this.consumeUntilExclamationMarkOrSemicolon, true); -} - -function consumeCustomPropertyRaw(startToken) { - return this.Raw(startToken, this.consumeUntilExclamationMarkOrSemicolon, false); -} - -function consumeValue() { - const startValueToken = this.tokenIndex; - const value = this.Value(); - - if (value.type !== 'Raw' && - this.eof === false && - this.tokenType !== Semicolon && - this.isDelim(EXCLAMATIONMARK) === false && - this.isBalanceEdge(startValueToken) === false) { - this.error(); - } - - return value; -} - -export const name = 'Declaration'; -export const walkContext = 'declaration'; -export const structure = { - important: [Boolean, String], - property: String, - value: ['Value', 'Raw'] -}; - -export function parse() { - const start = this.tokenStart; - const startToken = this.tokenIndex; - const property = readProperty.call(this); - const customProperty = isCustomProperty(property); - const parseValue = customProperty ? this.parseCustomProperty : this.parseValue; - const consumeRaw = customProperty ? consumeCustomPropertyRaw : consumeValueRaw; - let important = false; - let value; - - this.skipSC(); - this.eat(Colon); - - const valueStart = this.tokenIndex; - - if (!customProperty) { - this.skipSC(); - } - - if (parseValue) { - value = this.parseWithFallback(consumeValue, consumeRaw); - } else { - value = consumeRaw.call(this, this.tokenIndex); - } - - if (customProperty && value.type === 'Value' && value.children.isEmpty) { - for (let offset = valueStart - this.tokenIndex; offset <= 0; offset++) { - if (this.lookupType(offset) === WhiteSpace) { - value.children.appendData({ - type: 'WhiteSpace', - loc: null, - value: ' ' - }); - break; - } - } - } - - if (this.isDelim(EXCLAMATIONMARK)) { - important = getImportant.call(this); - this.skipSC(); - } - - // Do not include semicolon to range per spec - // https://drafts.csswg.org/css-syntax/#declaration-diagram - - if (this.eof === false && - this.tokenType !== Semicolon && - this.isBalanceEdge(startToken) === false) { - this.error(); - } - - return { - type: 'Declaration', - loc: this.getLocation(start, this.tokenStart), - important, - property, - value - }; -} - -export function generate(node) { - this.token(Ident, node.property); - this.token(Colon, ':'); - this.node(node.value); - - if (node.important) { - this.token(Delim, '!'); - this.token(Ident, node.important === true ? 'important' : node.important); - } -} - -function readProperty() { - const start = this.tokenStart; - - // hacks - if (this.tokenType === Delim) { - switch (this.charCodeAt(this.tokenStart)) { - case ASTERISK: - case DOLLARSIGN: - case PLUSSIGN: - case NUMBERSIGN: - case AMPERSAND: - this.next(); - break; - - // TODO: not sure we should support this hack - case SOLIDUS: - this.next(); - if (this.isDelim(SOLIDUS)) { - this.next(); - } - break; - } - } - - if (this.tokenType === Hash) { - this.eat(Hash); - } else { - this.eat(Ident); - } - - return this.substrToCursor(start); -} - -// ! ws* important -function getImportant() { - this.eat(Delim); - this.skipSC(); - - const important = this.consume(Ident); - - // store original value in case it differ from `important` - // for better original source restoring and hacks like `!ie` support - return important === 'important' ? true : important; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/DeclarationList.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/DeclarationList.js deleted file mode 100644 index 0038d8a9..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/DeclarationList.js +++ /dev/null @@ -1,49 +0,0 @@ -import { - WhiteSpace, - Comment, - Semicolon -} from '../../tokenizer/index.js'; - -function consumeRaw(startToken) { - return this.Raw(startToken, this.consumeUntilSemicolonIncluded, true); -} - -export const name = 'DeclarationList'; -export const structure = { - children: [[ - 'Declaration' - ]] -}; - -export function parse() { - const children = this.createList(); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case WhiteSpace: - case Comment: - case Semicolon: - this.next(); - break; - - default: - children.push(this.parseWithFallback(this.Declaration, consumeRaw)); - } - } - - return { - type: 'DeclarationList', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node, prev => { - if (prev.type === 'Declaration') { - this.token(Semicolon, ';'); - } - }); -} - diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Dimension.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Dimension.js deleted file mode 100644 index 4b9bffc7..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Dimension.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Dimension } from '../../tokenizer/index.js'; - -export const name = 'Dimension'; -export const structure = { - value: String, - unit: String -}; - -export function parse() { - const start = this.tokenStart; - const value = this.consumeNumber(Dimension); - - return { - type: 'Dimension', - loc: this.getLocation(start, this.tokenStart), - value, - unit: this.substring(start + value.length, this.tokenStart) - }; -} - -export function generate(node) { - this.token(Dimension, node.value + node.unit); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Function.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Function.js deleted file mode 100644 index 1fdc4140..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Function.js +++ /dev/null @@ -1,41 +0,0 @@ -import { - Function as FunctionToken, - RightParenthesis -} from '../../tokenizer/index.js'; - - -export const name = 'Function'; -export const walkContext = 'function'; -export const structure = { - name: String, - children: [[]] -}; - -// <function-token> <sequence> ) -export function parse(readSequence, recognizer) { - const start = this.tokenStart; - const name = this.consumeFunctionName(); - const nameLowerCase = name.toLowerCase(); - let children; - - children = recognizer.hasOwnProperty(nameLowerCase) - ? recognizer[nameLowerCase].call(this, recognizer) - : readSequence.call(this, recognizer); - - if (!this.eof) { - this.eat(RightParenthesis); - } - - return { - type: 'Function', - loc: this.getLocation(start, this.tokenStart), - name, - children - }; -} - -export function generate(node) { - this.token(FunctionToken, node.name + '('); - this.children(node); - this.token(RightParenthesis, ')'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Hash.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Hash.js deleted file mode 100644 index b752752c..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Hash.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Hash } from '../../tokenizer/index.js'; - -// '#' ident -export const xxx = 'XXX'; -export const name = 'Hash'; -export const structure = { - value: String -}; -export function parse() { - const start = this.tokenStart; - - this.eat(Hash); - - return { - type: 'Hash', - loc: this.getLocation(start, this.tokenStart), - value: this.substrToCursor(start + 1) - }; -} -export function generate(node) { - this.token(Hash, '#' + node.value); -} - diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/IdSelector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/IdSelector.js deleted file mode 100644 index c85c1b2f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/IdSelector.js +++ /dev/null @@ -1,26 +0,0 @@ -import { Hash, Delim } from '../../tokenizer/index.js'; - -export const name = 'IdSelector'; -export const structure = { - name: String -}; - -export function parse() { - const start = this.tokenStart; - - // TODO: check value is an ident - this.eat(Hash); - - return { - type: 'IdSelector', - loc: this.getLocation(start, this.tokenStart), - name: this.substrToCursor(start + 1) - }; -} - -export function generate(node) { - // Using Delim instead of Hash is a hack to avoid for a whitespace between ident and id-selector - // in safe mode (e.g. "a#id"), because IE11 doesn't allow a sequence <ident-token> <hash-token> - // without a whitespace in values (e.g. "1px solid#000") - this.token(Delim, '#' + node.name); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Identifier.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Identifier.js deleted file mode 100644 index 067c2d02..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Identifier.js +++ /dev/null @@ -1,18 +0,0 @@ -import { Ident } from '../../tokenizer/index.js'; - -export const name = 'Identifier'; -export const structure = { - name: String -}; - -export function parse() { - return { - type: 'Identifier', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - name: this.consume(Ident) - }; -} - -export function generate(node) { - this.token(Ident, node.name); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/MediaFeature.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/MediaFeature.js deleted file mode 100644 index 6776daab..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/MediaFeature.js +++ /dev/null @@ -1,77 +0,0 @@ -import { - Ident, - Number, - Dimension, - LeftParenthesis, - RightParenthesis, - Colon, - Delim -} from '../../tokenizer/index.js'; - -export const name = 'MediaFeature'; -export const structure = { - name: String, - value: ['Identifier', 'Number', 'Dimension', 'Ratio', null] -}; - -export function parse() { - const start = this.tokenStart; - let name; - let value = null; - - this.eat(LeftParenthesis); - this.skipSC(); - - name = this.consume(Ident); - this.skipSC(); - - if (this.tokenType !== RightParenthesis) { - this.eat(Colon); - this.skipSC(); - - switch (this.tokenType) { - case Number: - if (this.lookupNonWSType(1) === Delim) { - value = this.Ratio(); - } else { - value = this.Number(); - } - - break; - - case Dimension: - value = this.Dimension(); - break; - - case Ident: - value = this.Identifier(); - break; - - default: - this.error('Number, dimension, ratio or identifier is expected'); - } - - this.skipSC(); - } - - this.eat(RightParenthesis); - - return { - type: 'MediaFeature', - loc: this.getLocation(start, this.tokenStart), - name, - value - }; -} - -export function generate(node) { - this.token(LeftParenthesis, '('); - this.token(Ident, node.name); - - if (node.value !== null) { - this.token(Colon, ':'); - this.node(node.value); - } - - this.token(RightParenthesis, ')'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/MediaQuery.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/MediaQuery.js deleted file mode 100644 index 6817b49f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/MediaQuery.js +++ /dev/null @@ -1,60 +0,0 @@ -import { - WhiteSpace, - Comment, - Ident, - LeftParenthesis -} from '../../tokenizer/index.js'; - -export const name = 'MediaQuery'; -export const structure = { - children: [[ - 'Identifier', - 'MediaFeature', - 'WhiteSpace' - ]] -}; - -export function parse() { - const children = this.createList(); - let child = null; - - this.skipSC(); - - scan: - while (!this.eof) { - switch (this.tokenType) { - case Comment: - case WhiteSpace: - this.next(); - continue; - - case Ident: - child = this.Identifier(); - break; - - case LeftParenthesis: - child = this.MediaFeature(); - break; - - default: - break scan; - } - - children.push(child); - } - - if (child === null) { - this.error('Identifier or parenthesis is expected'); - } - - return { - type: 'MediaQuery', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node); -} - diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/MediaQueryList.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/MediaQueryList.js deleted file mode 100644 index 1c16bcd2..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/MediaQueryList.js +++ /dev/null @@ -1,34 +0,0 @@ -import { Comma } from '../../tokenizer/index.js'; - -export const name = 'MediaQueryList'; -export const structure = { - children: [[ - 'MediaQuery' - ]] -}; - -export function parse() { - const children = this.createList(); - - this.skipSC(); - - while (!this.eof) { - children.push(this.MediaQuery()); - - if (this.tokenType !== Comma) { - break; - } - - this.next(); - } - - return { - type: 'MediaQueryList', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node, () => this.token(Comma, ',')); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Nth.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Nth.js deleted file mode 100644 index bfd74a15..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Nth.js +++ /dev/null @@ -1,47 +0,0 @@ -import { Ident } from '../../tokenizer/index.js'; - -export const name = 'Nth'; -export const structure = { - nth: ['AnPlusB', 'Identifier'], - selector: ['SelectorList', null] -}; - -export function parse() { - this.skipSC(); - - const start = this.tokenStart; - let end = start; - let selector = null; - let nth; - - if (this.lookupValue(0, 'odd') || this.lookupValue(0, 'even')) { - nth = this.Identifier(); - } else { - nth = this.AnPlusB(); - } - - end = this.tokenStart; - this.skipSC(); - - if (this.lookupValue(0, 'of')) { - this.next(); - - selector = this.SelectorList(); - end = this.tokenStart; - } - - return { - type: 'Nth', - loc: this.getLocation(start, end), - nth, - selector - }; -} - -export function generate(node) { - this.node(node.nth); - if (node.selector !== null) { - this.token(Ident, 'of'); - this.node(node.selector); - } -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Number.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Number.js deleted file mode 100644 index a9d8f0af..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Number.js +++ /dev/null @@ -1,18 +0,0 @@ -import { Number as NumberToken } from '../../tokenizer/index.js'; - -export const name = 'Number'; -export const structure = { - value: String -}; - -export function parse() { - return { - type: 'Number', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - value: this.consume(NumberToken) - }; -} - -export function generate(node) { - this.token(NumberToken, node.value); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Operator.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Operator.js deleted file mode 100644 index 4f1238b9..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Operator.js +++ /dev/null @@ -1,21 +0,0 @@ -// '/' | '*' | ',' | ':' | '+' | '-' -export const name = 'Operator'; -export const structure = { - value: String -}; - -export function parse() { - const start = this.tokenStart; - - this.next(); - - return { - type: 'Operator', - loc: this.getLocation(start, this.tokenStart), - value: this.substrToCursor(start) - }; -} - -export function generate(node) { - this.tokenize(node.value); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Parentheses.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Parentheses.js deleted file mode 100644 index 8c6cdb52..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Parentheses.js +++ /dev/null @@ -1,34 +0,0 @@ -import { - LeftParenthesis, - RightParenthesis -} from '../../tokenizer/index.js'; - -export const name = 'Parentheses'; -export const structure = { - children: [[]] -}; - -export function parse(readSequence, recognizer) { - const start = this.tokenStart; - let children = null; - - this.eat(LeftParenthesis); - - children = readSequence.call(this, recognizer); - - if (!this.eof) { - this.eat(RightParenthesis); - } - - return { - type: 'Parentheses', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -export function generate(node) { - this.token(LeftParenthesis, '('); - this.children(node); - this.token(RightParenthesis, ')'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Percentage.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Percentage.js deleted file mode 100644 index 3c8b628b..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Percentage.js +++ /dev/null @@ -1,18 +0,0 @@ -import { Percentage } from '../../tokenizer/index.js'; - -export const name = 'Percentage'; -export const structure = { - value: String -}; - -export function parse() { - return { - type: 'Percentage', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - value: this.consumeNumber(Percentage) - }; -} - -export function generate(node) { - this.token(Percentage, node.value + '%'); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js deleted file mode 100644 index 8b4196f6..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js +++ /dev/null @@ -1,63 +0,0 @@ -import { - Ident, - Function as FunctionToken, - Colon, - RightParenthesis -} from '../../tokenizer/index.js'; - - -export const name = 'PseudoClassSelector'; -export const walkContext = 'function'; -export const structure = { - name: String, - children: [['Raw'], null] -}; - -// : [ <ident> | <function-token> <any-value>? ) ] -export function parse() { - const start = this.tokenStart; - let children = null; - let name; - let nameLowerCase; - - this.eat(Colon); - - if (this.tokenType === FunctionToken) { - name = this.consumeFunctionName(); - nameLowerCase = name.toLowerCase(); - - if (hasOwnProperty.call(this.pseudo, nameLowerCase)) { - this.skipSC(); - children = this.pseudo[nameLowerCase].call(this); - this.skipSC(); - } else { - children = this.createList(); - children.push( - this.Raw(this.tokenIndex, null, false) - ); - } - - this.eat(RightParenthesis); - } else { - name = this.consume(Ident); - } - - return { - type: 'PseudoClassSelector', - loc: this.getLocation(start, this.tokenStart), - name, - children - }; -} - -export function generate(node) { - this.token(Colon, ':'); - - if (node.children === null) { - this.token(Ident, node.name); - } else { - this.token(FunctionToken, node.name + '('); - this.children(node); - this.token(RightParenthesis, ')'); - } -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js deleted file mode 100644 index fa17d2e0..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js +++ /dev/null @@ -1,64 +0,0 @@ -import { - Ident, - Function as FunctionToken, - Colon, - RightParenthesis -} from '../../tokenizer/index.js'; - -export const name = 'PseudoElementSelector'; -export const walkContext = 'function'; -export const structure = { - name: String, - children: [['Raw'], null] -}; - -// :: [ <ident> | <function-token> <any-value>? ) ] -export function parse() { - const start = this.tokenStart; - let children = null; - let name; - let nameLowerCase; - - this.eat(Colon); - this.eat(Colon); - - if (this.tokenType === FunctionToken) { - name = this.consumeFunctionName(); - nameLowerCase = name.toLowerCase(); - - if (hasOwnProperty.call(this.pseudo, nameLowerCase)) { - this.skipSC(); - children = this.pseudo[nameLowerCase].call(this); - this.skipSC(); - } else { - children = this.createList(); - children.push( - this.Raw(this.tokenIndex, null, false) - ); - } - - this.eat(RightParenthesis); - } else { - name = this.consume(Ident); - } - - return { - type: 'PseudoElementSelector', - loc: this.getLocation(start, this.tokenStart), - name, - children - }; -} - -export function generate(node) { - this.token(Colon, ':'); - this.token(Colon, ':'); - - if (node.children === null) { - this.token(Ident, node.name); - } else { - this.token(FunctionToken, node.name + '('); - this.children(node); - this.token(RightParenthesis, ')'); - } -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Ratio.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Ratio.js deleted file mode 100644 index c2e08a51..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Ratio.js +++ /dev/null @@ -1,59 +0,0 @@ -import { isDigit, Delim, Number as NumberToken } from '../../tokenizer/index.js'; - -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) -const FULLSTOP = 0x002E; // U+002E FULL STOP (.) - -// Terms of <ratio> should be a positive numbers (not zero or negative) -// (see https://drafts.csswg.org/mediaqueries-3/#values) -// However, -o-min-device-pixel-ratio takes fractional values as a ratio's term -// and this is using by various sites. Therefore we relax checking on parse -// to test a term is unsigned number without an exponent part. -// Additional checking may be applied on lexer validation. -function consumeNumber() { - this.skipSC(); - - const value = this.consume(NumberToken); - - for (let i = 0; i < value.length; i++) { - const code = value.charCodeAt(i); - if (!isDigit(code) && code !== FULLSTOP) { - this.error('Unsigned number is expected', this.tokenStart - value.length + i); - } - } - - if (Number(value) === 0) { - this.error('Zero number is not allowed', this.tokenStart - value.length); - } - - return value; -} - -export const name = 'Ratio'; -export const structure = { - left: String, - right: String -}; - -// <positive-integer> S* '/' S* <positive-integer> -export function parse() { - const start = this.tokenStart; - const left = consumeNumber.call(this); - let right; - - this.skipSC(); - this.eatDelim(SOLIDUS); - right = consumeNumber.call(this); - - return { - type: 'Ratio', - loc: this.getLocation(start, this.tokenStart), - left, - right - }; -} - -export function generate(node) { - this.token(NumberToken, node.left); - this.token(Delim, '/'); - this.token(NumberToken, node.right); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Raw.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Raw.js deleted file mode 100644 index ebc422f7..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Raw.js +++ /dev/null @@ -1,41 +0,0 @@ -import { WhiteSpace } from '../../tokenizer/index.js'; - -function getOffsetExcludeWS() { - if (this.tokenIndex > 0) { - if (this.lookupType(-1) === WhiteSpace) { - return this.tokenIndex > 1 - ? this.getTokenStart(this.tokenIndex - 1) - : this.firstCharOffset; - } - } - - return this.tokenStart; -} - -export const name = 'Raw'; -export const structure = { - value: String -}; - -export function parse(startToken, consumeUntil, excludeWhiteSpace) { - const startOffset = this.getTokenStart(startToken); - let endOffset; - - this.skipUntilBalanced(startToken, consumeUntil || this.consumeUntilBalanceEnd); - - if (excludeWhiteSpace && this.tokenStart > startOffset) { - endOffset = getOffsetExcludeWS.call(this); - } else { - endOffset = this.tokenStart; - } - - return { - type: 'Raw', - loc: this.getLocation(startOffset, endOffset), - value: this.substring(startOffset, endOffset) - }; -} - -export function generate(node) { - this.tokenize(node.value); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Rule.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Rule.js deleted file mode 100644 index 08c8f989..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Rule.js +++ /dev/null @@ -1,51 +0,0 @@ -import { LeftCurlyBracket } from '../../tokenizer/index.js'; - -function consumeRaw(startToken) { - return this.Raw(startToken, this.consumeUntilLeftCurlyBracket, true); -} - -function consumePrelude() { - const prelude = this.SelectorList(); - - if (prelude.type !== 'Raw' && - this.eof === false && - this.tokenType !== LeftCurlyBracket) { - this.error(); - } - - return prelude; -} - -export const name = 'Rule'; -export const walkContext = 'rule'; -export const structure = { - prelude: ['SelectorList', 'Raw'], - block: ['Block'] -}; - -export function parse() { - const startToken = this.tokenIndex; - const startOffset = this.tokenStart; - let prelude; - let block; - - if (this.parseRulePrelude) { - prelude = this.parseWithFallback(consumePrelude, consumeRaw); - } else { - prelude = consumeRaw.call(this, startToken); - } - - block = this.Block(true); - - return { - type: 'Rule', - loc: this.getLocation(startOffset, this.tokenStart), - prelude, - block - }; -} -export function generate(node) { - this.node(node.prelude); - this.node(node.block); -} - diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Selector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Selector.js deleted file mode 100644 index 3ef44718..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Selector.js +++ /dev/null @@ -1,32 +0,0 @@ -export const name = 'Selector'; -export const structure = { - children: [[ - 'TypeSelector', - 'IdSelector', - 'ClassSelector', - 'AttributeSelector', - 'PseudoClassSelector', - 'PseudoElementSelector', - 'Combinator', - 'WhiteSpace' - ]] -}; - -export function parse() { - const children = this.readSequence(this.scope.Selector); - - // nothing were consumed - if (this.getFirstListNode(children) === null) { - this.error('Selector is expected'); - } - - return { - type: 'Selector', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/SelectorList.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/SelectorList.js deleted file mode 100644 index ebba3cdd..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/SelectorList.js +++ /dev/null @@ -1,35 +0,0 @@ -import { Comma } from '../../tokenizer/index.js'; - -export const name = 'SelectorList'; -export const walkContext = 'selector'; -export const structure = { - children: [[ - 'Selector', - 'Raw' - ]] -}; - -export function parse() { - const children = this.createList(); - - while (!this.eof) { - children.push(this.Selector()); - - if (this.tokenType === Comma) { - this.next(); - continue; - } - - break; - } - - return { - type: 'SelectorList', - loc: this.getLocationFromList(children), - children - }; -} - -export function generate(node) { - this.children(node, () => this.token(Comma, ',')); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/String.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/String.js deleted file mode 100644 index 95e1aaa5..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/String.js +++ /dev/null @@ -1,19 +0,0 @@ -import { String as StringToken } from '../../tokenizer/index.js'; -import { decode, encode } from '../../utils/string.js'; - -export const name = 'String'; -export const structure = { - value: String -}; - -export function parse() { - return { - type: 'String', - loc: this.getLocation(this.tokenStart, this.tokenEnd), - value: decode(this.consume(StringToken)) - }; -} - -export function generate(node) { - this.token(StringToken, encode(node.value)); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/StyleSheet.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/StyleSheet.js deleted file mode 100644 index 02c41fbf..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/StyleSheet.js +++ /dev/null @@ -1,82 +0,0 @@ -import { - WhiteSpace, - Comment, - AtKeyword, - CDO, - CDC -} from '../../tokenizer/index.js'; - -const EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) - -function consumeRaw(startToken) { - return this.Raw(startToken, null, false); -} - -export const name = 'StyleSheet'; -export const walkContext = 'stylesheet'; -export const structure = { - children: [[ - 'Comment', - 'CDO', - 'CDC', - 'Atrule', - 'Rule', - 'Raw' - ]] -}; - -export function parse() { - const start = this.tokenStart; - const children = this.createList(); - let child; - - scan: - while (!this.eof) { - switch (this.tokenType) { - case WhiteSpace: - this.next(); - continue; - - case Comment: - // ignore comments except exclamation comments (i.e. /*! .. */) on top level - if (this.charCodeAt(this.tokenStart + 2) !== EXCLAMATIONMARK) { - this.next(); - continue; - } - - child = this.Comment(); - break; - - case CDO: // <!-- - child = this.CDO(); - break; - - case CDC: // --> - child = this.CDC(); - break; - - // CSS Syntax Module Level 3 - // §2.2 Error handling - // At the "top level" of a stylesheet, an <at-keyword-token> starts an at-rule. - case AtKeyword: - child = this.parseWithFallback(this.Atrule, consumeRaw); - break; - - // Anything else starts a qualified rule ... - default: - child = this.parseWithFallback(this.Rule, consumeRaw); - } - - children.push(child); - } - - return { - type: 'StyleSheet', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -export function generate(node) { - this.children(node); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/TypeSelector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/TypeSelector.js deleted file mode 100644 index 272e195d..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/TypeSelector.js +++ /dev/null @@ -1,52 +0,0 @@ -import { Ident } from '../../tokenizer/index.js'; - -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) - -function eatIdentifierOrAsterisk() { - if (this.tokenType !== Ident && - this.isDelim(ASTERISK) === false) { - this.error('Identifier or asterisk is expected'); - } - - this.next(); -} - -export const name = 'TypeSelector'; -export const structure = { - name: String -}; - -// ident -// ident|ident -// ident|* -// * -// *|ident -// *|* -// |ident -// |* -export function parse() { - const start = this.tokenStart; - - if (this.isDelim(VERTICALLINE)) { - this.next(); - eatIdentifierOrAsterisk.call(this); - } else { - eatIdentifierOrAsterisk.call(this); - - if (this.isDelim(VERTICALLINE)) { - this.next(); - eatIdentifierOrAsterisk.call(this); - } - } - - return { - type: 'TypeSelector', - loc: this.getLocation(start, this.tokenStart), - name: this.substrToCursor(start) - }; -} - -export function generate(node) { - this.tokenize(node.name); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/UnicodeRange.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/UnicodeRange.js deleted file mode 100644 index 95ee8b96..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/UnicodeRange.js +++ /dev/null @@ -1,156 +0,0 @@ -import { - isHexDigit, - Ident, - Number, - Dimension -} from '../../tokenizer/index.js'; - -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?) - -function eatHexSequence(offset, allowDash) { - let len = 0; - - for (let pos = this.tokenStart + offset; pos < this.tokenEnd; pos++) { - const code = this.charCodeAt(pos); - - if (code === HYPHENMINUS && allowDash && len !== 0) { - eatHexSequence.call(this, offset + len + 1, false); - return -1; - } - - if (!isHexDigit(code)) { - this.error( - allowDash && len !== 0 - ? 'Hyphen minus' + (len < 6 ? ' or hex digit' : '') + ' is expected' - : (len < 6 ? 'Hex digit is expected' : 'Unexpected input'), - pos - ); - } - - if (++len > 6) { - this.error('Too many hex digits', pos); - }; - } - - this.next(); - return len; -} - -function eatQuestionMarkSequence(max) { - let count = 0; - - while (this.isDelim(QUESTIONMARK)) { - if (++count > max) { - this.error('Too many question marks'); - } - - this.next(); - } -} - -function startsWith(code) { - if (this.charCodeAt(this.tokenStart) !== code) { - this.error((code === PLUSSIGN ? 'Plus sign' : 'Hyphen minus') + ' is expected'); - } -} - -// https://drafts.csswg.org/css-syntax/#urange -// Informally, the <urange> production has three forms: -// U+0001 -// Defines a range consisting of a single code point, in this case the code point "1". -// U+0001-00ff -// Defines a range of codepoints between the first and the second value, in this case -// the range between "1" and "ff" (255 in decimal) inclusive. -// U+00?? -// Defines a range of codepoints where the "?" characters range over all hex digits, -// in this case defining the same as the value U+0000-00ff. -// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat "?" as a hexadecimal digit). -// -// <urange> = -// u '+' <ident-token> '?'* | -// u <dimension-token> '?'* | -// u <number-token> '?'* | -// u <number-token> <dimension-token> | -// u <number-token> <number-token> | -// u '+' '?'+ -function scanUnicodeRange() { - let hexLength = 0; - - switch (this.tokenType) { - case Number: - // u <number-token> '?'* - // u <number-token> <dimension-token> - // u <number-token> <number-token> - hexLength = eatHexSequence.call(this, 1, true); - - if (this.isDelim(QUESTIONMARK)) { - eatQuestionMarkSequence.call(this, 6 - hexLength); - break; - } - - if (this.tokenType === Dimension || - this.tokenType === Number) { - startsWith.call(this, HYPHENMINUS); - eatHexSequence.call(this, 1, false); - break; - } - - break; - - case Dimension: - // u <dimension-token> '?'* - hexLength = eatHexSequence.call(this, 1, true); - - if (hexLength > 0) { - eatQuestionMarkSequence.call(this, 6 - hexLength); - } - - break; - - default: - // u '+' <ident-token> '?'* - // u '+' '?'+ - this.eatDelim(PLUSSIGN); - - if (this.tokenType === Ident) { - hexLength = eatHexSequence.call(this, 0, true); - if (hexLength > 0) { - eatQuestionMarkSequence.call(this, 6 - hexLength); - } - break; - } - - if (this.isDelim(QUESTIONMARK)) { - this.next(); - eatQuestionMarkSequence.call(this, 5); - break; - } - - this.error('Hex digit or question mark is expected'); - } -} - -export const name = 'UnicodeRange'; -export const structure = { - value: String -}; - -export function parse() { - const start = this.tokenStart; - - // U or u - this.eatIdent('u'); - scanUnicodeRange.call(this); - - return { - type: 'UnicodeRange', - loc: this.getLocation(start, this.tokenStart), - value: this.substrToCursor(start) - }; -} - -export function generate(node) { - this.tokenize(node.value); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Url.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Url.js deleted file mode 100644 index ac52c9d9..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Url.js +++ /dev/null @@ -1,52 +0,0 @@ -import * as url from '../../utils/url.js'; -import * as string from '../../utils/string.js'; -import { - Function as FunctionToken, - String as StringToken, - Url, - RightParenthesis -} from '../../tokenizer/index.js'; - -export const name = 'Url'; -export const structure = { - value: String -}; - -// <url-token> | <function-token> <string> ) -export function parse() { - const start = this.tokenStart; - let value; - - switch (this.tokenType) { - case Url: - value = url.decode(this.consume(Url)); - break; - - case FunctionToken: - if (!this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')) { - this.error('Function name must be `url`'); - } - - this.eat(FunctionToken); - this.skipSC(); - value = string.decode(this.consume(StringToken)); - this.skipSC(); - if (!this.eof) { - this.eat(RightParenthesis); - } - break; - - default: - this.error('Url or Function is expected'); - } - - return { - type: 'Url', - loc: this.getLocation(start, this.tokenStart), - value - }; -} - -export function generate(node) { - this.token(Url, url.encode(node.value)); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Value.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/Value.js deleted file mode 100644 index ba465bc0..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/Value.js +++ /dev/null @@ -1,19 +0,0 @@ -export const name = 'Value'; -export const structure = { - children: [[]] -}; - -export function parse() { - const start = this.tokenStart; - const children = this.readSequence(this.scope.Value); - - return { - type: 'Value', - loc: this.getLocation(start, this.tokenStart), - children - }; -} - -export function generate(node) { - this.children(node); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/WhiteSpace.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/WhiteSpace.js deleted file mode 100644 index df34e6f7..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/WhiteSpace.js +++ /dev/null @@ -1,27 +0,0 @@ -import { WhiteSpace } from '../../tokenizer/index.js'; - -const SPACE = Object.freeze({ - type: 'WhiteSpace', - loc: null, - value: ' ' -}); - -export const name = 'WhiteSpace'; -export const structure = { - value: String -}; - -export function parse() { - this.eat(WhiteSpace); - return SPACE; - - // return { - // type: 'WhiteSpace', - // loc: this.getLocation(this.tokenStart, this.tokenEnd), - // value: this.consume(WHITESPACE) - // }; -} - -export function generate(node) { - this.token(WhiteSpace, node.value); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/index-generate.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/index-generate.js deleted file mode 100644 index 2aae5684..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/index-generate.js +++ /dev/null @@ -1,40 +0,0 @@ -export { generate as AnPlusB } from './AnPlusB.js'; -export { generate as Atrule } from './Atrule.js'; -export { generate as AtrulePrelude } from './AtrulePrelude.js'; -export { generate as AttributeSelector } from './AttributeSelector.js'; -export { generate as Block } from './Block.js'; -export { generate as Brackets } from './Brackets.js'; -export { generate as CDC } from './CDC.js'; -export { generate as CDO } from './CDO.js'; -export { generate as ClassSelector } from './ClassSelector.js'; -export { generate as Combinator } from './Combinator.js'; -export { generate as Comment } from './Comment.js'; -export { generate as Declaration } from './Declaration.js'; -export { generate as DeclarationList } from './DeclarationList.js'; -export { generate as Dimension } from './Dimension.js'; -export { generate as Function } from './Function.js'; -export { generate as Hash } from './Hash.js'; -export { generate as Identifier } from './Identifier.js'; -export { generate as IdSelector } from './IdSelector.js'; -export { generate as MediaFeature } from './MediaFeature.js'; -export { generate as MediaQuery } from './MediaQuery.js'; -export { generate as MediaQueryList } from './MediaQueryList.js'; -export { generate as Nth } from './Nth.js'; -export { generate as Number } from './Number.js'; -export { generate as Operator } from './Operator.js'; -export { generate as Parentheses } from './Parentheses.js'; -export { generate as Percentage } from './Percentage.js'; -export { generate as PseudoClassSelector } from './PseudoClassSelector.js'; -export { generate as PseudoElementSelector } from './PseudoElementSelector.js'; -export { generate as Ratio } from './Ratio.js'; -export { generate as Raw } from './Raw.js'; -export { generate as Rule } from './Rule.js'; -export { generate as Selector } from './Selector.js'; -export { generate as SelectorList } from './SelectorList.js'; -export { generate as String } from './String.js'; -export { generate as StyleSheet } from './StyleSheet.js'; -export { generate as TypeSelector } from './TypeSelector.js'; -export { generate as UnicodeRange } from './UnicodeRange.js'; -export { generate as Url } from './Url.js'; -export { generate as Value } from './Value.js'; -export { generate as WhiteSpace } from './WhiteSpace.js'; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/index-parse-selector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/index-parse-selector.js deleted file mode 100644 index 1eb775f8..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/index-parse-selector.js +++ /dev/null @@ -1,15 +0,0 @@ -export { parse as AnPlusB } from './AnPlusB.js'; -export { parse as AttributeSelector } from './AttributeSelector.js'; -export { parse as ClassSelector } from './ClassSelector.js'; -export { parse as Combinator } from './Combinator.js'; -export { parse as Identifier } from './Identifier.js'; -export { parse as IdSelector } from './IdSelector.js'; -export { parse as Nth } from './Nth.js'; -export { parse as Percentage } from './Percentage.js'; -export { parse as PseudoClassSelector } from './PseudoClassSelector.js'; -export { parse as PseudoElementSelector } from './PseudoElementSelector.js'; -export { parse as Raw } from './Raw.js'; -export { parse as Selector } from './Selector.js'; -export { parse as SelectorList } from './SelectorList.js'; -export { parse as String } from './String.js'; -export { parse as TypeSelector } from './TypeSelector.js'; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/index-parse.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/index-parse.js deleted file mode 100644 index 22c372f1..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/index-parse.js +++ /dev/null @@ -1,40 +0,0 @@ -export { parse as AnPlusB } from './AnPlusB.js'; -export { parse as Atrule } from './Atrule.js'; -export { parse as AtrulePrelude } from './AtrulePrelude.js'; -export { parse as AttributeSelector } from './AttributeSelector.js'; -export { parse as Block } from './Block.js'; -export { parse as Brackets } from './Brackets.js'; -export { parse as CDC } from './CDC.js'; -export { parse as CDO } from './CDO.js'; -export { parse as ClassSelector } from './ClassSelector.js'; -export { parse as Combinator } from './Combinator.js'; -export { parse as Comment } from './Comment.js'; -export { parse as Declaration } from './Declaration.js'; -export { parse as DeclarationList } from './DeclarationList.js'; -export { parse as Dimension } from './Dimension.js'; -export { parse as Function } from './Function.js'; -export { parse as Hash } from './Hash.js'; -export { parse as Identifier } from './Identifier.js'; -export { parse as IdSelector } from './IdSelector.js'; -export { parse as MediaFeature } from './MediaFeature.js'; -export { parse as MediaQuery } from './MediaQuery.js'; -export { parse as MediaQueryList } from './MediaQueryList.js'; -export { parse as Nth } from './Nth.js'; -export { parse as Number } from './Number.js'; -export { parse as Operator } from './Operator.js'; -export { parse as Parentheses } from './Parentheses.js'; -export { parse as Percentage } from './Percentage.js'; -export { parse as PseudoClassSelector } from './PseudoClassSelector.js'; -export { parse as PseudoElementSelector } from './PseudoElementSelector.js'; -export { parse as Ratio } from './Ratio.js'; -export { parse as Raw } from './Raw.js'; -export { parse as Rule } from './Rule.js'; -export { parse as Selector } from './Selector.js'; -export { parse as SelectorList } from './SelectorList.js'; -export { parse as String } from './String.js'; -export { parse as StyleSheet } from './StyleSheet.js'; -export { parse as TypeSelector } from './TypeSelector.js'; -export { parse as UnicodeRange } from './UnicodeRange.js'; -export { parse as Url } from './Url.js'; -export { parse as Value } from './Value.js'; -export { parse as WhiteSpace } from './WhiteSpace.js'; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/node/index.js b/node_modules/csso/node_modules/css-tree/lib/syntax/node/index.js deleted file mode 100644 index 6e51d318..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/node/index.js +++ /dev/null @@ -1,40 +0,0 @@ -export * as AnPlusB from './AnPlusB.js'; -export * as Atrule from './Atrule.js'; -export * as AtrulePrelude from './AtrulePrelude.js'; -export * as AttributeSelector from './AttributeSelector.js'; -export * as Block from './Block.js'; -export * as Brackets from './Brackets.js'; -export * as CDC from './CDC.js'; -export * as CDO from './CDO.js'; -export * as ClassSelector from './ClassSelector.js'; -export * as Combinator from './Combinator.js'; -export * as Comment from './Comment.js'; -export * as Declaration from './Declaration.js'; -export * as DeclarationList from './DeclarationList.js'; -export * as Dimension from './Dimension.js'; -export * as Function from './Function.js'; -export * as Hash from './Hash.js'; -export * as Identifier from './Identifier.js'; -export * as IdSelector from './IdSelector.js'; -export * as MediaFeature from './MediaFeature.js'; -export * as MediaQuery from './MediaQuery.js'; -export * as MediaQueryList from './MediaQueryList.js'; -export * as Nth from './Nth.js'; -export * as Number from './Number.js'; -export * as Operator from './Operator.js'; -export * as Parentheses from './Parentheses.js'; -export * as Percentage from './Percentage.js'; -export * as PseudoClassSelector from './PseudoClassSelector.js'; -export * as PseudoElementSelector from './PseudoElementSelector.js'; -export * as Ratio from './Ratio.js'; -export * as Raw from './Raw.js'; -export * as Rule from './Rule.js'; -export * as Selector from './Selector.js'; -export * as SelectorList from './SelectorList.js'; -export * as String from './String.js'; -export * as StyleSheet from './StyleSheet.js'; -export * as TypeSelector from './TypeSelector.js'; -export * as UnicodeRange from './UnicodeRange.js'; -export * as Url from './Url.js'; -export * as Value from './Value.js'; -export * as WhiteSpace from './WhiteSpace.js'; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/pseudo/index.js b/node_modules/csso/node_modules/css-tree/lib/syntax/pseudo/index.js deleted file mode 100644 index 7a336917..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/pseudo/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const selectorList = { - parse() { - return this.createSingleNodeList( - this.SelectorList() - ); - } -}; - -const selector = { - parse() { - return this.createSingleNodeList( - this.Selector() - ); - } -}; - -const identList = { - parse() { - return this.createSingleNodeList( - this.Identifier() - ); - } -}; - -const nth = { - parse() { - return this.createSingleNodeList( - this.Nth() - ); - } -}; - -export default { - 'dir': identList, - 'has': selectorList, - 'lang': identList, - 'matches': selectorList, - 'is': selectorList, - '-moz-any': selectorList, - '-webkit-any': selectorList, - 'where': selectorList, - 'not': selectorList, - 'nth-child': nth, - 'nth-last-child': nth, - 'nth-last-of-type': nth, - 'nth-of-type': nth, - 'slotted': selector -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/atrulePrelude.js b/node_modules/csso/node_modules/css-tree/lib/syntax/scope/atrulePrelude.js deleted file mode 100644 index c9035552..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/atrulePrelude.js +++ /dev/null @@ -1,5 +0,0 @@ -import getNode from './default.js'; - -export default { - getNode -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/default.js b/node_modules/csso/node_modules/css-tree/lib/syntax/scope/default.js deleted file mode 100644 index 8f14035e..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/default.js +++ /dev/null @@ -1,85 +0,0 @@ -import { - Ident, - String as StringToken, - Number as NumberToken, - Function as FunctionToken, - Url, - Hash, - Dimension, - Percentage, - LeftParenthesis, - LeftSquareBracket, - Comma, - Delim -} from '../../tokenizer/index.js'; - -const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) -const U = 0x0075; // U+0075 LATIN SMALL LETTER U (u) - -export default function defaultRecognizer(context) { - switch (this.tokenType) { - case Hash: - return this.Hash(); - - case Comma: - return this.Operator(); - - case LeftParenthesis: - return this.Parentheses(this.readSequence, context.recognizer); - - case LeftSquareBracket: - return this.Brackets(this.readSequence, context.recognizer); - - case StringToken: - return this.String(); - - case Dimension: - return this.Dimension(); - - case Percentage: - return this.Percentage(); - - case NumberToken: - return this.Number(); - - case FunctionToken: - return this.cmpStr(this.tokenStart, this.tokenEnd, 'url(') - ? this.Url() - : this.Function(this.readSequence, context.recognizer); - - case Url: - return this.Url(); - - case Ident: - // check for unicode range, it should start with u+ or U+ - if (this.cmpChar(this.tokenStart, U) && - this.cmpChar(this.tokenStart + 1, PLUSSIGN)) { - return this.UnicodeRange(); - } else { - return this.Identifier(); - } - - case Delim: { - const code = this.charCodeAt(this.tokenStart); - - if (code === SOLIDUS || - code === ASTERISK || - code === PLUSSIGN || - code === HYPHENMINUS) { - return this.Operator(); // TODO: replace with Delim - } - - // TODO: produce a node with Delim node type - - if (code === NUMBERSIGN) { - this.error('Hex or identifier is expected', this.tokenStart + 1); - } - - break; - } - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/index.js b/node_modules/csso/node_modules/css-tree/lib/syntax/scope/index.js deleted file mode 100644 index 6dabbbe1..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export { default as AtrulePrelude } from './atrulePrelude.js'; -export { default as Selector } from './selector.js'; -export { default as Value } from './value.js'; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/selector.js b/node_modules/csso/node_modules/css-tree/lib/syntax/scope/selector.js deleted file mode 100644 index f5b5885f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/selector.js +++ /dev/null @@ -1,90 +0,0 @@ -import { - Delim, - Ident, - Dimension, - Percentage, - Number as NumberToken, - Hash, - Colon, - LeftSquareBracket -} from '../../tokenizer/index.js'; - -const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) -const ASTERISK = 0x002A; // U+002A ASTERISK (*) -const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) -const SOLIDUS = 0x002F; // U+002F SOLIDUS (/) -const FULLSTOP = 0x002E; // U+002E FULL STOP (.) -const GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>) -const VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) -const TILDE = 0x007E; // U+007E TILDE (~) - -function onWhiteSpace(next, children) { - if (children.last !== null && children.last.type !== 'Combinator' && - next !== null && next.type !== 'Combinator') { - children.push({ // FIXME: this.Combinator() should be used instead - type: 'Combinator', - loc: null, - name: ' ' - }); - } -} - -function getNode() { - switch (this.tokenType) { - case LeftSquareBracket: - return this.AttributeSelector(); - - case Hash: - return this.IdSelector(); - - case Colon: - if (this.lookupType(1) === Colon) { - return this.PseudoElementSelector(); - } else { - return this.PseudoClassSelector(); - } - - case Ident: - return this.TypeSelector(); - - case NumberToken: - case Percentage: - return this.Percentage(); - - case Dimension: - // throws when .123ident - if (this.charCodeAt(this.tokenStart) === FULLSTOP) { - this.error('Identifier is expected', this.tokenStart + 1); - } - break; - - case Delim: { - const code = this.charCodeAt(this.tokenStart); - - switch (code) { - case PLUSSIGN: - case GREATERTHANSIGN: - case TILDE: - case SOLIDUS: // /deep/ - return this.Combinator(); - - case FULLSTOP: - return this.ClassSelector(); - - case ASTERISK: - case VERTICALLINE: - return this.TypeSelector(); - - case NUMBERSIGN: - return this.IdSelector(); - } - - break; - } - } -}; - -export default { - onWhiteSpace, - getNode -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/value.js b/node_modules/csso/node_modules/css-tree/lib/syntax/scope/value.js deleted file mode 100644 index dc94219b..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/syntax/scope/value.js +++ /dev/null @@ -1,25 +0,0 @@ -import getNode from './default.js'; -import expressionFn from '../function/expression.js'; -import varFn from '../function/var.js'; - -function isPlusMinusOperator(node) { - return ( - node !== null && - node.type === 'Operator' && - (node.value[node.value.length - 1] === '-' || node.value[node.value.length - 1] === '+') - ); -} - -export default { - getNode, - onWhiteSpace(next, children) { - if (isPlusMinusOperator(next)) { - next.value = ' ' + next.value; - } - if (isPlusMinusOperator(children.last)) { - children.last.value += ' '; - } - }, - 'expression': expressionFn, - 'var': varFn -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/tokenizer/OffsetToLocation.js b/node_modules/csso/node_modules/css-tree/lib/tokenizer/OffsetToLocation.js deleted file mode 100644 index 4ff49031..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/tokenizer/OffsetToLocation.js +++ /dev/null @@ -1,87 +0,0 @@ -import { adoptBuffer } from './adopt-buffer.js'; -import { isBOM } from './char-code-definitions.js'; - -const N = 10; -const F = 12; -const R = 13; - -function computeLinesAndColumns(host) { - const source = host.source; - const sourceLength = source.length; - const startOffset = source.length > 0 ? isBOM(source.charCodeAt(0)) : 0; - const lines = adoptBuffer(host.lines, sourceLength); - const columns = adoptBuffer(host.columns, sourceLength); - let line = host.startLine; - let column = host.startColumn; - - for (let i = startOffset; i < sourceLength; i++) { - const code = source.charCodeAt(i); - - lines[i] = line; - columns[i] = column++; - - if (code === N || code === R || code === F) { - if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) { - i++; - lines[i] = line; - columns[i] = column; - } - - line++; - column = 1; - } - } - - lines[sourceLength] = line; - columns[sourceLength] = column; - - host.lines = lines; - host.columns = columns; - host.computed = true; -} - -export class OffsetToLocation { - constructor() { - this.lines = null; - this.columns = null; - this.computed = false; - } - setSource(source, startOffset = 0, startLine = 1, startColumn = 1) { - this.source = source; - this.startOffset = startOffset; - this.startLine = startLine; - this.startColumn = startColumn; - this.computed = false; - } - getLocation(offset, filename) { - if (!this.computed) { - computeLinesAndColumns(this); - } - - return { - source: filename, - offset: this.startOffset + offset, - line: this.lines[offset], - column: this.columns[offset] - }; - } - getLocationRange(start, end, filename) { - if (!this.computed) { - computeLinesAndColumns(this); - } - - return { - source: filename, - start: { - offset: this.startOffset + start, - line: this.lines[start], - column: this.columns[start] - }, - end: { - offset: this.startOffset + end, - line: this.lines[end], - column: this.columns[end] - } - }; - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/tokenizer/TokenStream.js b/node_modules/csso/node_modules/css-tree/lib/tokenizer/TokenStream.js deleted file mode 100644 index 5dd52755..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/tokenizer/TokenStream.js +++ /dev/null @@ -1,272 +0,0 @@ -import { adoptBuffer } from './adopt-buffer.js'; -import { cmpStr } from './utils.js'; -import tokenNames from './names.js'; -import { - WhiteSpace, - Comment, - Delim, - EOF, - Function as FunctionToken, - LeftParenthesis, - RightParenthesis, - LeftSquareBracket, - RightSquareBracket, - LeftCurlyBracket, - RightCurlyBracket -} from './types.js'; - -const OFFSET_MASK = 0x00FFFFFF; -const TYPE_SHIFT = 24; -const balancePair = new Map([ - [FunctionToken, RightParenthesis], - [LeftParenthesis, RightParenthesis], - [LeftSquareBracket, RightSquareBracket], - [LeftCurlyBracket, RightCurlyBracket] -]); - -export class TokenStream { - constructor(source, tokenize) { - this.setSource(source, tokenize); - } - reset() { - this.eof = false; - this.tokenIndex = -1; - this.tokenType = 0; - this.tokenStart = this.firstCharOffset; - this.tokenEnd = this.firstCharOffset; - } - setSource(source = '', tokenize = () => {}) { - source = String(source || ''); - - const sourceLength = source.length; - const offsetAndType = adoptBuffer(this.offsetAndType, source.length + 1); // +1 because of eof-token - const balance = adoptBuffer(this.balance, source.length + 1); - let tokenCount = 0; - let balanceCloseType = 0; - let balanceStart = 0; - let firstCharOffset = -1; - - // capture buffers - this.offsetAndType = null; - this.balance = null; - - tokenize(source, (type, start, end) => { - switch (type) { - default: - balance[tokenCount] = sourceLength; - break; - - case balanceCloseType: { - let balancePrev = balanceStart & OFFSET_MASK; - balanceStart = balance[balancePrev]; - balanceCloseType = balanceStart >> TYPE_SHIFT; - balance[tokenCount] = balancePrev; - balance[balancePrev++] = tokenCount; - for (; balancePrev < tokenCount; balancePrev++) { - if (balance[balancePrev] === sourceLength) { - balance[balancePrev] = tokenCount; - } - } - break; - } - - case LeftParenthesis: - case FunctionToken: - case LeftSquareBracket: - case LeftCurlyBracket: - balance[tokenCount] = balanceStart; - balanceCloseType = balancePair.get(type); - balanceStart = (balanceCloseType << TYPE_SHIFT) | tokenCount; - break; - } - - offsetAndType[tokenCount++] = (type << TYPE_SHIFT) | end; - if (firstCharOffset === -1) { - firstCharOffset = start; - } - }); - - // finalize buffers - offsetAndType[tokenCount] = (EOF << TYPE_SHIFT) | sourceLength; // <EOF-token> - balance[tokenCount] = sourceLength; - balance[sourceLength] = sourceLength; // prevents false positive balance match with any token - while (balanceStart !== 0) { - const balancePrev = balanceStart & OFFSET_MASK; - balanceStart = balance[balancePrev]; - balance[balancePrev] = sourceLength; - } - - this.source = source; - this.firstCharOffset = firstCharOffset === -1 ? 0 : firstCharOffset; - this.tokenCount = tokenCount; - this.offsetAndType = offsetAndType; - this.balance = balance; - - this.reset(); - this.next(); - } - - lookupType(offset) { - offset += this.tokenIndex; - - if (offset < this.tokenCount) { - return this.offsetAndType[offset] >> TYPE_SHIFT; - } - - return EOF; - } - lookupOffset(offset) { - offset += this.tokenIndex; - - if (offset < this.tokenCount) { - return this.offsetAndType[offset - 1] & OFFSET_MASK; - } - - return this.source.length; - } - lookupValue(offset, referenceStr) { - offset += this.tokenIndex; - - if (offset < this.tokenCount) { - return cmpStr( - this.source, - this.offsetAndType[offset - 1] & OFFSET_MASK, - this.offsetAndType[offset] & OFFSET_MASK, - referenceStr - ); - } - - return false; - } - getTokenStart(tokenIndex) { - if (tokenIndex === this.tokenIndex) { - return this.tokenStart; - } - - if (tokenIndex > 0) { - return tokenIndex < this.tokenCount - ? this.offsetAndType[tokenIndex - 1] & OFFSET_MASK - : this.offsetAndType[this.tokenCount] & OFFSET_MASK; - } - - return this.firstCharOffset; - } - substrToCursor(start) { - return this.source.substring(start, this.tokenStart); - } - - isBalanceEdge(pos) { - return this.balance[this.tokenIndex] < pos; - } - isDelim(code, offset) { - if (offset) { - return ( - this.lookupType(offset) === Delim && - this.source.charCodeAt(this.lookupOffset(offset)) === code - ); - } - - return ( - this.tokenType === Delim && - this.source.charCodeAt(this.tokenStart) === code - ); - } - - skip(tokenCount) { - let next = this.tokenIndex + tokenCount; - - if (next < this.tokenCount) { - this.tokenIndex = next; - this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK; - next = this.offsetAndType[next]; - this.tokenType = next >> TYPE_SHIFT; - this.tokenEnd = next & OFFSET_MASK; - } else { - this.tokenIndex = this.tokenCount; - this.next(); - } - } - next() { - let next = this.tokenIndex + 1; - - if (next < this.tokenCount) { - this.tokenIndex = next; - this.tokenStart = this.tokenEnd; - next = this.offsetAndType[next]; - this.tokenType = next >> TYPE_SHIFT; - this.tokenEnd = next & OFFSET_MASK; - } else { - this.eof = true; - this.tokenIndex = this.tokenCount; - this.tokenType = EOF; - this.tokenStart = this.tokenEnd = this.source.length; - } - } - skipSC() { - while (this.tokenType === WhiteSpace || this.tokenType === Comment) { - this.next(); - } - } - skipUntilBalanced(startToken, stopConsume) { - let cursor = startToken; - let balanceEnd; - let offset; - - loop: - for (; cursor < this.tokenCount; cursor++) { - balanceEnd = this.balance[cursor]; - - // stop scanning on balance edge that points to offset before start token - if (balanceEnd < startToken) { - break loop; - } - - offset = cursor > 0 ? this.offsetAndType[cursor - 1] & OFFSET_MASK : this.firstCharOffset; - - // check stop condition - switch (stopConsume(this.source.charCodeAt(offset))) { - case 1: // just stop - break loop; - - case 2: // stop & included - cursor++; - break loop; - - default: - // fast forward to the end of balanced block - if (this.balance[balanceEnd] === cursor) { - cursor = balanceEnd; - } - } - } - - this.skip(cursor - this.tokenIndex); - } - - forEachToken(fn) { - for (let i = 0, offset = this.firstCharOffset; i < this.tokenCount; i++) { - const start = offset; - const item = this.offsetAndType[i]; - const end = item & OFFSET_MASK; - const type = item >> TYPE_SHIFT; - - offset = end; - - fn(type, start, end, i); - } - } - dump() { - const tokens = new Array(this.tokenCount); - - this.forEachToken((type, start, end, index) => { - tokens[index] = { - idx: index, - type: tokenNames[type], - chunk: this.source.substring(start, end), - balance: this.balance[index] - }; - }); - - return tokens; - } -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/tokenizer/adopt-buffer.js b/node_modules/csso/node_modules/css-tree/lib/tokenizer/adopt-buffer.js deleted file mode 100644 index ab4566da..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/tokenizer/adopt-buffer.js +++ /dev/null @@ -1,9 +0,0 @@ -const MIN_SIZE = 16 * 1024; - -export function adoptBuffer(buffer = null, size) { - if (buffer === null || buffer.length < size) { - return new Uint32Array(Math.max(size + 1024, MIN_SIZE)); - } - - return buffer; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/tokenizer/char-code-definitions.js b/node_modules/csso/node_modules/css-tree/lib/tokenizer/char-code-definitions.js deleted file mode 100644 index ea4f42d2..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/tokenizer/char-code-definitions.js +++ /dev/null @@ -1,207 +0,0 @@ -const EOF = 0; - -// https://drafts.csswg.org/css-syntax-3/ -// § 4.2. Definitions - -// digit -// A code point between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9). -export function isDigit(code) { - return code >= 0x0030 && code <= 0x0039; -} - -// hex digit -// A digit, or a code point between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F), -// or a code point between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f). -export function isHexDigit(code) { - return ( - isDigit(code) || // 0 .. 9 - (code >= 0x0041 && code <= 0x0046) || // A .. F - (code >= 0x0061 && code <= 0x0066) // a .. f - ); -} - -// uppercase letter -// A code point between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z). -export function isUppercaseLetter(code) { - return code >= 0x0041 && code <= 0x005A; -} - -// lowercase letter -// A code point between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z). -export function isLowercaseLetter(code) { - return code >= 0x0061 && code <= 0x007A; -} - -// letter -// An uppercase letter or a lowercase letter. -export function isLetter(code) { - return isUppercaseLetter(code) || isLowercaseLetter(code); -} - -// non-ASCII code point -// A code point with a value equal to or greater than U+0080 <control>. -export function isNonAscii(code) { - return code >= 0x0080; -} - -// name-start code point -// A letter, a non-ASCII code point, or U+005F LOW LINE (_). -export function isNameStart(code) { - return isLetter(code) || isNonAscii(code) || code === 0x005F; -} - -// name code point -// A name-start code point, a digit, or U+002D HYPHEN-MINUS (-). -export function isName(code) { - return isNameStart(code) || isDigit(code) || code === 0x002D; -} - -// non-printable code point -// A code point between U+0000 NULL and U+0008 BACKSPACE, or U+000B LINE TABULATION, -// or a code point between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, or U+007F DELETE. -export function isNonPrintable(code) { - return ( - (code >= 0x0000 && code <= 0x0008) || - (code === 0x000B) || - (code >= 0x000E && code <= 0x001F) || - (code === 0x007F) - ); -} - -// newline -// U+000A LINE FEED. Note that U+000D CARRIAGE RETURN and U+000C FORM FEED are not included in this definition, -// as they are converted to U+000A LINE FEED during preprocessing. -// TODO: we doesn't do a preprocessing, so check a code point for U+000D CARRIAGE RETURN and U+000C FORM FEED -export function isNewline(code) { - return code === 0x000A || code === 0x000D || code === 0x000C; -} - -// whitespace -// A newline, U+0009 CHARACTER TABULATION, or U+0020 SPACE. -export function isWhiteSpace(code) { - return isNewline(code) || code === 0x0020 || code === 0x0009; -} - -// § 4.3.8. Check if two code points are a valid escape -export function isValidEscape(first, second) { - // If the first code point is not U+005C REVERSE SOLIDUS (\), return false. - if (first !== 0x005C) { - return false; - } - - // Otherwise, if the second code point is a newline or EOF, return false. - if (isNewline(second) || second === EOF) { - return false; - } - - // Otherwise, return true. - return true; -} - -// § 4.3.9. Check if three code points would start an identifier -export function isIdentifierStart(first, second, third) { - // Look at the first code point: - - // U+002D HYPHEN-MINUS - if (first === 0x002D) { - // If the second code point is a name-start code point or a U+002D HYPHEN-MINUS, - // or the second and third code points are a valid escape, return true. Otherwise, return false. - return ( - isNameStart(second) || - second === 0x002D || - isValidEscape(second, third) - ); - } - - // name-start code point - if (isNameStart(first)) { - // Return true. - return true; - } - - // U+005C REVERSE SOLIDUS (\) - if (first === 0x005C) { - // If the first and second code points are a valid escape, return true. Otherwise, return false. - return isValidEscape(first, second); - } - - // anything else - // Return false. - return false; -} - -// § 4.3.10. Check if three code points would start a number -export function isNumberStart(first, second, third) { - // Look at the first code point: - - // U+002B PLUS SIGN (+) - // U+002D HYPHEN-MINUS (-) - if (first === 0x002B || first === 0x002D) { - // If the second code point is a digit, return true. - if (isDigit(second)) { - return 2; - } - - // Otherwise, if the second code point is a U+002E FULL STOP (.) - // and the third code point is a digit, return true. - // Otherwise, return false. - return second === 0x002E && isDigit(third) ? 3 : 0; - } - - // U+002E FULL STOP (.) - if (first === 0x002E) { - // If the second code point is a digit, return true. Otherwise, return false. - return isDigit(second) ? 2 : 0; - } - - // digit - if (isDigit(first)) { - // Return true. - return 1; - } - - // anything else - // Return false. - return 0; -} - -// -// Misc -// - -// detect BOM (https://en.wikipedia.org/wiki/Byte_order_mark) -export function isBOM(code) { - // UTF-16BE - if (code === 0xFEFF) { - return 1; - } - - // UTF-16LE - if (code === 0xFFFE) { - return 1; - } - - return 0; -} - -// Fast code category -// Only ASCII code points has a special meaning, that's why we define a maps for 0..127 codes only -const CATEGORY = new Array(0x80); -export const EofCategory = 0x80; -export const WhiteSpaceCategory = 0x82; -export const DigitCategory = 0x83; -export const NameStartCategory = 0x84; -export const NonPrintableCategory = 0x85; - -for (let i = 0; i < CATEGORY.length; i++) { - CATEGORY[i] = - isWhiteSpace(i) && WhiteSpaceCategory || - isDigit(i) && DigitCategory || - isNameStart(i) && NameStartCategory || - isNonPrintable(i) && NonPrintableCategory || - i || EofCategory; -} - -export function charCodeCategory(code) { - return code < 0x80 ? CATEGORY[code] : NameStartCategory; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/tokenizer/index.js b/node_modules/csso/node_modules/css-tree/lib/tokenizer/index.js deleted file mode 100644 index 16df44cc..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/tokenizer/index.js +++ /dev/null @@ -1,513 +0,0 @@ -import * as TYPE from './types.js'; -import { - isNewline, - isName, - isValidEscape, - isNumberStart, - isIdentifierStart, - isBOM, - charCodeCategory, - WhiteSpaceCategory, - DigitCategory, - NameStartCategory, - NonPrintableCategory -} from './char-code-definitions.js'; -import { - cmpStr, - getNewlineLength, - findWhiteSpaceEnd, - consumeEscaped, - consumeName, - consumeNumber, - consumeBadUrlRemnants -} from './utils.js'; - -export function tokenize(source, onToken) { - function getCharCode(offset) { - return offset < sourceLength ? source.charCodeAt(offset) : 0; - } - - // § 4.3.3. Consume a numeric token - function consumeNumericToken() { - // Consume a number and let number be the result. - offset = consumeNumber(source, offset); - - // If the next 3 input code points would start an identifier, then: - if (isIdentifierStart(getCharCode(offset), getCharCode(offset + 1), getCharCode(offset + 2))) { - // Create a <dimension-token> with the same value and type flag as number, and a unit set initially to the empty string. - // Consume a name. Set the <dimension-token>’s unit to the returned value. - // Return the <dimension-token>. - type = TYPE.Dimension; - offset = consumeName(source, offset); - return; - } - - // Otherwise, if the next input code point is U+0025 PERCENTAGE SIGN (%), consume it. - if (getCharCode(offset) === 0x0025) { - // Create a <percentage-token> with the same value as number, and return it. - type = TYPE.Percentage; - offset++; - return; - } - - // Otherwise, create a <number-token> with the same value and type flag as number, and return it. - type = TYPE.Number; - } - - // § 4.3.4. Consume an ident-like token - function consumeIdentLikeToken() { - const nameStartOffset = offset; - - // Consume a name, and let string be the result. - offset = consumeName(source, offset); - - // If string’s value is an ASCII case-insensitive match for "url", - // and the next input code point is U+0028 LEFT PARENTHESIS ((), consume it. - if (cmpStr(source, nameStartOffset, offset, 'url') && getCharCode(offset) === 0x0028) { - // While the next two input code points are whitespace, consume the next input code point. - offset = findWhiteSpaceEnd(source, offset + 1); - - // If the next one or two input code points are U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('), - // or whitespace followed by U+0022 QUOTATION MARK (") or U+0027 APOSTROPHE ('), - // then create a <function-token> with its value set to string and return it. - if (getCharCode(offset) === 0x0022 || - getCharCode(offset) === 0x0027) { - type = TYPE.Function; - offset = nameStartOffset + 4; - return; - } - - // Otherwise, consume a url token, and return it. - consumeUrlToken(); - return; - } - - // Otherwise, if the next input code point is U+0028 LEFT PARENTHESIS ((), consume it. - // Create a <function-token> with its value set to string and return it. - if (getCharCode(offset) === 0x0028) { - type = TYPE.Function; - offset++; - return; - } - - // Otherwise, create an <ident-token> with its value set to string and return it. - type = TYPE.Ident; - } - - // § 4.3.5. Consume a string token - function consumeStringToken(endingCodePoint) { - // This algorithm may be called with an ending code point, which denotes the code point - // that ends the string. If an ending code point is not specified, - // the current input code point is used. - if (!endingCodePoint) { - endingCodePoint = getCharCode(offset++); - } - - // Initially create a <string-token> with its value set to the empty string. - type = TYPE.String; - - // Repeatedly consume the next input code point from the stream: - for (; offset < source.length; offset++) { - const code = source.charCodeAt(offset); - - switch (charCodeCategory(code)) { - // ending code point - case endingCodePoint: - // Return the <string-token>. - offset++; - return; - - // EOF - // case EofCategory: - // This is a parse error. Return the <string-token>. - // return; - - // newline - case WhiteSpaceCategory: - if (isNewline(code)) { - // This is a parse error. Reconsume the current input code point, - // create a <bad-string-token>, and return it. - offset += getNewlineLength(source, offset, code); - type = TYPE.BadString; - return; - } - break; - - // U+005C REVERSE SOLIDUS (\) - case 0x005C: - // If the next input code point is EOF, do nothing. - if (offset === source.length - 1) { - break; - } - - const nextCode = getCharCode(offset + 1); - - // Otherwise, if the next input code point is a newline, consume it. - if (isNewline(nextCode)) { - offset += getNewlineLength(source, offset + 1, nextCode); - } else if (isValidEscape(code, nextCode)) { - // Otherwise, (the stream starts with a valid escape) consume - // an escaped code point and append the returned code point to - // the <string-token>’s value. - offset = consumeEscaped(source, offset) - 1; - } - break; - - // anything else - // Append the current input code point to the <string-token>’s value. - } - } - } - - // § 4.3.6. Consume a url token - // Note: This algorithm assumes that the initial "url(" has already been consumed. - // This algorithm also assumes that it’s being called to consume an "unquoted" value, like url(foo). - // A quoted value, like url("foo"), is parsed as a <function-token>. Consume an ident-like token - // automatically handles this distinction; this algorithm shouldn’t be called directly otherwise. - function consumeUrlToken() { - // Initially create a <url-token> with its value set to the empty string. - type = TYPE.Url; - - // Consume as much whitespace as possible. - offset = findWhiteSpaceEnd(source, offset); - - // Repeatedly consume the next input code point from the stream: - for (; offset < source.length; offset++) { - const code = source.charCodeAt(offset); - - switch (charCodeCategory(code)) { - // U+0029 RIGHT PARENTHESIS ()) - case 0x0029: - // Return the <url-token>. - offset++; - return; - - // EOF - // case EofCategory: - // This is a parse error. Return the <url-token>. - // return; - - // whitespace - case WhiteSpaceCategory: - // Consume as much whitespace as possible. - offset = findWhiteSpaceEnd(source, offset); - - // If the next input code point is U+0029 RIGHT PARENTHESIS ()) or EOF, - // consume it and return the <url-token> - // (if EOF was encountered, this is a parse error); - if (getCharCode(offset) === 0x0029 || offset >= source.length) { - if (offset < source.length) { - offset++; - } - return; - } - - // otherwise, consume the remnants of a bad url, create a <bad-url-token>, - // and return it. - offset = consumeBadUrlRemnants(source, offset); - type = TYPE.BadUrl; - return; - - // U+0022 QUOTATION MARK (") - // U+0027 APOSTROPHE (') - // U+0028 LEFT PARENTHESIS (() - // non-printable code point - case 0x0022: - case 0x0027: - case 0x0028: - case NonPrintableCategory: - // This is a parse error. Consume the remnants of a bad url, - // create a <bad-url-token>, and return it. - offset = consumeBadUrlRemnants(source, offset); - type = TYPE.BadUrl; - return; - - // U+005C REVERSE SOLIDUS (\) - case 0x005C: - // If the stream starts with a valid escape, consume an escaped code point and - // append the returned code point to the <url-token>’s value. - if (isValidEscape(code, getCharCode(offset + 1))) { - offset = consumeEscaped(source, offset) - 1; - break; - } - - // Otherwise, this is a parse error. Consume the remnants of a bad url, - // create a <bad-url-token>, and return it. - offset = consumeBadUrlRemnants(source, offset); - type = TYPE.BadUrl; - return; - - // anything else - // Append the current input code point to the <url-token>’s value. - } - } - } - - // ensure source is a string - source = String(source || ''); - - const sourceLength = source.length; - let start = isBOM(getCharCode(0)); - let offset = start; - let type; - - // https://drafts.csswg.org/css-syntax-3/#consume-token - // § 4.3.1. Consume a token - while (offset < sourceLength) { - const code = source.charCodeAt(offset); - - switch (charCodeCategory(code)) { - // whitespace - case WhiteSpaceCategory: - // Consume as much whitespace as possible. Return a <whitespace-token>. - type = TYPE.WhiteSpace; - offset = findWhiteSpaceEnd(source, offset + 1); - break; - - // U+0022 QUOTATION MARK (") - case 0x0022: - // Consume a string token and return it. - consumeStringToken(); - break; - - // U+0023 NUMBER SIGN (#) - case 0x0023: - // If the next input code point is a name code point or the next two input code points are a valid escape, then: - if (isName(getCharCode(offset + 1)) || isValidEscape(getCharCode(offset + 1), getCharCode(offset + 2))) { - // Create a <hash-token>. - type = TYPE.Hash; - - // If the next 3 input code points would start an identifier, set the <hash-token>’s type flag to "id". - // if (isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) { - // // TODO: set id flag - // } - - // Consume a name, and set the <hash-token>’s value to the returned string. - offset = consumeName(source, offset + 1); - - // Return the <hash-token>. - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = TYPE.Delim; - offset++; - } - - break; - - // U+0027 APOSTROPHE (') - case 0x0027: - // Consume a string token and return it. - consumeStringToken(); - break; - - // U+0028 LEFT PARENTHESIS (() - case 0x0028: - // Return a <(-token>. - type = TYPE.LeftParenthesis; - offset++; - break; - - // U+0029 RIGHT PARENTHESIS ()) - case 0x0029: - // Return a <)-token>. - type = TYPE.RightParenthesis; - offset++; - break; - - // U+002B PLUS SIGN (+) - case 0x002B: - // If the input stream starts with a number, ... - if (isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { - // ... reconsume the current input code point, consume a numeric token, and return it. - consumeNumericToken(); - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = TYPE.Delim; - offset++; - } - break; - - // U+002C COMMA (,) - case 0x002C: - // Return a <comma-token>. - type = TYPE.Comma; - offset++; - break; - - // U+002D HYPHEN-MINUS (-) - case 0x002D: - // If the input stream starts with a number, reconsume the current input code point, consume a numeric token, and return it. - if (isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { - consumeNumericToken(); - } else { - // Otherwise, if the next 2 input code points are U+002D HYPHEN-MINUS U+003E GREATER-THAN SIGN (->), consume them and return a <CDC-token>. - if (getCharCode(offset + 1) === 0x002D && - getCharCode(offset + 2) === 0x003E) { - type = TYPE.CDC; - offset = offset + 3; - } else { - // Otherwise, if the input stream starts with an identifier, ... - if (isIdentifierStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { - // ... reconsume the current input code point, consume an ident-like token, and return it. - consumeIdentLikeToken(); - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = TYPE.Delim; - offset++; - } - } - } - break; - - // U+002E FULL STOP (.) - case 0x002E: - // If the input stream starts with a number, ... - if (isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) { - // ... reconsume the current input code point, consume a numeric token, and return it. - consumeNumericToken(); - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = TYPE.Delim; - offset++; - } - - break; - - // U+002F SOLIDUS (/) - case 0x002F: - // If the next two input code point are U+002F SOLIDUS (/) followed by a U+002A ASTERISK (*), - if (getCharCode(offset + 1) === 0x002A) { - // ... consume them and all following code points up to and including the first U+002A ASTERISK (*) - // followed by a U+002F SOLIDUS (/), or up to an EOF code point. - type = TYPE.Comment; - offset = source.indexOf('*/', offset + 2); - offset = offset === -1 ? source.length : offset + 2; - } else { - type = TYPE.Delim; - offset++; - } - break; - - // U+003A COLON (:) - case 0x003A: - // Return a <colon-token>. - type = TYPE.Colon; - offset++; - break; - - // U+003B SEMICOLON (;) - case 0x003B: - // Return a <semicolon-token>. - type = TYPE.Semicolon; - offset++; - break; - - // U+003C LESS-THAN SIGN (<) - case 0x003C: - // If the next 3 input code points are U+0021 EXCLAMATION MARK U+002D HYPHEN-MINUS U+002D HYPHEN-MINUS (!--), ... - if (getCharCode(offset + 1) === 0x0021 && - getCharCode(offset + 2) === 0x002D && - getCharCode(offset + 3) === 0x002D) { - // ... consume them and return a <CDO-token>. - type = TYPE.CDO; - offset = offset + 4; - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = TYPE.Delim; - offset++; - } - - break; - - // U+0040 COMMERCIAL AT (@) - case 0x0040: - // If the next 3 input code points would start an identifier, ... - if (isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) { - // ... consume a name, create an <at-keyword-token> with its value set to the returned value, and return it. - type = TYPE.AtKeyword; - offset = consumeName(source, offset + 1); - } else { - // Otherwise, return a <delim-token> with its value set to the current input code point. - type = TYPE.Delim; - offset++; - } - - break; - - // U+005B LEFT SQUARE BRACKET ([) - case 0x005B: - // Return a <[-token>. - type = TYPE.LeftSquareBracket; - offset++; - break; - - // U+005C REVERSE SOLIDUS (\) - case 0x005C: - // If the input stream starts with a valid escape, ... - if (isValidEscape(code, getCharCode(offset + 1))) { - // ... reconsume the current input code point, consume an ident-like token, and return it. - consumeIdentLikeToken(); - } else { - // Otherwise, this is a parse error. Return a <delim-token> with its value set to the current input code point. - type = TYPE.Delim; - offset++; - } - break; - - // U+005D RIGHT SQUARE BRACKET (]) - case 0x005D: - // Return a <]-token>. - type = TYPE.RightSquareBracket; - offset++; - break; - - // U+007B LEFT CURLY BRACKET ({) - case 0x007B: - // Return a <{-token>. - type = TYPE.LeftCurlyBracket; - offset++; - break; - - // U+007D RIGHT CURLY BRACKET (}) - case 0x007D: - // Return a <}-token>. - type = TYPE.RightCurlyBracket; - offset++; - break; - - // digit - case DigitCategory: - // Reconsume the current input code point, consume a numeric token, and return it. - consumeNumericToken(); - break; - - // name-start code point - case NameStartCategory: - // Reconsume the current input code point, consume an ident-like token, and return it. - consumeIdentLikeToken(); - break; - - // EOF - // case EofCategory: - // Return an <EOF-token>. - // break; - - // anything else - default: - // Return a <delim-token> with its value set to the current input code point. - type = TYPE.Delim; - offset++; - } - - // put token to stream - onToken(type, start, start = offset); - } -} - -export * from './types.js'; -export * as tokenTypes from './types.js'; -export { default as tokenNames } from './names.js'; -export * from './char-code-definitions.js'; -export * from './utils.js'; -export * from './OffsetToLocation.js'; -export * from './TokenStream.js'; diff --git a/node_modules/csso/node_modules/css-tree/lib/tokenizer/names.js b/node_modules/csso/node_modules/css-tree/lib/tokenizer/names.js deleted file mode 100644 index 297c73e6..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/tokenizer/names.js +++ /dev/null @@ -1,27 +0,0 @@ -export default [ - 'EOF-token', - 'ident-token', - 'function-token', - 'at-keyword-token', - 'hash-token', - 'string-token', - 'bad-string-token', - 'url-token', - 'bad-url-token', - 'delim-token', - 'number-token', - 'percentage-token', - 'dimension-token', - 'whitespace-token', - 'CDO-token', - 'CDC-token', - 'colon-token', - 'semicolon-token', - 'comma-token', - '[-token', - ']-token', - '(-token', - ')-token', - '{-token', - '}-token' -]; diff --git a/node_modules/csso/node_modules/css-tree/lib/tokenizer/types.js b/node_modules/csso/node_modules/css-tree/lib/tokenizer/types.js deleted file mode 100644 index 5018569a..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/tokenizer/types.js +++ /dev/null @@ -1,28 +0,0 @@ -// CSS Syntax Module Level 3 -// https://www.w3.org/TR/css-syntax-3/ -export const EOF = 0; // <EOF-token> -export const Ident = 1; // <ident-token> -export const Function = 2; // <function-token> -export const AtKeyword = 3; // <at-keyword-token> -export const Hash = 4; // <hash-token> -export const String = 5; // <string-token> -export const BadString = 6; // <bad-string-token> -export const Url = 7; // <url-token> -export const BadUrl = 8; // <bad-url-token> -export const Delim = 9; // <delim-token> -export const Number = 10; // <number-token> -export const Percentage = 11; // <percentage-token> -export const Dimension = 12; // <dimension-token> -export const WhiteSpace = 13; // <whitespace-token> -export const CDO = 14; // <CDO-token> -export const CDC = 15; // <CDC-token> -export const Colon = 16; // <colon-token> : -export const Semicolon = 17; // <semicolon-token> ; -export const Comma = 18; // <comma-token> , -export const LeftSquareBracket = 19; // <[-token> -export const RightSquareBracket = 20; // <]-token> -export const LeftParenthesis = 21; // <(-token> -export const RightParenthesis = 22; // <)-token> -export const LeftCurlyBracket = 23; // <{-token> -export const RightCurlyBracket = 24; // <}-token> -export const Comment = 25; diff --git a/node_modules/csso/node_modules/css-tree/lib/tokenizer/utils.js b/node_modules/csso/node_modules/css-tree/lib/tokenizer/utils.js deleted file mode 100644 index c131ec5b..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/tokenizer/utils.js +++ /dev/null @@ -1,254 +0,0 @@ -import { - isDigit, - isHexDigit, - isUppercaseLetter, - isName, - isWhiteSpace, - isValidEscape -} from './char-code-definitions.js'; - -function getCharCode(source, offset) { - return offset < source.length ? source.charCodeAt(offset) : 0; -} - -export function getNewlineLength(source, offset, code) { - if (code === 13 /* \r */ && getCharCode(source, offset + 1) === 10 /* \n */) { - return 2; - } - - return 1; -} - -export function cmpChar(testStr, offset, referenceCode) { - let code = testStr.charCodeAt(offset); - - // code.toLowerCase() for A..Z - if (isUppercaseLetter(code)) { - code = code | 32; - } - - return code === referenceCode; -} - -export function cmpStr(testStr, start, end, referenceStr) { - if (end - start !== referenceStr.length) { - return false; - } - - if (start < 0 || end > testStr.length) { - return false; - } - - for (let i = start; i < end; i++) { - const referenceCode = referenceStr.charCodeAt(i - start); - let testCode = testStr.charCodeAt(i); - - // testCode.toLowerCase() for A..Z - if (isUppercaseLetter(testCode)) { - testCode = testCode | 32; - } - - if (testCode !== referenceCode) { - return false; - } - } - - return true; -} - -export function findWhiteSpaceStart(source, offset) { - for (; offset >= 0; offset--) { - if (!isWhiteSpace(source.charCodeAt(offset))) { - break; - } - } - - return offset + 1; -} - -export function findWhiteSpaceEnd(source, offset) { - for (; offset < source.length; offset++) { - if (!isWhiteSpace(source.charCodeAt(offset))) { - break; - } - } - - return offset; -} - -export function findDecimalNumberEnd(source, offset) { - for (; offset < source.length; offset++) { - if (!isDigit(source.charCodeAt(offset))) { - break; - } - } - - return offset; -} - -// § 4.3.7. Consume an escaped code point -export function consumeEscaped(source, offset) { - // It assumes that the U+005C REVERSE SOLIDUS (\) has already been consumed and - // that the next input code point has already been verified to be part of a valid escape. - offset += 2; - - // hex digit - if (isHexDigit(getCharCode(source, offset - 1))) { - // Consume as many hex digits as possible, but no more than 5. - // Note that this means 1-6 hex digits have been consumed in total. - for (const maxOffset = Math.min(source.length, offset + 5); offset < maxOffset; offset++) { - if (!isHexDigit(getCharCode(source, offset))) { - break; - } - } - - // If the next input code point is whitespace, consume it as well. - const code = getCharCode(source, offset); - if (isWhiteSpace(code)) { - offset += getNewlineLength(source, offset, code); - } - } - - return offset; -} - -// §4.3.11. Consume a name -// Note: This algorithm does not do the verification of the first few code points that are necessary -// to ensure the returned code points would constitute an <ident-token>. If that is the intended use, -// ensure that the stream starts with an identifier before calling this algorithm. -export function consumeName(source, offset) { - // Let result initially be an empty string. - // Repeatedly consume the next input code point from the stream: - for (; offset < source.length; offset++) { - const code = source.charCodeAt(offset); - - // name code point - if (isName(code)) { - // Append the code point to result. - continue; - } - - // the stream starts with a valid escape - if (isValidEscape(code, getCharCode(source, offset + 1))) { - // Consume an escaped code point. Append the returned code point to result. - offset = consumeEscaped(source, offset) - 1; - continue; - } - - // anything else - // Reconsume the current input code point. Return result. - break; - } - - return offset; -} - -// §4.3.12. Consume a number -export function consumeNumber(source, offset) { - let code = source.charCodeAt(offset); - - // 2. If the next input code point is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-), - // consume it and append it to repr. - if (code === 0x002B || code === 0x002D) { - code = source.charCodeAt(offset += 1); - } - - // 3. While the next input code point is a digit, consume it and append it to repr. - if (isDigit(code)) { - offset = findDecimalNumberEnd(source, offset + 1); - code = source.charCodeAt(offset); - } - - // 4. If the next 2 input code points are U+002E FULL STOP (.) followed by a digit, then: - if (code === 0x002E && isDigit(source.charCodeAt(offset + 1))) { - // 4.1 Consume them. - // 4.2 Append them to repr. - offset += 2; - - // 4.3 Set type to "number". - // TODO - - // 4.4 While the next input code point is a digit, consume it and append it to repr. - - offset = findDecimalNumberEnd(source, offset); - } - - // 5. If the next 2 or 3 input code points are U+0045 LATIN CAPITAL LETTER E (E) - // or U+0065 LATIN SMALL LETTER E (e), ... , followed by a digit, then: - if (cmpChar(source, offset, 101 /* e */)) { - let sign = 0; - code = source.charCodeAt(offset + 1); - - // ... optionally followed by U+002D HYPHEN-MINUS (-) or U+002B PLUS SIGN (+) ... - if (code === 0x002D || code === 0x002B) { - sign = 1; - code = source.charCodeAt(offset + 2); - } - - // ... followed by a digit - if (isDigit(code)) { - // 5.1 Consume them. - // 5.2 Append them to repr. - - // 5.3 Set type to "number". - // TODO - - // 5.4 While the next input code point is a digit, consume it and append it to repr. - offset = findDecimalNumberEnd(source, offset + 1 + sign + 1); - } - } - - return offset; -} - -// § 4.3.14. Consume the remnants of a bad url -// ... its sole use is to consume enough of the input stream to reach a recovery point -// where normal tokenizing can resume. -export function consumeBadUrlRemnants(source, offset) { - // Repeatedly consume the next input code point from the stream: - for (; offset < source.length; offset++) { - const code = source.charCodeAt(offset); - - // U+0029 RIGHT PARENTHESIS ()) - // EOF - if (code === 0x0029) { - // Return. - offset++; - break; - } - - if (isValidEscape(code, getCharCode(source, offset + 1))) { - // Consume an escaped code point. - // Note: This allows an escaped right parenthesis ("\)") to be encountered - // without ending the <bad-url-token>. This is otherwise identical to - // the "anything else" clause. - offset = consumeEscaped(source, offset); - } - } - - return offset; -} - -// § 4.3.7. Consume an escaped code point -// Note: This algorithm assumes that escaped is valid without leading U+005C REVERSE SOLIDUS (\) -export function decodeEscaped(escaped) { - // Single char escaped that's not a hex digit - if (escaped.length === 1 && !isHexDigit(escaped.charCodeAt(0))) { - return escaped[0]; - } - - // Interpret the hex digits as a hexadecimal number. - let code = parseInt(escaped, 16); - - if ( - (code === 0) || // If this number is zero, - (code >= 0xD800 && code <= 0xDFFF) || // or is for a surrogate, - (code > 0x10FFFF) // or is greater than the maximum allowed code point - ) { - // ... return U+FFFD REPLACEMENT CHARACTER - code = 0xFFFD; - } - - // Otherwise, return the code point with that value. - return String.fromCodePoint(code); -} diff --git a/node_modules/csso/node_modules/css-tree/lib/utils/List.js b/node_modules/csso/node_modules/css-tree/lib/utils/List.js deleted file mode 100644 index 89532649..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/utils/List.js +++ /dev/null @@ -1,469 +0,0 @@ -// -// list -// ┌──────┐ -// ┌──────────────┼─head │ -// │ │ tail─┼──────────────┐ -// │ └──────┘ │ -// ▼ ▼ -// item item item item -// ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ -// null ◀──┼─prev │◀───┼─prev │◀───┼─prev │◀───┼─prev │ -// │ next─┼───▶│ next─┼───▶│ next─┼───▶│ next─┼──▶ null -// ├──────┤ ├──────┤ ├──────┤ ├──────┤ -// │ data │ │ data │ │ data │ │ data │ -// └──────┘ └──────┘ └──────┘ └──────┘ -// - -let releasedCursors = null; - -export class List { - static createItem(data) { - return { - prev: null, - next: null, - data - }; - } - - constructor() { - this.head = null; - this.tail = null; - this.cursor = null; - } - createItem(data) { - return List.createItem(data); - } - - // cursor helpers - allocateCursor(prev, next) { - let cursor; - - if (releasedCursors !== null) { - cursor = releasedCursors; - releasedCursors = releasedCursors.cursor; - cursor.prev = prev; - cursor.next = next; - cursor.cursor = this.cursor; - } else { - cursor = { - prev, - next, - cursor: this.cursor - }; - } - - this.cursor = cursor; - - return cursor; - } - releaseCursor() { - const { cursor } = this; - - this.cursor = cursor.cursor; - cursor.prev = null; - cursor.next = null; - cursor.cursor = releasedCursors; - releasedCursors = cursor; - } - updateCursors(prevOld, prevNew, nextOld, nextNew) { - let { cursor } = this; - - while (cursor !== null) { - if (cursor.prev === prevOld) { - cursor.prev = prevNew; - } - - if (cursor.next === nextOld) { - cursor.next = nextNew; - } - - cursor = cursor.cursor; - } - } - *[Symbol.iterator]() { - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - yield cursor.data; - } - } - - // getters - get size() { - let size = 0; - - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - size++; - } - - return size; - } - get isEmpty() { - return this.head === null; - } - get first() { - return this.head && this.head.data; - } - get last() { - return this.tail && this.tail.data; - } - - // convertors - fromArray(array) { - let cursor = null; - this.head = null; - - for (let data of array) { - const item = List.createItem(data); - - if (cursor !== null) { - cursor.next = item; - } else { - this.head = item; - } - - item.prev = cursor; - cursor = item; - } - - this.tail = cursor; - return this; - } - toArray() { - return [...this]; - } - toJSON() { - return [...this]; - } - - // array-like methods - forEach(fn, thisArg = this) { - // push cursor - const cursor = this.allocateCursor(null, this.head); - - while (cursor.next !== null) { - const item = cursor.next; - cursor.next = item.next; - fn.call(thisArg, item.data, item, this); - } - - // pop cursor - this.releaseCursor(); - } - forEachRight(fn, thisArg = this) { - // push cursor - const cursor = this.allocateCursor(this.tail, null); - - while (cursor.prev !== null) { - const item = cursor.prev; - cursor.prev = item.prev; - fn.call(thisArg, item.data, item, this); - } - - // pop cursor - this.releaseCursor(); - } - reduce(fn, initialValue, thisArg = this) { - // push cursor - let cursor = this.allocateCursor(null, this.head); - let acc = initialValue; - let item; - - while (cursor.next !== null) { - item = cursor.next; - cursor.next = item.next; - - acc = fn.call(thisArg, acc, item.data, item, this); - } - - // pop cursor - this.releaseCursor(); - - return acc; - } - reduceRight(fn, initialValue, thisArg = this) { - // push cursor - let cursor = this.allocateCursor(this.tail, null); - let acc = initialValue; - let item; - - while (cursor.prev !== null) { - item = cursor.prev; - cursor.prev = item.prev; - - acc = fn.call(thisArg, acc, item.data, item, this); - } - - // pop cursor - this.releaseCursor(); - - return acc; - } - some(fn, thisArg = this) { - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - if (fn.call(thisArg, cursor.data, cursor, this)) { - return true; - } - } - - return false; - } - map(fn, thisArg = this) { - const result = new List(); - - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - result.appendData(fn.call(thisArg, cursor.data, cursor, this)); - } - - return result; - } - filter(fn, thisArg = this) { - const result = new List(); - - for (let cursor = this.head; cursor !== null; cursor = cursor.next) { - if (fn.call(thisArg, cursor.data, cursor, this)) { - result.appendData(cursor.data); - } - } - - return result; - } - - nextUntil(start, fn, thisArg = this) { - if (start === null) { - return; - } - - // push cursor - const cursor = this.allocateCursor(null, start); - - while (cursor.next !== null) { - const item = cursor.next; - cursor.next = item.next; - if (fn.call(thisArg, item.data, item, this)) { - break; - } - } - - // pop cursor - this.releaseCursor(); - } - prevUntil(start, fn, thisArg = this) { - if (start === null) { - return; - } - - // push cursor - const cursor = this.allocateCursor(start, null); - - while (cursor.prev !== null) { - const item = cursor.prev; - cursor.prev = item.prev; - if (fn.call(thisArg, item.data, item, this)) { - break; - } - } - - // pop cursor - this.releaseCursor(); - } - - // mutation - clear() { - this.head = null; - this.tail = null; - } - copy() { - const result = new List(); - - for (let data of this) { - result.appendData(data); - } - - return result; - } - prepend(item) { - // head - // ^ - // item - this.updateCursors(null, item, this.head, item); - - // insert to the beginning of the list - if (this.head !== null) { - // new item <- first item - this.head.prev = item; - // new item -> first item - item.next = this.head; - } else { - // if list has no head, then it also has no tail - // in this case tail points to the new item - this.tail = item; - } - - // head always points to new item - this.head = item; - return this; - } - prependData(data) { - return this.prepend(List.createItem(data)); - } - append(item) { - return this.insert(item); - } - appendData(data) { - return this.insert(List.createItem(data)); - } - insert(item, before = null) { - if (before !== null) { - // prev before - // ^ - // item - this.updateCursors(before.prev, item, before, item); - - if (before.prev === null) { - // insert to the beginning of list - if (this.head !== before) { - throw new Error('before doesn\'t belong to list'); - } - // since head points to before therefore list doesn't empty - // no need to check tail - this.head = item; - before.prev = item; - item.next = before; - this.updateCursors(null, item); - } else { - // insert between two items - before.prev.next = item; - item.prev = before.prev; - before.prev = item; - item.next = before; - } - } else { - // tail - // ^ - // item - this.updateCursors(this.tail, item, null, item); - - // insert to the ending of the list - if (this.tail !== null) { - // last item -> new item - this.tail.next = item; - // last item <- new item - item.prev = this.tail; - } else { - // if list has no tail, then it also has no head - // in this case head points to new item - this.head = item; - } - - // tail always points to new item - this.tail = item; - } - - return this; - } - insertData(data, before) { - return this.insert(List.createItem(data), before); - } - remove(item) { - // item - // ^ - // prev next - this.updateCursors(item, item.prev, item, item.next); - - if (item.prev !== null) { - item.prev.next = item.next; - } else { - if (this.head !== item) { - throw new Error('item doesn\'t belong to list'); - } - - this.head = item.next; - } - - if (item.next !== null) { - item.next.prev = item.prev; - } else { - if (this.tail !== item) { - throw new Error('item doesn\'t belong to list'); - } - - this.tail = item.prev; - } - - item.prev = null; - item.next = null; - - return item; - } - push(data) { - this.insert(List.createItem(data)); - } - pop() { - return this.tail !== null ? this.remove(this.tail) : null; - } - unshift(data) { - this.prepend(List.createItem(data)); - } - shift() { - return this.head !== null ? this.remove(this.head) : null; - } - prependList(list) { - return this.insertList(list, this.head); - } - appendList(list) { - return this.insertList(list); - } - insertList(list, before) { - // ignore empty lists - if (list.head === null) { - return this; - } - - if (before !== undefined && before !== null) { - this.updateCursors(before.prev, list.tail, before, list.head); - - // insert in the middle of dist list - if (before.prev !== null) { - // before.prev <-> list.head - before.prev.next = list.head; - list.head.prev = before.prev; - } else { - this.head = list.head; - } - - before.prev = list.tail; - list.tail.next = before; - } else { - this.updateCursors(this.tail, list.tail, null, list.head); - - // insert to end of the list - if (this.tail !== null) { - // if destination list has a tail, then it also has a head, - // but head doesn't change - // dest tail -> source head - this.tail.next = list.head; - // dest tail <- source head - list.head.prev = this.tail; - } else { - // if list has no a tail, then it also has no a head - // in this case points head to new item - this.head = list.head; - } - - // tail always start point to new item - this.tail = list.tail; - } - - list.head = null; - list.tail = null; - return this; - } - replace(oldItem, newItemOrList) { - if ('head' in newItemOrList) { - this.insertList(newItemOrList, oldItem); - } else { - this.insert(newItemOrList, oldItem); - } - - this.remove(oldItem); - } -} diff --git a/node_modules/csso/node_modules/css-tree/lib/utils/clone.js b/node_modules/csso/node_modules/css-tree/lib/utils/clone.js deleted file mode 100644 index b2565a7f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/utils/clone.js +++ /dev/null @@ -1,21 +0,0 @@ -import { List } from './List.js'; - -export function clone(node) { - const result = {}; - - for (const key in node) { - let value = node[key]; - - if (value) { - if (Array.isArray(value) || value instanceof List) { - value = value.map(clone); - } else if (value.constructor === Object) { - value = clone(value); - } - } - - result[key] = value; - } - - return result; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/utils/create-custom-error.js b/node_modules/csso/node_modules/css-tree/lib/utils/create-custom-error.js deleted file mode 100644 index dba122f4..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/utils/create-custom-error.js +++ /dev/null @@ -1,14 +0,0 @@ -export function createCustomError(name, message) { - // use Object.create(), because some VMs prevent setting line/column otherwise - // (iOS Safari 10 even throws an exception) - const error = Object.create(SyntaxError.prototype); - const errorStack = new Error(); - - return Object.assign(error, { - name, - message, - get stack() { - return (errorStack.stack || '').replace(/^(.+\n){1,3}/, `${name}: ${message}\n`); - } - }); -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/utils/ident.js b/node_modules/csso/node_modules/css-tree/lib/utils/ident.js deleted file mode 100644 index 9cbe0f86..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/utils/ident.js +++ /dev/null @@ -1,101 +0,0 @@ -import { - isName, - isValidEscape, - consumeEscaped, - decodeEscaped -} from '../tokenizer/index.js'; - -const REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\) - -export function decode(str) { - const end = str.length - 1; - let decoded = ''; - - for (let i = 0; i < str.length; i++) { - let code = str.charCodeAt(i); - - if (code === REVERSE_SOLIDUS) { - // special case at the ending - if (i === end) { - // if the next input code point is EOF, do nothing - break; - } - - code = str.charCodeAt(++i); - - // consume escaped - if (isValidEscape(REVERSE_SOLIDUS, code)) { - const escapeStart = i - 1; - const escapeEnd = consumeEscaped(str, escapeStart); - - i = escapeEnd - 1; - decoded += decodeEscaped(str.substring(escapeStart + 1, escapeEnd)); - } else { - // \r\n - if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) { - i++; - } - } - } else { - decoded += str[i]; - } - } - - return decoded; -} - -// https://drafts.csswg.org/cssom/#serialize-an-identifier -// § 2.1. Common Serializing Idioms -export function encode(str) { - let encoded = ''; - - // If the character is the first character and is a "-" (U+002D), - // and there is no second character, then the escaped character. - // Note: That's means a single dash string "-" return as escaped dash, - // so move the condition out of the main loop - if (str.length === 1 && str.charCodeAt(0) === 0x002D) { - return '\\-'; - } - - // To serialize an identifier means to create a string represented - // by the concatenation of, for each character of the identifier: - for (let i = 0; i < str.length; i++) { - const code = str.charCodeAt(i); - - // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD). - if (code === 0x0000) { - encoded += '\uFFFD'; - continue; - } - - if ( - // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F ... - // Note: Do not compare with 0x0001 since 0x0000 is precessed before - code <= 0x001F || code === 0x007F || - // [or] ... is in the range [0-9] (U+0030 to U+0039), - (code >= 0x0030 && code <= 0x0039 && ( - // If the character is the first character ... - i === 0 || - // If the character is the second character ... and the first character is a "-" (U+002D) - i === 1 && str.charCodeAt(0) === 0x002D - )) - ) { - // ... then the character escaped as code point. - encoded += '\\' + code.toString(16) + ' '; - continue; - } - - // If the character is not handled by one of the above rules and is greater - // than or equal to U+0080, is "-" (U+002D) or "_" (U+005F), or is in one - // of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to U+005A), - // or \[a-z] (U+0061 to U+007A), then the character itself. - if (isName(code)) { - encoded += str.charAt(i); - } else { - // Otherwise, the escaped character. - encoded += '\\' + str.charAt(i); - } - } - - return encoded; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/utils/index.js b/node_modules/csso/node_modules/css-tree/lib/utils/index.js deleted file mode 100644 index 07bf0f93..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/utils/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export * from './clone.js'; -export * as ident from './ident.js'; -export * from './List.js'; -export * from './names.js'; -export * as string from './string.js'; -export * as url from './url.js'; diff --git a/node_modules/csso/node_modules/css-tree/lib/utils/names.js b/node_modules/csso/node_modules/css-tree/lib/utils/names.js deleted file mode 100644 index b4f74b91..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/utils/names.js +++ /dev/null @@ -1,106 +0,0 @@ -const keywords = new Map(); -const properties = new Map(); -const HYPHENMINUS = 45; // '-'.charCodeAt() - -export const keyword = getKeywordDescriptor; -export const property = getPropertyDescriptor; -export const vendorPrefix = getVendorPrefix; -export function isCustomProperty(str, offset) { - offset = offset || 0; - - return str.length - offset >= 2 && - str.charCodeAt(offset) === HYPHENMINUS && - str.charCodeAt(offset + 1) === HYPHENMINUS; -} - -function getVendorPrefix(str, offset) { - offset = offset || 0; - - // verdor prefix should be at least 3 chars length - if (str.length - offset >= 3) { - // vendor prefix starts with hyper minus following non-hyper minus - if (str.charCodeAt(offset) === HYPHENMINUS && - str.charCodeAt(offset + 1) !== HYPHENMINUS) { - // vendor prefix should contain a hyper minus at the ending - const secondDashIndex = str.indexOf('-', offset + 2); - - if (secondDashIndex !== -1) { - return str.substring(offset, secondDashIndex + 1); - } - } - } - - return ''; -} - -function getKeywordDescriptor(keyword) { - if (keywords.has(keyword)) { - return keywords.get(keyword); - } - - const name = keyword.toLowerCase(); - let descriptor = keywords.get(name); - - if (descriptor === undefined) { - const custom = isCustomProperty(name, 0); - const vendor = !custom ? getVendorPrefix(name, 0) : ''; - descriptor = Object.freeze({ - basename: name.substr(vendor.length), - name, - prefix: vendor, - vendor, - custom - }); - } - - keywords.set(keyword, descriptor); - - return descriptor; -} - -function getPropertyDescriptor(property) { - if (properties.has(property)) { - return properties.get(property); - } - - let name = property; - let hack = property[0]; - - if (hack === '/') { - hack = property[1] === '/' ? '//' : '/'; - } else if (hack !== '_' && - hack !== '*' && - hack !== '$' && - hack !== '#' && - hack !== '+' && - hack !== '&') { - hack = ''; - } - - const custom = isCustomProperty(name, hack.length); - - // re-use result when possible (the same as for lower case) - if (!custom) { - name = name.toLowerCase(); - if (properties.has(name)) { - const descriptor = properties.get(name); - properties.set(property, descriptor); - return descriptor; - } - } - - const vendor = !custom ? getVendorPrefix(name, hack.length) : ''; - const prefix = name.substr(0, hack.length + vendor.length); - const descriptor = Object.freeze({ - basename: name.substr(prefix.length), - name: name.substr(hack.length), - hack, - vendor, - prefix, - custom - }); - - properties.set(property, descriptor); - - return descriptor; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/utils/string.js b/node_modules/csso/node_modules/css-tree/lib/utils/string.js deleted file mode 100644 index 928a85bc..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/utils/string.js +++ /dev/null @@ -1,99 +0,0 @@ -import { - isHexDigit, - isWhiteSpace, - isValidEscape, - consumeEscaped, - decodeEscaped -} from '../tokenizer/index.js'; - -const REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\) -const QUOTATION_MARK = 0x0022; // " -const APOSTROPHE = 0x0027; // ' - -export function decode(str) { - const len = str.length; - const firstChar = str.charCodeAt(0); - const start = firstChar === QUOTATION_MARK || firstChar === APOSTROPHE ? 1 : 0; - const end = start === 1 && len > 1 && str.charCodeAt(len - 1) === firstChar ? len - 2 : len - 1; - let decoded = ''; - - for (let i = start; i <= end; i++) { - let code = str.charCodeAt(i); - - if (code === REVERSE_SOLIDUS) { - // special case at the ending - if (i === end) { - // if the next input code point is EOF, do nothing - // otherwise include last quote as escaped - if (i !== len - 1) { - decoded = str.substr(i + 1); - } - break; - } - - code = str.charCodeAt(++i); - - // consume escaped - if (isValidEscape(REVERSE_SOLIDUS, code)) { - const escapeStart = i - 1; - const escapeEnd = consumeEscaped(str, escapeStart); - - i = escapeEnd - 1; - decoded += decodeEscaped(str.substring(escapeStart + 1, escapeEnd)); - } else { - // \r\n - if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) { - i++; - } - } - } else { - decoded += str[i]; - } - } - - return decoded; -} - -// https://drafts.csswg.org/cssom/#serialize-a-string -// § 2.1. Common Serializing Idioms -export function encode(str, apostrophe) { - const quote = apostrophe ? '\'' : '"'; - const quoteCode = apostrophe ? APOSTROPHE : QUOTATION_MARK; - let encoded = ''; - let wsBeforeHexIsNeeded = false; - - for (let i = 0; i < str.length; i++) { - const code = str.charCodeAt(i); - - // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD). - if (code === 0x0000) { - encoded += '\uFFFD'; - continue; - } - - // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F, - // the character escaped as code point. - // Note: Do not compare with 0x0001 since 0x0000 is precessed before - if (code <= 0x001f || code === 0x007F) { - encoded += '\\' + code.toString(16); - wsBeforeHexIsNeeded = true; - continue; - } - - // If the character is '"' (U+0022) or "\" (U+005C), the escaped character. - if (code === quoteCode || code === REVERSE_SOLIDUS) { - encoded += '\\' + str.charAt(i); - wsBeforeHexIsNeeded = false; - } else { - if (wsBeforeHexIsNeeded && (isHexDigit(code) || isWhiteSpace(code))) { - encoded += ' '; - } - - // Otherwise, the character itself. - encoded += str.charAt(i); - wsBeforeHexIsNeeded = false; - } - } - - return quote + encoded + quote; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/utils/url.js b/node_modules/csso/node_modules/css-tree/lib/utils/url.js deleted file mode 100644 index cce5709d..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/utils/url.js +++ /dev/null @@ -1,108 +0,0 @@ -import { - isHexDigit, - isWhiteSpace, - isValidEscape, - consumeEscaped, - decodeEscaped -} from '../tokenizer/index.js'; - -const SPACE = 0x0020; // U+0020 SPACE -const REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\) -const QUOTATION_MARK = 0x0022; // " -const APOSTROPHE = 0x0027; // ' -const LEFTPARENTHESIS = 0x0028; // U+0028 LEFT PARENTHESIS (() -const RIGHTPARENTHESIS = 0x0029; // U+0029 RIGHT PARENTHESIS ()) - -export function decode(str) { - const len = str.length; - let start = 4; // length of "url(" - let end = str.charCodeAt(len - 1) === RIGHTPARENTHESIS ? len - 2 : len - 1; - let decoded = ''; - - while (start < end && isWhiteSpace(str.charCodeAt(start))) { - start++; - } - - while (start < end && isWhiteSpace(str.charCodeAt(end))) { - end--; - } - - for (let i = start; i <= end; i++) { - let code = str.charCodeAt(i); - - if (code === REVERSE_SOLIDUS) { - // special case at the ending - if (i === end) { - // if the next input code point is EOF, do nothing - // otherwise include last left parenthesis as escaped - if (i !== len - 1) { - decoded = str.substr(i + 1); - } - break; - } - - code = str.charCodeAt(++i); - - // consume escaped - if (isValidEscape(REVERSE_SOLIDUS, code)) { - const escapeStart = i - 1; - const escapeEnd = consumeEscaped(str, escapeStart); - - i = escapeEnd - 1; - decoded += decodeEscaped(str.substring(escapeStart + 1, escapeEnd)); - } else { - // \r\n - if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) { - i++; - } - } - } else { - decoded += str[i]; - } - } - - return decoded; -} - -export function encode(str) { - let encoded = ''; - let wsBeforeHexIsNeeded = false; - - for (let i = 0; i < str.length; i++) { - const code = str.charCodeAt(i); - - // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD). - if (code === 0x0000) { - encoded += '\uFFFD'; - continue; - } - - // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F, - // the character escaped as code point. - // Note: Do not compare with 0x0001 since 0x0000 is precessed before - if (code <= 0x001f || code === 0x007F) { - encoded += '\\' + code.toString(16); - wsBeforeHexIsNeeded = true; - continue; - } - - if (code === SPACE || - code === REVERSE_SOLIDUS || - code === QUOTATION_MARK || - code === APOSTROPHE || - code === LEFTPARENTHESIS || - code === RIGHTPARENTHESIS) { - encoded += '\\' + str.charAt(i); - wsBeforeHexIsNeeded = false; - } else { - if (wsBeforeHexIsNeeded && isHexDigit(code)) { - encoded += ' '; - } - - encoded += str.charAt(i); - wsBeforeHexIsNeeded = false; - } - } - - return 'url(' + encoded + ')'; -} diff --git a/node_modules/csso/node_modules/css-tree/lib/version.js b/node_modules/csso/node_modules/css-tree/lib/version.js deleted file mode 100644 index dde3a83f..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/version.js +++ /dev/null @@ -1,5 +0,0 @@ -import { createRequire } from 'module'; - -const require = createRequire(import.meta.url); - -export const { version } = require('../package.json'); diff --git a/node_modules/csso/node_modules/css-tree/lib/walker/create.js b/node_modules/csso/node_modules/css-tree/lib/walker/create.js deleted file mode 100644 index ca76e030..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/walker/create.js +++ /dev/null @@ -1,287 +0,0 @@ -const { hasOwnProperty } = Object.prototype; -const noop = function() {}; - -function ensureFunction(value) { - return typeof value === 'function' ? value : noop; -} - -function invokeForType(fn, type) { - return function(node, item, list) { - if (node.type === type) { - fn.call(this, node, item, list); - } - }; -} - -function getWalkersFromStructure(name, nodeType) { - const structure = nodeType.structure; - const walkers = []; - - for (const key in structure) { - if (hasOwnProperty.call(structure, key) === false) { - continue; - } - - let fieldTypes = structure[key]; - const walker = { - name: key, - type: false, - nullable: false - }; - - if (!Array.isArray(fieldTypes)) { - fieldTypes = [fieldTypes]; - } - - for (const fieldType of fieldTypes) { - if (fieldType === null) { - walker.nullable = true; - } else if (typeof fieldType === 'string') { - walker.type = 'node'; - } else if (Array.isArray(fieldType)) { - walker.type = 'list'; - } - } - - if (walker.type) { - walkers.push(walker); - } - } - - if (walkers.length) { - return { - context: nodeType.walkContext, - fields: walkers - }; - } - - return null; -} - -function getTypesFromConfig(config) { - const types = {}; - - for (const name in config.node) { - if (hasOwnProperty.call(config.node, name)) { - const nodeType = config.node[name]; - - if (!nodeType.structure) { - throw new Error('Missed `structure` field in `' + name + '` node type definition'); - } - - types[name] = getWalkersFromStructure(name, nodeType); - } - } - - return types; -} - -function createTypeIterator(config, reverse) { - const fields = config.fields.slice(); - const contextName = config.context; - const useContext = typeof contextName === 'string'; - - if (reverse) { - fields.reverse(); - } - - return function(node, context, walk, walkReducer) { - let prevContextValue; - - if (useContext) { - prevContextValue = context[contextName]; - context[contextName] = node; - } - - for (const field of fields) { - const ref = node[field.name]; - - if (!field.nullable || ref) { - if (field.type === 'list') { - const breakWalk = reverse - ? ref.reduceRight(walkReducer, false) - : ref.reduce(walkReducer, false); - - if (breakWalk) { - return true; - } - } else if (walk(ref)) { - return true; - } - } - } - - if (useContext) { - context[contextName] = prevContextValue; - } - }; -} - -function createFastTraveralMap({ - StyleSheet, - Atrule, - Rule, - Block, - DeclarationList -}) { - return { - Atrule: { - StyleSheet, - Atrule, - Rule, - Block - }, - Rule: { - StyleSheet, - Atrule, - Rule, - Block - }, - Declaration: { - StyleSheet, - Atrule, - Rule, - Block, - DeclarationList - } - }; -} - -export function createWalker(config) { - const types = getTypesFromConfig(config); - const iteratorsNatural = {}; - const iteratorsReverse = {}; - const breakWalk = Symbol('break-walk'); - const skipNode = Symbol('skip-node'); - - for (const name in types) { - if (hasOwnProperty.call(types, name) && types[name] !== null) { - iteratorsNatural[name] = createTypeIterator(types[name], false); - iteratorsReverse[name] = createTypeIterator(types[name], true); - } - } - - const fastTraversalIteratorsNatural = createFastTraveralMap(iteratorsNatural); - const fastTraversalIteratorsReverse = createFastTraveralMap(iteratorsReverse); - - const walk = function(root, options) { - function walkNode(node, item, list) { - const enterRet = enter.call(context, node, item, list); - - if (enterRet === breakWalk) { - return true; - } - - if (enterRet === skipNode) { - return false; - } - - if (iterators.hasOwnProperty(node.type)) { - if (iterators[node.type](node, context, walkNode, walkReducer)) { - return true; - } - } - - if (leave.call(context, node, item, list) === breakWalk) { - return true; - } - - return false; - } - - let enter = noop; - let leave = noop; - let iterators = iteratorsNatural; - let walkReducer = (ret, data, item, list) => ret || walkNode(data, item, list); - const context = { - break: breakWalk, - skip: skipNode, - - root, - stylesheet: null, - atrule: null, - atrulePrelude: null, - rule: null, - selector: null, - block: null, - declaration: null, - function: null - }; - - if (typeof options === 'function') { - enter = options; - } else if (options) { - enter = ensureFunction(options.enter); - leave = ensureFunction(options.leave); - - if (options.reverse) { - iterators = iteratorsReverse; - } - - if (options.visit) { - if (fastTraversalIteratorsNatural.hasOwnProperty(options.visit)) { - iterators = options.reverse - ? fastTraversalIteratorsReverse[options.visit] - : fastTraversalIteratorsNatural[options.visit]; - } else if (!types.hasOwnProperty(options.visit)) { - throw new Error('Bad value `' + options.visit + '` for `visit` option (should be: ' + Object.keys(types).sort().join(', ') + ')'); - } - - enter = invokeForType(enter, options.visit); - leave = invokeForType(leave, options.visit); - } - } - - if (enter === noop && leave === noop) { - throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\'t a function'); - } - - walkNode(root); - }; - - walk.break = breakWalk; - walk.skip = skipNode; - - walk.find = function(ast, fn) { - let found = null; - - walk(ast, function(node, item, list) { - if (fn.call(this, node, item, list)) { - found = node; - return breakWalk; - } - }); - - return found; - }; - - walk.findLast = function(ast, fn) { - let found = null; - - walk(ast, { - reverse: true, - enter(node, item, list) { - if (fn.call(this, node, item, list)) { - found = node; - return breakWalk; - } - } - }); - - return found; - }; - - walk.findAll = function(ast, fn) { - const found = []; - - walk(ast, function(node, item, list) { - if (fn.call(this, node, item, list)) { - found.push(node); - } - }); - - return found; - }; - - return walk; -}; diff --git a/node_modules/csso/node_modules/css-tree/lib/walker/index.js b/node_modules/csso/node_modules/css-tree/lib/walker/index.js deleted file mode 100644 index 24cb4774..00000000 --- a/node_modules/csso/node_modules/css-tree/lib/walker/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import { createWalker } from './create.js'; -import config from '../syntax/config/walker.js'; - -export default createWalker(config); diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/CHANGELOG.md b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/CHANGELOG.md deleted file mode 100644 index 228e9d82..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/CHANGELOG.md +++ /dev/null @@ -1,50 +0,0 @@ -# Changelog - -## [2.0.28](https://github.com/mdn/data/compare/v2.0.27...v2.0.28) (2022-07-12) - - -### Bug Fixes - -* **css:** correct two syntax examples in selectors ([#589](https://github.com/mdn/data/issues/589)) ([91ab33a](https://github.com/mdn/data/commit/91ab33a40bf2dfd75286a01785453705105533e8)) - -### [2.0.27](https://github.com/mdn/data/compare/v2.0.26...v2.0.27) (2022-02-24) - - -### Miscellaneous Chores - -* release ([a99ae2e](https://github.com/mdn/data/commit/a99ae2ebfeb930524c18f8d46954e8e32ab6b630)) - -### [2.0.26](https://www.github.com/mdn/data/compare/v2.0.25...v2.0.26) (2022-01-19) - - -### Miscellaneous Chores - -* release 2.0.26 ([8b1045d](https://www.github.com/mdn/data/commit/8b1045dc488c7b278c933143efd1bdba75b6832f)) - -### [2.0.25](https://www.github.com/mdn/data/compare/v2.0.24...v2.0.25) (2021-12-21) - - -### Bug Fixes - -* change branch reference to main ([a473261](https://www.github.com/mdn/data/commit/a473261308cf82ee387cec886c70ef3d570fc957)) -* remove old clashing workflow ([af9a18c](https://www.github.com/mdn/data/commit/af9a18ce3af2cbca83582debf3c3d3fc0ace7402)) - - -### Miscellaneous Chores - -* release 2.0.25 ([db5a54b](https://www.github.com/mdn/data/commit/db5a54ba4f3c28b52d0801e115fd5ff0a0052743)) -* release 2.0.25 ([0f453ee](https://www.github.com/mdn/data/commit/0f453eedadbd9065d552203260210bdfafa9d7ff)) - -### [2.0.24](https://www.github.com/mdn/data/compare/v2.0.24...v2.0.24) (2021-12-17) - - -### Miscellaneous Chores - -* release 2.0.24 ([4d00c38](https://www.github.com/mdn/data/commit/4d00c386efe1cfbf536bb3bc80fed6d687f9ad04)) - -### [2.0.24](https://www.github.com/mdn/data/compare/v2.0.23...v2.0.24) (2021-12-15) - - -### Miscellaneous Chores - -* release 2.0.24 ([abff6ff](https://www.github.com/mdn/data/commit/abff6ff0fb88e834c65a2cc05f346b105a9b2e99)) diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/LICENSE b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/LICENSE deleted file mode 100644 index 670154e3..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/LICENSE +++ /dev/null @@ -1,116 +0,0 @@ -CC0 1.0 Universal - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator and -subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for the -purpose of contributing to a commons of creative, cultural and scientific -works ("Commons") that the public can reliably and without fear of later -claims of infringement build upon, modify, incorporate in other works, reuse -and redistribute as freely as possible in any form whatsoever and for any -purposes, including without limitation commercial purposes. These owners may -contribute to the Commons to promote the ideal of a free culture and the -further production of creative, cultural and scientific works, or to gain -reputation or greater distribution for their Work in part through the use and -efforts of others. - -For these and/or other purposes and motivations, and without any expectation -of additional consideration or compensation, the person associating CC0 with a -Work (the "Affirmer"), to the extent that he or she is an owner of Copyright -and Related Rights in the Work, voluntarily elects to apply CC0 to the Work -and publicly distribute the Work under its terms, with knowledge of his or her -Copyright and Related Rights in the Work and the meaning and intended legal -effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not limited -to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, communicate, - and translate a Work; - - ii. moral rights retained by the original author(s) and/or performer(s); - - iii. publicity and privacy rights pertaining to a person's image or likeness - depicted in a Work; - - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - - v. rights protecting the extraction, dissemination, use and reuse of data in - a Work; - - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation thereof, - including any amended or successor version of such directive); and - - vii. other similar, equivalent or corresponding rights throughout the world - based on applicable law or treaty, and any national implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention of, -applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and -unconditionally waives, abandons, and surrenders all of Affirmer's Copyright -and Related Rights and associated claims and causes of action, whether now -known or unknown (including existing as well as future claims and causes of -action), in the Work (i) in all territories worldwide, (ii) for the maximum -duration provided by applicable law or treaty (including future time -extensions), (iii) in any current or future medium and for any number of -copies, and (iv) for any purpose whatsoever, including without limitation -commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes -the Waiver for the benefit of each member of the public at large and to the -detriment of Affirmer's heirs and successors, fully intending that such Waiver -shall not be subject to revocation, rescission, cancellation, termination, or -any other legal or equitable action to disrupt the quiet enjoyment of the Work -by the public as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason be -judged legally invalid or ineffective under applicable law, then the Waiver -shall be preserved to the maximum extent permitted taking into account -Affirmer's express Statement of Purpose. In addition, to the extent the Waiver -is so judged Affirmer hereby grants to each affected person a royalty-free, -non transferable, non sublicensable, non exclusive, irrevocable and -unconditional license to exercise Affirmer's Copyright and Related Rights in -the Work (i) in all territories worldwide, (ii) for the maximum duration -provided by applicable law or treaty (including future time extensions), (iii) -in any current or future medium and for any number of copies, and (iv) for any -purpose whatsoever, including without limitation commercial, advertising or -promotional purposes (the "License"). The License shall be deemed effective as -of the date CC0 was applied by Affirmer to the Work. Should any part of the -License for any reason be judged legally invalid or ineffective under -applicable law, such partial invalidity or ineffectiveness shall not -invalidate the remainder of the License, and in such case Affirmer hereby -affirms that he or she will not (i) exercise any of his or her remaining -Copyright and Related Rights in the Work or (ii) assert any associated claims -and causes of action with respect to the Work, in either case contrary to -Affirmer's express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - - b. Affirmer offers the Work as-is and makes no representations or warranties - of any kind concerning the Work, express, implied, statutory or otherwise, - including without limitation warranties of title, merchantability, fitness - for a particular purpose, non infringement, or the absence of latent or - other defects, accuracy, or the present or absence of errors, whether or not - discoverable, all to the greatest extent permissible under applicable law. - - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without limitation - any person's Copyright and Related Rights in the Work. Further, Affirmer - disclaims responsibility for obtaining any necessary consents, permissions - or other rights required for any use of the Work. - - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to this - CC0 or use of the Work. - -For more information, please see -<http://creativecommons.org/publicdomain/zero/1.0/> diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/README.md b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/README.md deleted file mode 100644 index 353fa2f9..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# MDN data - -[https://github.com/mdn/data](https://github.com/mdn/data) - -Maintained by the [MDN team at Mozilla](https://wiki.mozilla.org/MDN). - -This repository contains general data for Web technologies. - -This data is used in MDN documentation, to build -[information boxes](https://developer.mozilla.org/en-US/docs/Web/CSS/background) -or [sidebar navigation](https://developer.mozilla.org/en-US/docs/Web/API/Window). -External tools have started to make use of this data as well. -For example, the [CSSTree](https://github.com/csstree/csstree/) CSS parser. - - -[](https://www.npmjs.com/package/mdn-data) -[](https://github.com/mdn/data/actions/workflows/lint.yml) - -## Repository contents - -There's a top-level directory for each broad area covered: for example, `api` -and `css`. Inside each of these directories is one or more -JSON files containing the data. - -### api -Contains data about Web APIs: -* API inheritance (interface inheritance and mixin implementations) - -### css - Contains data about: -* CSS at-rules -* CSS properties -* CSS selectors -* CSS syntaxes -* CSS types -* CSS units - -Read more about [CSS data](https://github.com/mdn/data/blob/master/css/readme.md) and the format of the files. - - -### l10n -The l10n folder contains localization strings that are used in the various -json files throughout this repository. - -## Problems? - -If you find a problem, please [file an issue](https://github.com/mdn/data/issues/new). - -## Contributing - -We're very happy to accept contributions to this data. Please familiarize yourself -with the schema for the data you're editing, and send us a pull request. See also the [Contributing file](https://github.com/mdn/data/blob/master/CONTRIBUTING.md) for more information. - -## See also -* [https://github.com/mdn/browser-compat-data](https://github.com/mdn/browser-compat-data) -for compatibility data for Web technologies diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/api/index.js b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/api/index.js deleted file mode 100644 index 4c1ec9b6..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/api/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - inheritance: require('./inheritance'), -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/api/inheritance.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/api/inheritance.json deleted file mode 100644 index c2097900..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/api/inheritance.json +++ /dev/null @@ -1,2681 +0,0 @@ -{ - "AbsoluteOrientationSensor": { - "inherits": "OrientationSensor", - "implements": [] - }, - "AbstractRange": { - "inherits": null, - "implements": [] - }, - "Accelerometer": { - "inherits": "Sensor", - "implements": [] - }, - "AmbientLightSensor": { - "inherits": "Sensor", - "implements": [] - }, - "AnalyserNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "AnimationEvent": { - "inherits": "Event", - "implements": [] - }, - "ArchiveRequest": { - "inherits": "DOMRequest", - "implements": [] - }, - "Attr": { - "inherits": "Node", - "implements": [] - }, - "AudioBufferSourceNode": { - "inherits": "AudioScheduledSourceNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "AudioChannelManager": { - "inherits": "EventTarget", - "implements": [] - }, - "AudioContext": { - "inherits": "BaseAudioContext", - "implements": [] - }, - "AudioDestinationNode": { - "inherits": "AudioNode", - "implements": [] - }, - "AudioNode": { - "inherits": "EventTarget", - "implements": [] - }, - "AudioProcessingEvent": { - "inherits": "Event", - "implements": [] - }, - "AudioScheduledSourceNode": { - "inherits": "AudioNode", - "implements": [] - }, - "AudioStreamTrack": { - "inherits": "MediaStreamTrack", - "implements": [] - }, - "AudioTrackList": { - "inherits": "EventTarget", - "implements": [] - }, - "AutocompleteErrorEvent": { - "inherits": "Event", - "implements": [] - }, - "BarProp": { - "inherits": null, - "implements": [] - }, - "BaseAudioContext": { - "inherits": "EventTarget", - "implements": [] - }, - "BatteryManager": { - "inherits": "EventTarget", - "implements": [] - }, - "BeforeAfterKeyboardEvent": { - "inherits": "KeyboardEvent", - "implements": [] - }, - "BeforeInstallPromptEvent": { - "inherits": "Event", - "implements": [] - }, - "BeforeUnloadEvent": { - "inherits": "Event", - "implements": [] - }, - "BiquadFilterNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "BlobEvent": { - "inherits": "Event", - "implements": [] - }, - "BluetoothAdapter": { - "inherits": "EventTarget", - "implements": [] - }, - "BluetoothAdapterEvent": { - "inherits": "Event", - "implements": [] - }, - "BluetoothAttributeEvent": { - "inherits": "Event", - "implements": [] - }, - "BluetoothDevice": { - "inherits": "EventTarget", - "implements": [] - }, - "BluetoothDeviceEvent": { - "inherits": "Event", - "implements": [] - }, - "BluetoothDiscoveryHandle": { - "inherits": "EventTarget", - "implements": [] - }, - "BluetoothDiscoveryStateChangedEvent": { - "inherits": "Event", - "implements": [] - }, - "BluetoothGatt": { - "inherits": "EventTarget", - "implements": [] - }, - "BluetoothManager": { - "inherits": "EventTarget", - "implements": [] - }, - "BluetoothPairingEvent": { - "inherits": "Event", - "implements": [] - }, - "BluetoothStatusChangedEvent": { - "inherits": "Event", - "implements": [] - }, - "BoxObject": { - "inherits": null, - "implements": [] - }, - "BroadcastChannel": { - "inherits": "EventTarget", - "implements": [] - }, - "BrowserElement": { - "inherits": null, - "implements": [ - "BrowserElementCommon", - "BrowserElementPrivileged" - ] - }, - "CDATASection": { - "inherits": "Text", - "implements": [] - }, - "CFStateChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "CSSCounterStyleRule": { - "inherits": "CSSRule", - "implements": [] - }, - "CSSFontFaceLoadEvent": { - "inherits": "Event", - "implements": [] - }, - "CSSImageValue": { - "inherits": "CSSStyleValue", - "implements": [] - }, - "CSSKeywordValue": { - "inherits": "CSSStyleValue", - "implements": [] - }, - "CSSMathInvert": { - "inherits": "CSSMathValue", - "implements": [] - }, - "CSSMathMax": { - "inherits": "CSSMathValue", - "implements": [] - }, - "CSSMathMin": { - "inherits": "CSSMathValue", - "implements": [] - }, - "CSSMathNegate": { - "inherits": "CSSMathValue", - "implements": [] - }, - "CSSMathProduct": { - "inherits": "CSSMathValue", - "implements": [] - }, - "CSSMathSum": { - "inherits": "CSSMathValue", - "implements": [] - }, - "CSSMathValue": { - "inherits": "CSSNumericValue", - "implements": [ - "CSSMathInvert", - "CSSMathMax", - "CSSMathMin", - "CSSMathNegate", - "CSSMathProduct", - "CSSMathSum" - ] - }, - "CSSMatrixComponent": { - "inherits": "CSSTransformComponent", - "implements": [] - }, - "CSSNumericValue": { - "inherits": "CSSStyleValue", - "implements": [ - "CSSMathValue", - "CSSUnitValue" - ] - }, - "CSSPerspective": { - "inherits": "CSSTransformComponent", - "implements": [] - }, - "CSSPositionValue": { - "inherits": "CSSStyleValue", - "implements": [] - }, - "CSSPrimitiveValue": { - "inherits": "CSSValue", - "implements": [] - }, - "CSSPseudoElement": { - "inherits": "EventTarget", - "implements": [ - "Animatable" - ] - }, - "CSSRotate": { - "inherits": "CSSTransformComponent", - "implements": [] - }, - "CSSScale": { - "inherits": "CSSTransformComponent", - "implements": [] - }, - "CSSSkew": { - "inherits": "CSSTransformComponent", - "implements": [] - }, - "CSSSkewX": { - "inherits": "CSSTransformComponent", - "implements": [] - }, - "CSSSkewY": { - "inherits": "CSSTransformComponent", - "implements": [] - }, - "CSSStyleDeclaration": { - "inherits": null, - "implements": [] - }, - "CSSStyleSheet": { - "inherits": "StyleSheet", - "implements": [] - }, - "CSSStyleValue": { - "inherits": null, - "implements": [ - "CSSImageValue", - "CSSKeywordValue", - "CSSNumericValue", - "CSSPositionValue", - "CSSTransformValue", - "CSSUnitValue", - "CSSUnparsedValue" - ] - }, - "CSSTransformComponent": { - "inherits": null, - "implements": [ - "CSSMatrixComponent", - "CSSPerspective", - "CSSRotate", - "CSSScale", - "CSSSkew", - "CSSSkewX", - "CSSSkewY", - "CSSTranslate" - ] - }, - "CSSTransformValue": { - "inherits": "CSSStyleValue", - "implements": [] - }, - "CSSTranslate": { - "inherits": "CSSTransformComponent", - "implements": [] - }, - "CSSUnitValue": { - "inherits": "CSSNumericValue", - "implements": [] - }, - "CSSUnparsedValue": { - "inherits": "CSSStyleValue", - "implements": [] - }, - "CSSValueList": { - "inherits": "CSSValue", - "implements": [] - }, - "CallEvent": { - "inherits": "Event", - "implements": [] - }, - "CallGroupErrorEvent": { - "inherits": "Event", - "implements": [] - }, - "CameraClosedEvent": { - "inherits": "Event", - "implements": [] - }, - "CameraConfigurationEvent": { - "inherits": "Event", - "implements": [] - }, - "CameraControl": { - "inherits": "MediaStream", - "implements": [] - }, - "CameraFacesDetectedEvent": { - "inherits": "Event", - "implements": [] - }, - "CameraStateChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "CanvasCaptureMediaStream": { - "inherits": "MediaStream", - "implements": [] - }, - "CaretPosition": { - "inherits": null, - "implements": [] - }, - "ChannelMergerNode": { - "inherits": "AudioNode", - "implements": [] - }, - "ChannelSplitterNode": { - "inherits": "AudioNode", - "implements": [] - }, - "CharacterData": { - "inherits": "Node", - "implements": [ - "ChildNode", - "NonDocumentTypeChildNode" - ] - }, - "ChromeWorker": { - "inherits": "Worker", - "implements": [] - }, - "Clipboard": { - "inherits": "EventTarget", - "implements": [] - }, - "ClipboardEvent": { - "inherits": "Event", - "implements": [] - }, - "CloseEvent": { - "inherits": "Event", - "implements": [] - }, - "CommandEvent": { - "inherits": "Event", - "implements": [] - }, - "Comment": { - "inherits": "CharacterData", - "implements": [] - }, - "CompositionEvent": { - "inherits": "UIEvent", - "implements": [] - }, - "ConstantSourceNode": { - "inherits": "AudioScheduledSourceNode", - "implements": [] - }, - "ContactManager": { - "inherits": "EventTarget", - "implements": [] - }, - "ContainerBoxObject": { - "inherits": "BoxObject", - "implements": [] - }, - "ConvolverNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "Crypto": { - "inherits": null, - "implements": [] - }, - "CustomEvent": { - "inherits": "Event", - "implements": [] - }, - "DOMApplication": { - "inherits": "EventTarget", - "implements": [] - }, - "DOMApplicationsManager": { - "inherits": "EventTarget", - "implements": [] - }, - "DOMCursor": { - "inherits": "EventTarget", - "implements": [ - "DOMRequestShared" - ] - }, - "DOMDownload": { - "inherits": "EventTarget", - "implements": [] - }, - "DOMDownloadManager": { - "inherits": "EventTarget", - "implements": [] - }, - "DOMException": { - "inherits": null, - "implements": [ - "ExceptionMembers" - ] - }, - "DOMImplementation": { - "inherits": null, - "implements": [] - }, - "DOMMatrix": { - "inherits": "DOMMatrixReadOnly", - "implements": [] - }, - "DOMMobileMessageError": { - "inherits": "DOMError", - "implements": [] - }, - "DOMParser": { - "inherits": null, - "implements": [] - }, - "DOMPoint": { - "inherits": "DOMPointReadOnly", - "implements": [] - }, - "DOMRect": { - "inherits": "DOMRectReadOnly", - "implements": [] - }, - "DOMRequest": { - "inherits": "EventTarget", - "implements": [ - "DOMRequestShared" - ] - }, - "DOMSettableTokenList": { - "inherits": "DOMTokenList", - "implements": [] - }, - "DOMStringMap": { - "inherits": null, - "implements": [] - }, - "DOMTokenList": { - "inherits": null, - "implements": [] - }, - "DOMTransactionEvent": { - "inherits": "Event", - "implements": [] - }, - "DataContainerEvent": { - "inherits": "Event", - "implements": [] - }, - "DataErrorEvent": { - "inherits": "Event", - "implements": [] - }, - "DataStore": { - "inherits": "EventTarget", - "implements": [] - }, - "DataStoreChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "DedicatedWorkerGlobalScope": { - "inherits": "WorkerGlobalScope", - "implements": [] - }, - "DelayNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "DesktopNotification": { - "inherits": "EventTarget", - "implements": [] - }, - "DeviceLightEvent": { - "inherits": "Event", - "implements": [] - }, - "DeviceMotionEvent": { - "inherits": "Event", - "implements": [] - }, - "DeviceOrientationEvent": { - "inherits": "Event", - "implements": [] - }, - "DeviceProximityEvent": { - "inherits": "Event", - "implements": [] - }, - "DeviceStorage": { - "inherits": "EventTarget", - "implements": [] - }, - "DeviceStorageChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "Document": { - "inherits": "Node", - "implements": [ - "FontFaceSource", - "GeometryUtils", - "GlobalEventHandlers", - "OnErrorEventHandlerForNodes", - "ParentNode", - "TouchEventHandlers", - "XPathEvaluator" - ] - }, - "DocumentFragment": { - "inherits": "Node", - "implements": [ - "ParentNode" - ] - }, - "DocumentType": { - "inherits": "Node", - "implements": [ - "ChildNode" - ] - }, - "DownloadEvent": { - "inherits": "Event", - "implements": [] - }, - "DragEvent": { - "inherits": "MouseEvent", - "implements": [] - }, - "DynamicsCompressorNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "Element": { - "inherits": "Node", - "implements": [ - "Animatable", - "ChildNode", - "GeometryUtils", - "NonDocumentTypeChildNode", - "ParentNode" - ] - }, - "EngineeringMode": { - "inherits": "EventTarget", - "implements": [] - }, - "ErrorEvent": { - "inherits": "Event", - "implements": [] - }, - "Event": { - "inherits": null, - "implements": [] - }, - "EventSource": { - "inherits": "EventTarget", - "implements": [] - }, - "Exception": { - "inherits": null, - "implements": [ - "ExceptionMembers" - ] - }, - "ExtendableEvent": { - "inherits": "Event", - "implements": [] - }, - "FMRadio": { - "inherits": "EventTarget", - "implements": [] - }, - "FetchEvent": { - "inherits": "Event", - "implements": [] - }, - "File": { - "inherits": "Blob", - "implements": [] - }, - "FileList": { - "inherits": null, - "implements": [] - }, - "FileReader": { - "inherits": "EventTarget", - "implements": [] - }, - "FocusEvent": { - "inherits": "UIEvent", - "implements": [] - }, - "FontFaceSet": { - "inherits": "EventTarget", - "implements": [] - }, - "FormData": { - "inherits": null, - "implements": [] - }, - "GainNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "GamepadAxisMoveEvent": { - "inherits": "GamepadEvent", - "implements": [] - }, - "GamepadButtonEvent": { - "inherits": "GamepadEvent", - "implements": [] - }, - "GamepadEvent": { - "inherits": "Event", - "implements": [] - }, - "Gyroscope": { - "inherits": "Sensor", - "implements": [] - }, - "HMDVRDevice": { - "inherits": "VRDevice", - "implements": [] - }, - "HTMLAnchorElement": { - "inherits": "HTMLElement", - "implements": [ - "HTMLHyperlinkElementUtils", - "URLUtilsSearchParams" - ] - }, - "HTMLAppletElement": { - "inherits": "HTMLElement", - "implements": [ - "MozFrameLoaderOwner", - "MozImageLoadingContent", - "MozObjectLoadingContent" - ] - }, - "HTMLAreaElement": { - "inherits": "HTMLElement", - "implements": [ - "HTMLHyperlinkElementUtils", - "URLUtilsSearchParams" - ] - }, - "HTMLAudioElement": { - "inherits": "HTMLMediaElement", - "implements": [] - }, - "HTMLBRElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLBaseElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLBodyElement": { - "inherits": "HTMLElement", - "implements": [ - "WindowEventHandlers" - ] - }, - "HTMLButtonElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLCanvasElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLCollection": { - "inherits": null, - "implements": [] - }, - "HTMLContentElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLDListElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLDataElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLDataListElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLDirectoryElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLDivElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLDocument": { - "inherits": "Document", - "implements": [] - }, - "HTMLElement": { - "inherits": "Element", - "implements": [ - "GlobalEventHandlers", - "OnErrorEventHandlerForNodes", - "TouchEventHandlers" - ] - }, - "HTMLEmbedElement": { - "inherits": "HTMLElement", - "implements": [ - "MozFrameLoaderOwner", - "MozImageLoadingContent", - "MozObjectLoadingContent" - ] - }, - "HTMLFieldSetElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLFontElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLFormControlsCollection": { - "inherits": "HTMLCollection", - "implements": [] - }, - "HTMLFormElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLFrameElement": { - "inherits": "HTMLElement", - "implements": [ - "MozFrameLoaderOwner" - ] - }, - "HTMLFrameSetElement": { - "inherits": "HTMLElement", - "implements": [ - "WindowEventHandlers" - ] - }, - "HTMLHRElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLHeadElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLHeadingElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLHtmlElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLIFrameElement": { - "inherits": "HTMLElement", - "implements": [ - "BrowserElement", - "MozFrameLoaderOwner" - ] - }, - "HTMLImageElement": { - "inherits": "HTMLElement", - "implements": [ - "MozImageLoadingContent" - ] - }, - "HTMLInputElement": { - "inherits": "HTMLElement", - "implements": [ - "MozImageLoadingContent", - "MozPhonetic" - ] - }, - "HTMLLIElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLLabelElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLLegendElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLLinkElement": { - "inherits": "HTMLElement", - "implements": [ - "LinkStyle" - ] - }, - "HTMLMapElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLMarqueeElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLMediaElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLMenuElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLMenuItemElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLMetaElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLMeterElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLModElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLOListElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLObjectElement": { - "inherits": "HTMLElement", - "implements": [ - "MozFrameLoaderOwner", - "MozImageLoadingContent", - "MozObjectLoadingContent" - ] - }, - "HTMLOptGroupElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLOptionElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLOptionsCollection": { - "inherits": "HTMLCollection", - "implements": [] - }, - "HTMLOutputElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLParagraphElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLParamElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLPictureElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLPreElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLProgressElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLPropertiesCollection": { - "inherits": "HTMLCollection", - "implements": [] - }, - "HTMLQuoteElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLScriptElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLSelectElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLShadowElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLSourceElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLSpanElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLStyleElement": { - "inherits": "HTMLElement", - "implements": [ - "LinkStyle" - ] - }, - "HTMLTableCaptionElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTableCellElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTableColElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTableElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTableRowElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTableSectionElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTemplateElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTextAreaElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTimeElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTitleElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLTrackElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLUListElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLUnknownElement": { - "inherits": "HTMLElement", - "implements": [] - }, - "HTMLVideoElement": { - "inherits": "HTMLMediaElement", - "implements": [] - }, - "HashChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "History": { - "inherits": null, - "implements": [] - }, - "IDBCursorWithValue": { - "inherits": "IDBCursor", - "implements": [] - }, - "IDBDatabase": { - "inherits": "EventTarget", - "implements": [] - }, - "IDBFileHandle": { - "inherits": "EventTarget", - "implements": [] - }, - "IDBFileRequest": { - "inherits": "DOMRequest", - "implements": [] - }, - "IDBMutableFile": { - "inherits": "EventTarget", - "implements": [] - }, - "IDBOpenDBRequest": { - "inherits": "IDBRequest", - "implements": [] - }, - "IDBRequest": { - "inherits": "EventTarget", - "implements": [] - }, - "IDBTransaction": { - "inherits": "EventTarget", - "implements": [] - }, - "IDBVersionChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "IccCardLockError": { - "inherits": "DOMError", - "implements": [] - }, - "IccChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "ImageCapture": { - "inherits": "EventTarget", - "implements": [] - }, - "ImageCaptureErrorEvent": { - "inherits": "Event", - "implements": [] - }, - "ImageDocument": { - "inherits": "HTMLDocument", - "implements": [] - }, - "InputEvent": { - "inherits": "UIEvent", - "implements": [] - }, - "InstallEvent": { - "inherits": "ExtendableEvent", - "implements": [] - }, - "InstallTrigger": { - "inherits": null, - "implements": [] - }, - "KeyboardEvent": { - "inherits": "UIEvent", - "implements": [ - "KeyEvent" - ] - }, - "LinearAccelerationSensor": { - "inherits": "Accelerometer", - "implements": [] - }, - "ListBoxObject": { - "inherits": "BoxObject", - "implements": [] - }, - "LocalMediaStream": { - "inherits": "MediaStream", - "implements": [] - }, - "Location": { - "inherits": null, - "implements": [] - }, - "Magnetometer": { - "inherits": "Sensor", - "implements": [] - }, - "MediaDevices": { - "inherits": "EventTarget", - "implements": [] - }, - "MediaElementAudioSourceNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "MediaEncryptedEvent": { - "inherits": "Event", - "implements": [] - }, - "MediaKeyError": { - "inherits": "Event", - "implements": [] - }, - "MediaKeyMessageEvent": { - "inherits": "Event", - "implements": [] - }, - "MediaKeySession": { - "inherits": "EventTarget", - "implements": [] - }, - "MediaRecorder": { - "inherits": "EventTarget", - "implements": [] - }, - "MediaSource": { - "inherits": "EventTarget", - "implements": [] - }, - "MediaStream": { - "inherits": "EventTarget", - "implements": [] - }, - "MediaStreamAudioDestinationNode": { - "inherits": "AudioNode", - "implements": [] - }, - "MediaStreamAudioSourceNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "MediaStreamEvent": { - "inherits": "Event", - "implements": [] - }, - "MediaStreamTrackEvent": { - "inherits": "Event", - "implements": [] - }, - "MenuBoxObject": { - "inherits": "BoxObject", - "implements": [] - }, - "MerchantValidationEvent": { - "inherits": "Event", - "implements": [] - }, - "MessageEvent": { - "inherits": "Event", - "implements": [] - }, - "MessagePort": { - "inherits": "EventTarget", - "implements": [ - "Transferable" - ] - }, - "MimeTypeArray": { - "inherits": null, - "implements": [] - }, - "MouseEvent": { - "inherits": "UIEvent", - "implements": [] - }, - "MouseScrollEvent": { - "inherits": "MouseEvent", - "implements": [] - }, - "MozAbortablePromise": { - "inherits": "_Promise", - "implements": [] - }, - "MozActivity": { - "inherits": "DOMRequest", - "implements": [] - }, - "MozApplicationEvent": { - "inherits": "Event", - "implements": [] - }, - "MozCdmaIccInfo": { - "inherits": "MozIccInfo", - "implements": [] - }, - "MozCellBroadcast": { - "inherits": "EventTarget", - "implements": [] - }, - "MozCellBroadcastEvent": { - "inherits": "Event", - "implements": [] - }, - "MozClirModeEvent": { - "inherits": "Event", - "implements": [] - }, - "MozContactChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "MozEmergencyCbModeEvent": { - "inherits": "Event", - "implements": [] - }, - "MozGsmIccInfo": { - "inherits": "MozIccInfo", - "implements": [] - }, - "MozIcc": { - "inherits": "EventTarget", - "implements": [] - }, - "MozIccManager": { - "inherits": "EventTarget", - "implements": [] - }, - "MozInputMethod": { - "inherits": "EventTarget", - "implements": [] - }, - "MozInterAppMessageEvent": { - "inherits": "Event", - "implements": [] - }, - "MozInterAppMessagePort": { - "inherits": "EventTarget", - "implements": [] - }, - "MozMessageDeletedEvent": { - "inherits": "Event", - "implements": [] - }, - "MozMmsEvent": { - "inherits": "Event", - "implements": [] - }, - "MozMobileConnection": { - "inherits": "EventTarget", - "implements": [] - }, - "MozMobileMessageManager": { - "inherits": "EventTarget", - "implements": [] - }, - "MozNFC": { - "inherits": "EventTarget", - "implements": [ - "MozNFCManager" - ] - }, - "MozNFCPeerEvent": { - "inherits": "Event", - "implements": [] - }, - "MozNFCTagEvent": { - "inherits": "Event", - "implements": [] - }, - "MozOtaStatusEvent": { - "inherits": "Event", - "implements": [] - }, - "MozSettingsEvent": { - "inherits": "Event", - "implements": [] - }, - "MozSettingsTransactionEvent": { - "inherits": "Event", - "implements": [] - }, - "MozSmsEvent": { - "inherits": "Event", - "implements": [] - }, - "MozSpeakerManager": { - "inherits": "EventTarget", - "implements": [] - }, - "MozStkCommandEvent": { - "inherits": "Event", - "implements": [] - }, - "MozVoicemail": { - "inherits": "EventTarget", - "implements": [] - }, - "MozVoicemailEvent": { - "inherits": "Event", - "implements": [] - }, - "MozWifiConnectionInfoEvent": { - "inherits": "Event", - "implements": [] - }, - "MozWifiManager": { - "inherits": "EventTarget", - "implements": [] - }, - "MozWifiStationInfoEvent": { - "inherits": "Event", - "implements": [] - }, - "MozWifiStatusChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "MutationEvent": { - "inherits": "Event", - "implements": [] - }, - "MutationObserver": { - "inherits": null, - "implements": [] - }, - "MutationRecord": { - "inherits": null, - "implements": [] - }, - "NamedNodeMap": { - "inherits": null, - "implements": [] - }, - "Navigator": { - "inherits": null, - "implements": [ - "NavigatorBattery", - "NavigatorContentUtils", - "NavigatorDataStore", - "NavigatorFeatures", - "NavigatorGeolocation", - "NavigatorID", - "NavigatorLanguage", - "NavigatorMobileId", - "NavigatorOnLine", - "NavigatorStorageUtils" - ] - }, - "NetworkInformation": { - "inherits": "EventTarget", - "implements": [] - }, - "Node": { - "inherits": "EventTarget", - "implements": [] - }, - "NodeIterator": { - "inherits": null, - "implements": [] - }, - "NodeList": { - "inherits": null, - "implements": [] - }, - "Notification": { - "inherits": "EventTarget", - "implements": [] - }, - "NotifyPaintEvent": { - "inherits": "Event", - "implements": [] - }, - "OfflineAudioCompletionEvent": { - "inherits": "Event", - "implements": [] - }, - "OfflineAudioContext": { - "inherits": "BaseAudioContext", - "implements": [] - }, - "OfflineResourceList": { - "inherits": "EventTarget", - "implements": [] - }, - "OffscreenCanvas": { - "inherits": "EventTarget", - "implements": [] - }, - "OrientationSensor": { - "inherits": "Sensor", - "implements": [] - }, - "OscillatorNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "PageTransitionEvent": { - "inherits": "Event", - "implements": [] - }, - "PaintRequest": { - "inherits": null, - "implements": [] - }, - "PaintRequestList": { - "inherits": null, - "implements": [] - }, - "PannerNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "PaymentAddress": { - "inherits": null, - "implements": [] - }, - "PaymentMethodChangeEvent": { - "inherits": "PaymentRequestUpdateEvent", - "implements": [] - }, - "PaymentRequest": { - "inherits": "EventTarget", - "implements": [] - }, - "PaymentRequestUpdateEvent": { - "inherits": "Event", - "implements": [] - }, - "PaymentResponse": { - "inherits": "EventTarget", - "implements": [] - }, - "Performance": { - "inherits": null, - "implements": [] - }, - "PerformanceLongTaskTiming": { - "inherits": "PerformanceEntry", - "implements": [] - }, - "PerformanceMark": { - "inherits": "PerformanceEntry", - "implements": [] - }, - "PerformanceMeasure": { - "inherits": "PerformanceEntry", - "implements": [] - }, - "PerformanceNavigationTiming": { - "inherits": "PerformanceEntry", - "implements": [] - }, - "PerformancePaintTiming": { - "inherits": "PerformanceEntry", - "implements": [] - }, - "PerformanceResourceTiming": { - "inherits": "PerformanceEntry", - "implements": [] - }, - "Plugin": { - "inherits": null, - "implements": [] - }, - "PluginArray": { - "inherits": null, - "implements": [] - }, - "PluginCrashedEvent": { - "inherits": "Event", - "implements": [] - }, - "PointerEvent": { - "inherits": "MouseEvent", - "implements": [] - }, - "PopStateEvent": { - "inherits": "Event", - "implements": [] - }, - "PopupBlockedEvent": { - "inherits": "Event", - "implements": [] - }, - "PopupBoxObject": { - "inherits": "BoxObject", - "implements": [] - }, - "PositionSensorVRDevice": { - "inherits": "VRDevice", - "implements": [] - }, - "PresentationDeviceInfoManager": { - "inherits": "EventTarget", - "implements": [] - }, - "ProcessingInstruction": { - "inherits": "CharacterData", - "implements": [] - }, - "ProgressEvent": { - "inherits": "Event", - "implements": [] - }, - "PromiseRejectionEvent": { - "inherits": "Event", - "implements": [] - }, - "PropertyNodeList": { - "inherits": "NodeList", - "implements": [] - }, - "PseudoElement": { - "inherits": null, - "implements": [ - "GeometryUtils" - ] - }, - "RTCDTMFSender": { - "inherits": "EventTarget", - "implements": [] - }, - "RTCDTMFToneChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "RTCDataChannel": { - "inherits": "EventTarget", - "implements": [] - }, - "RTCDataChannelEvent": { - "inherits": "Event", - "implements": [] - }, - "RTCDtlsTransport": { - "inherits": "EventTarget", - "implements": [] - }, - "RTCIceTransport": { - "inherits": "EventTarget", - "implements": [] - }, - "RTCPeerConnection": { - "inherits": "EventTarget", - "implements": [] - }, - "RTCPeerConnectionIceEvent": { - "inherits": "Event", - "implements": [] - }, - "RTCPeerConnectionIdentityErrorEvent": { - "inherits": "Event", - "implements": [] - }, - "RTCPeerConnectionIdentityEvent": { - "inherits": "Event", - "implements": [] - }, - "RTCSctpTransport": { - "inherits": "EventTarget", - "implements": [] - }, - "RTCTrackEvent": { - "inherits": "Event", - "implements": [] - }, - "RadioNodeList": { - "inherits": "NodeList", - "implements": [] - }, - "Range": { - "inherits": "AbstractRange", - "implements": [] - }, - "RecordErrorEvent": { - "inherits": "Event", - "implements": [] - }, - "Rect": { - "inherits": null, - "implements": [] - }, - "RelativeOrientationSensor": { - "inherits": "OrientationSensor", - "implements": [] - }, - "Request": { - "inherits": null, - "implements": [ - "Body" - ] - }, - "Response": { - "inherits": null, - "implements": [ - "Body" - ] - }, - "StaticRange": { - "inherits": "AbstractRange", - "implements": [] - }, - "SVGAElement": { - "inherits": "SVGGraphicsElement", - "implements": [ - "SVGURIReference" - ] - }, - "SVGAltGlyphElement": { - "inherits": "SVGTextPositioningElement", - "implements": [ - "SVGURIReference" - ] - }, - "SVGAnimateElement": { - "inherits": "SVGAnimationElement", - "implements": [] - }, - "SVGAnimateMotionElement": { - "inherits": "SVGAnimationElement", - "implements": [] - }, - "SVGAnimateTransformElement": { - "inherits": "SVGAnimationElement", - "implements": [] - }, - "SVGAnimatedEnumeration": { - "inherits": null, - "implements": [] - }, - "SVGAnimatedInteger": { - "inherits": null, - "implements": [] - }, - "SVGAnimatedNumber": { - "inherits": null, - "implements": [] - }, - "SVGAnimatedNumberList": { - "inherits": null, - "implements": [] - }, - "SVGAnimatedPreserveAspectRatio": { - "inherits": null, - "implements": [] - }, - "SVGAnimatedString": { - "inherits": null, - "implements": [] - }, - "SVGAnimationElement": { - "inherits": "SVGElement", - "implements": [ - "SVGTests" - ] - }, - "SVGCircleElement": { - "inherits": "SVGGeometryElement", - "implements": [] - }, - "SVGClipPathElement": { - "inherits": "SVGElement", - "implements": [ - "SVGUnitTypes" - ] - }, - "SVGComponentTransferFunctionElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGCursorElement": { - "inherits": "SVGElement", - "implements": [ - "SVGURIReference" - ] - }, - "SVGDefsElement": { - "inherits": "SVGGraphicsElement", - "implements": [] - }, - "SVGDescElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGDocument": { - "inherits": "Document", - "implements": [] - }, - "SVGElement": { - "inherits": "Element", - "implements": [ - "GlobalEventHandlers", - "OnErrorEventHandlerForNodes", - "TouchEventHandlers" - ] - }, - "SVGEllipseElement": { - "inherits": "SVGGeometryElement", - "implements": [] - }, - "SVGFEBlendElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEColorMatrixElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEComponentTransferElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFECompositeElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEConvolveMatrixElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEDiffuseLightingElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEDisplacementMapElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEDistantLightElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGFEDropShadowElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEFloodElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEFuncAElement": { - "inherits": "SVGComponentTransferFunctionElement", - "implements": [] - }, - "SVGFEFuncBElement": { - "inherits": "SVGComponentTransferFunctionElement", - "implements": [] - }, - "SVGFEFuncGElement": { - "inherits": "SVGComponentTransferFunctionElement", - "implements": [] - }, - "SVGFEFuncRElement": { - "inherits": "SVGComponentTransferFunctionElement", - "implements": [] - }, - "SVGFEGaussianBlurElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEImageElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes", - "SVGURIReference" - ] - }, - "SVGFEMergeElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEMergeNodeElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGFEMorphologyElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEOffsetElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFEPointLightElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGFESpecularLightingElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFESpotLightElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGFETileElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFETurbulenceElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFilterPrimitiveStandardAttributes" - ] - }, - "SVGFilterElement": { - "inherits": "SVGElement", - "implements": [ - "SVGURIReference", - "SVGUnitTypes" - ] - }, - "SVGForeignObjectElement": { - "inherits": "SVGGraphicsElement", - "implements": [] - }, - "SVGGElement": { - "inherits": "SVGGraphicsElement", - "implements": [] - }, - "SVGGeometryElement": { - "inherits": "SVGGraphicsElement", - "implements": [] - }, - "SVGGradientElement": { - "inherits": "SVGElement", - "implements": [ - "SVGURIReference", - "SVGUnitTypes" - ] - }, - "SVGGraphicsElement": { - "inherits": "SVGElement", - "implements": [ - "SVGTests" - ] - }, - "SVGImageElement": { - "inherits": "SVGGraphicsElement", - "implements": [ - "MozImageLoadingContent", - "SVGURIReference" - ] - }, - "SVGLengthList": { - "inherits": null, - "implements": [] - }, - "SVGLineElement": { - "inherits": "SVGGeometryElement", - "implements": [] - }, - "SVGLinearGradientElement": { - "inherits": "SVGGradientElement", - "implements": [] - }, - "SVGMPathElement": { - "inherits": "SVGElement", - "implements": [ - "SVGURIReference" - ] - }, - "SVGMarkerElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFitToViewBox" - ] - }, - "SVGMaskElement": { - "inherits": "SVGElement", - "implements": [ - "SVGUnitTypes" - ] - }, - "SVGMetadataElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGNumberList": { - "inherits": null, - "implements": [] - }, - "SVGPathElement": { - "inherits": "SVGGeometryElement", - "implements": [ - "SVGAnimatedPathData" - ] - }, - "SVGPathSegArcAbs": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegArcRel": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegClosePath": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegCurvetoCubicAbs": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegCurvetoCubicRel": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegCurvetoCubicSmoothAbs": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegCurvetoCubicSmoothRel": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegCurvetoQuadraticAbs": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegCurvetoQuadraticRel": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegCurvetoQuadraticSmoothAbs": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegCurvetoQuadraticSmoothRel": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegLinetoAbs": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegLinetoHorizontalAbs": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegLinetoHorizontalRel": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegLinetoRel": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegLinetoVerticalAbs": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegLinetoVerticalRel": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegList": { - "inherits": null, - "implements": [] - }, - "SVGPathSegMovetoAbs": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPathSegMovetoRel": { - "inherits": "SVGPathSeg", - "implements": [] - }, - "SVGPatternElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFitToViewBox", - "SVGURIReference", - "SVGUnitTypes" - ] - }, - "SVGPoint": { - "inherits": null, - "implements": [] - }, - "SVGPointList": { - "inherits": null, - "implements": [] - }, - "SVGPolygonElement": { - "inherits": "SVGGeometryElement", - "implements": [ - "SVGAnimatedPoints" - ] - }, - "SVGPolylineElement": { - "inherits": "SVGGeometryElement", - "implements": [ - "SVGAnimatedPoints" - ] - }, - "SVGPreserveAspectRatio": { - "inherits": null, - "implements": [] - }, - "SVGRadialGradientElement": { - "inherits": "SVGGradientElement", - "implements": [] - }, - "SVGRect": { - "inherits": null, - "implements": [] - }, - "SVGRectElement": { - "inherits": "SVGGeometryElement", - "implements": [] - }, - "SVGSVGElement": { - "inherits": "SVGGraphicsElement", - "implements": [ - "SVGFitToViewBox", - "SVGZoomAndPan" - ] - }, - "SVGScriptElement": { - "inherits": "SVGElement", - "implements": [ - "SVGURIReference" - ] - }, - "SVGSetElement": { - "inherits": "SVGAnimationElement", - "implements": [] - }, - "SVGStopElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGStringList": { - "inherits": null, - "implements": [] - }, - "SVGStyleElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGSwitchElement": { - "inherits": "SVGGraphicsElement", - "implements": [] - }, - "SVGSymbolElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFitToViewBox", - "SVGTests" - ] - }, - "SVGTSpanElement": { - "inherits": "SVGTextPositioningElement", - "implements": [] - }, - "SVGTextContentElement": { - "inherits": "SVGGraphicsElement", - "implements": [] - }, - "SVGTextElement": { - "inherits": "SVGTextPositioningElement", - "implements": [] - }, - "SVGTextPathElement": { - "inherits": "SVGTextContentElement", - "implements": [ - "SVGURIReference" - ] - }, - "SVGTextPositioningElement": { - "inherits": "SVGTextContentElement", - "implements": [] - }, - "SVGTitleElement": { - "inherits": "SVGElement", - "implements": [] - }, - "SVGTransformList": { - "inherits": null, - "implements": [] - }, - "SVGUseElement": { - "inherits": "SVGGraphicsElement", - "implements": [ - "SVGURIReference" - ] - }, - "SVGViewElement": { - "inherits": "SVGElement", - "implements": [ - "SVGFitToViewBox", - "SVGZoomAndPan" - ] - }, - "SVGZoomEvent": { - "inherits": "UIEvent", - "implements": [] - }, - "Screen": { - "inherits": "EventTarget", - "implements": [] - }, - "ScriptProcessorNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "ScrollAreaEvent": { - "inherits": "UIEvent", - "implements": [] - }, - "ScrollBoxObject": { - "inherits": "BoxObject", - "implements": [] - }, - "ScrollViewChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "Selection": { - "inherits": null, - "implements": [] - }, - "SelectionStateChangedEvent": { - "inherits": "Event", - "implements": [] - }, - "Sensor": { - "inherits": "EventTarget", - "implements": [] - }, - "SensorErrorEvent": { - "inherits": "Event", - "implements": [] - }, - "ServiceWorker": { - "inherits": "EventTarget", - "implements": [ - "AbstractWorker" - ] - }, - "ServiceWorkerContainer": { - "inherits": "EventTarget", - "implements": [] - }, - "ServiceWorkerGlobalScope": { - "inherits": "WorkerGlobalScope", - "implements": [ - "GlobalFetch" - ] - }, - "ServiceWorkerRegistration": { - "inherits": "EventTarget", - "implements": [] - }, - "SettingsLock": { - "inherits": "EventTarget", - "implements": [] - }, - "SettingsManager": { - "inherits": "EventTarget", - "implements": [] - }, - "ShadowRoot": { - "inherits": "DocumentFragment", - "implements": [] - }, - "SharedWorker": { - "inherits": "EventTarget", - "implements": [ - "AbstractWorker" - ] - }, - "SharedWorkerGlobalScope": { - "inherits": "WorkerGlobalScope", - "implements": [] - }, - "SimpleGestureEvent": { - "inherits": "MouseEvent", - "implements": [] - }, - "SourceBuffer": { - "inherits": "EventTarget", - "implements": [] - }, - "SourceBufferList": { - "inherits": "EventTarget", - "implements": [] - }, - "SpeechRecognition": { - "inherits": "EventTarget", - "implements": [] - }, - "SpeechRecognitionError": { - "inherits": "Event", - "implements": [] - }, - "SpeechRecognitionEvent": { - "inherits": "Event", - "implements": [] - }, - "SpeechSynthesisEvent": { - "inherits": "Event", - "implements": [] - }, - "SpeechSynthesisUtterance": { - "inherits": "EventTarget", - "implements": [] - }, - "StereoPannerNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "StorageEvent": { - "inherits": "Event", - "implements": [] - }, - "StylePropertyMap": { - "inherits": "StylePropertyMapReadOnly", - "implements": [] - }, - "StylePropertyMapReadOnly": { - "inherits": null, - "implements": [ - "StylePropertyMap" - ] - }, - "StyleRuleChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "StyleSheet": { - "inherits": null, - "implements": [] - }, - "StyleSheetApplicableStateChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "StyleSheetChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "SyncEvent": { - "inherits": "ExtendableEvent", - "implements": [] - }, - "TVChannel": { - "inherits": "EventTarget", - "implements": [] - }, - "TVCurrentChannelChangedEvent": { - "inherits": "Event", - "implements": [] - }, - "TVCurrentSourceChangedEvent": { - "inherits": "Event", - "implements": [] - }, - "TVEITBroadcastedEvent": { - "inherits": "Event", - "implements": [] - }, - "TVManager": { - "inherits": "EventTarget", - "implements": [] - }, - "TVScanningStateChangedEvent": { - "inherits": "Event", - "implements": [] - }, - "TVSource": { - "inherits": "EventTarget", - "implements": [] - }, - "TVTuner": { - "inherits": "EventTarget", - "implements": [] - }, - "TaskAttributionTiming": { - "inherits": "PerformanceEntry", - "implements": [] - }, - "Telephony": { - "inherits": "EventTarget", - "implements": [] - }, - "TelephonyCall": { - "inherits": "EventTarget", - "implements": [] - }, - "TelephonyCallGroup": { - "inherits": "EventTarget", - "implements": [] - }, - "Text": { - "inherits": "CharacterData", - "implements": [ - "GeometryUtils" - ] - }, - "TextTrack": { - "inherits": "EventTarget", - "implements": [] - }, - "TextTrackList": { - "inherits": "EventTarget", - "implements": [] - }, - "TimeEvent": { - "inherits": "Event", - "implements": [] - }, - "Touch": { - "inherits": null, - "implements": [] - }, - "TouchEvent": { - "inherits": "UIEvent", - "implements": [] - }, - "TouchList": { - "inherits": null, - "implements": [] - }, - "TrackEvent": { - "inherits": "Event", - "implements": [] - }, - "TransitionEvent": { - "inherits": "Event", - "implements": [] - }, - "TreeBoxObject": { - "inherits": "BoxObject", - "implements": [] - }, - "TreeColumns": { - "inherits": null, - "implements": [] - }, - "TreeWalker": { - "inherits": null, - "implements": [] - }, - "UDPMessageEvent": { - "inherits": "Event", - "implements": [] - }, - "UDPSocket": { - "inherits": "EventTarget", - "implements": [] - }, - "UIEvent": { - "inherits": "Event", - "implements": [] - }, - "URL": { - "inherits": null, - "implements": [ - "URLUtils", - "URLUtilsSearchParams" - ] - }, - "USSDReceivedEvent": { - "inherits": "Event", - "implements": [] - }, - "UndoManager": { - "inherits": null, - "implements": [] - }, - "UserProximityEvent": { - "inherits": "Event", - "implements": [] - }, - "VRFieldOfView": { - "inherits": "VRFieldOfViewReadOnly", - "implements": [] - }, - "VTTCue": { - "inherits": "EventTarget", - "implements": [] - }, - "ValidityState": { - "inherits": null, - "implements": [] - }, - "VideoStreamTrack": { - "inherits": "MediaStreamTrack", - "implements": [] - }, - "VideoTrackList": { - "inherits": "EventTarget", - "implements": [] - }, - "WaveShaperNode": { - "inherits": "AudioNode", - "implements": [ - "AudioNodePassThrough" - ] - }, - "WebGL2RenderingContext": { - "inherits": "WebGLRenderingContext", - "implements": [] - }, - "WebGLContextEvent": { - "inherits": "Event", - "implements": [] - }, - "WebSocket": { - "inherits": "EventTarget", - "implements": [] - }, - "WheelEvent": { - "inherits": "MouseEvent", - "implements": [] - }, - "Window": { - "inherits": null, - "implements": [ - "ChromeWindow", - "GlobalCrypto", - "GlobalEventHandlers", - "OnErrorEventHandlerForWindow", - "SpeechSynthesisGetter", - "TouchEventHandlers", - "WindowEventHandlers", - "WindowModal", - "WindowOrWorkerGlobalScope" - ] - }, - "WindowClient": { - "inherits": "Client", - "implements": [] - }, - "WindowRoot": { - "inherits": "EventTarget", - "implements": [] - }, - "Worker": { - "inherits": "EventTarget", - "implements": [ - "AbstractWorker" - ] - }, - "WorkerGlobalScope": { - "inherits": "EventTarget", - "implements": [ - "GlobalCrypto", - "WindowOrWorkerGlobalScope" - ] - }, - "WorkerLocation": { - "inherits": null, - "implements": [ - "URLUtilsReadOnly" - ] - }, - "WorkerNavigator": { - "inherits": null, - "implements": [ - "NavigatorDataStore", - "NavigatorID", - "NavigatorLanguage", - "NavigatorOnLine" - ] - }, - "XMLDocument": { - "inherits": "Document", - "implements": [] - }, - "XMLHttpRequest": { - "inherits": "XMLHttpRequestEventTarget", - "implements": [] - }, - "XMLHttpRequestEventTarget": { - "inherits": "EventTarget", - "implements": [] - }, - "XMLHttpRequestUpload": { - "inherits": "XMLHttpRequestEventTarget", - "implements": [] - }, - "XMLSerializer": { - "inherits": null, - "implements": [] - }, - "XMLStylesheetProcessingInstruction": { - "inherits": "ProcessingInstruction", - "implements": [] - }, - "XPathEvaluator": { - "inherits": null, - "implements": [] - }, - "XR": { - "inherits": "EventTarget", - "implements": [] - }, - "XRBoundedReferenceSpace": { - "inherits": "XRReferenceSpace", - "implements": [] - }, - "XRFrame": { - "inherits": null, - "implements": [] - }, - "XRInputSource": { - "inherits": null, - "implements": [] - }, - "XRInputSourceArray": { - "inherits": null, - "implements": [] - }, - "XRInputSourceEvent": { - "inherits": "Event", - "implements": [] - }, - "XRInputSourcesChangeEvent": { - "inherits": "Event", - "implements": [] - }, - "XRPose": { - "inherits": null, - "implements": [] - }, - "XRReferenceSpace": { - "inherits": "XRSpace", - "implements": [] - }, - "XRReferenceSpaceEvent": { - "inherits": "Event", - "implements": [] - }, - "XRRenderState": { - "inherits": null, - "implements": [] - }, - "XRRigidTransform": { - "inherits": null, - "implements": [] - }, - "XRSession": { - "inherits": "EventTarget", - "implements": [] - }, - "XRSessionEvent": { - "inherits": "Event", - "implements": [] - }, - "XRSpace": { - "inherits": "EventTarget", - "implements": [] - }, - "XRView": { - "inherits": null, - "implements": [] - }, - "XRViewerPose": { - "inherits": "XRPose", - "implements": [] - }, - "XRViewport": { - "inherits": null, - "implements": [] - }, - "XRWebGLLayer": { - "inherits": null, - "implements": [] - }, - "XULCommandEvent": { - "inherits": "UIEvent", - "implements": [] - }, - "XULDocument": { - "inherits": "Document", - "implements": [] - }, - "XULElement": { - "inherits": "Element", - "implements": [ - "GlobalEventHandlers", - "MozFrameLoaderOwner", - "OnErrorEventHandlerForNodes", - "TouchEventHandlers" - ] - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/api/inheritance.schema.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/api/inheritance.schema.json deleted file mode 100644 index 706abbc1..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/api/inheritance.schema.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "inherits": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string", - "minLength": 1 - } - ] - }, - "implements": { - "minItems": 0, - "uniqueItems": true, - "items": { - "type": "string" - } - } - }, - "required": [ - "inherits", - "implements" - ] - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/at-rules.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/at-rules.json deleted file mode 100644 index a58731c1..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/at-rules.json +++ /dev/null @@ -1,620 +0,0 @@ -{ - "@charset": { - "syntax": "@charset \"<charset>\";", - "groups": [ - "CSS Charsets" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@charset" - }, - "@counter-style": { - "syntax": "@counter-style <counter-style-name> {\n [ system: <counter-system>; ] ||\n [ symbols: <counter-symbols>; ] ||\n [ additive-symbols: <additive-symbols>; ] ||\n [ negative: <negative-symbol>; ] ||\n [ prefix: <prefix>; ] ||\n [ suffix: <suffix>; ] ||\n [ range: <range>; ] ||\n [ pad: <padding>; ] ||\n [ speak-as: <speak-as>; ] ||\n [ fallback: <counter-style-name>; ]\n}", - "interfaces": [ - "CSSCounterStyleRule" - ], - "groups": [ - "CSS Counter Styles" - ], - "descriptors": { - "additive-symbols": { - "syntax": "[ <integer> && <symbol> ]#", - "media": "all", - "initial": "n/a (required)", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - }, - "fallback": { - "syntax": "<counter-style-name>", - "media": "all", - "initial": "decimal", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "negative": { - "syntax": "<symbol> <symbol>?", - "media": "all", - "initial": "\"-\" hyphen-minus", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - }, - "pad": { - "syntax": "<integer> && <symbol>", - "media": "all", - "initial": "0 \"\"", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "prefix": { - "syntax": "<symbol>", - "media": "all", - "initial": "\"\"", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "range": { - "syntax": "[ [ <integer> | infinite ]{2} ]# | auto", - "media": "all", - "initial": "auto", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - }, - "speak-as": { - "syntax": "auto | bullets | numbers | words | spell-out | <counter-style-name>", - "media": "all", - "initial": "auto", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "suffix": { - "syntax": "<symbol>", - "media": "all", - "initial": "\". \"", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "symbols": { - "syntax": "<symbol>+", - "media": "all", - "initial": "n/a (required)", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - }, - "system": { - "syntax": "cyclic | numeric | alphabetic | symbolic | additive | [ fixed <integer>? ] | [ extends <counter-style-name> ]", - "media": "all", - "initial": "symbolic", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - } - }, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style" - }, - "@document": { - "syntax": "@document [ <url> | url-prefix(<string>) | domain(<string>) | media-document(<string>) | regexp(<string>) ]# {\n <group-rule-body>\n}", - "interfaces": [ - "CSSGroupingRule", - "CSSConditionRule" - ], - "groups": [ - "CSS Conditional Rules" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@document" - }, - "@font-face": { - "syntax": "@font-face {\n [ font-family: <family-name>; ] ||\n [ src: <src>; ] ||\n [ unicode-range: <unicode-range>; ] ||\n [ font-variant: <font-variant>; ] ||\n [ font-feature-settings: <font-feature-settings>; ] ||\n [ font-variation-settings: <font-variation-settings>; ] ||\n [ font-stretch: <font-stretch>; ] ||\n [ font-weight: <font-weight>; ] ||\n [ font-style: <font-style>; ] ||\n [ size-adjust: <size-adjust>; ] ||\n [ ascent-override: <ascent-override>; ] ||\n [ descent-override: <descent-override>; ] ||\n [ line-gap-override: <line-gap-override>; ]\n}", - "interfaces": [ - "CSSFontFaceRule" - ], - "groups": [ - "CSS Fonts" - ], - "descriptors": { - "ascent-override": { - "syntax": "normal | <percentage>", - "media": "all", - "initial": "normal", - "percentages": "asSpecified", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "experimental" - }, - "descent-override": { - "syntax": "normal | <percentage>", - "media": "all", - "initial": "normal", - "percentages": "asSpecified", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "experimental" - }, - "font-display": { - "syntax": "[ auto | block | swap | fallback | optional ]", - "media": "visual", - "percentages": "no", - "initial": "auto", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental" - }, - "font-family": { - "syntax": "<family-name>", - "media": "all", - "initial": "n/a (required)", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "font-feature-settings": { - "syntax": "normal | <feature-tag-value>#", - "media": "all", - "initial": "normal", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - }, - "font-variation-settings": { - "syntax": "normal | [ <string> <number> ]#", - "media": "all", - "initial": "normal", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - }, - "font-stretch": { - "syntax": "<font-stretch-absolute>{1,2}", - "media": "all", - "initial": "normal", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "font-style": { - "syntax": "normal | italic | oblique <angle>{0,2}", - "media": "all", - "initial": "normal", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "font-weight": { - "syntax": "<font-weight-absolute>{1,2}", - "media": "all", - "initial": "normal", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "font-variant": { - "syntax": "normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]", - "media": "all", - "initial": "normal", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - }, - "line-gap-override": { - "syntax": "normal | <percentage>", - "media": "all", - "initial": "normal", - "percentages": "asSpecified", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "experimental" - }, - "size-adjust": { - "syntax": "<percentage>", - "media": "all", - "initial": "100%", - "percentages": "asSpecified", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "experimental" - }, - "src": { - "syntax": "[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#", - "media": "all", - "initial": "n/a (required)", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - }, - "unicode-range": { - "syntax": "<unicode-range>#", - "media": "all", - "initial": "U+0-10FFFF", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - } - }, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face" - }, - "@font-feature-values": { - "syntax": "@font-feature-values <family-name># {\n <feature-value-block-list>\n}", - "interfaces": [ - "CSSFontFeatureValuesRule" - ], - "groups": [ - "CSS Fonts" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-feature-values" - }, - "@import": { - "syntax": "@import [ <string> | <url> ]\n [ layer | layer(<layer-name>) ]?\n [ supports( [ <supports-condition> | <declaration> ] ) ]?\n <media-query-list>? ;", - "groups": [ - "CSS Conditional Rules", - "Media Queries" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@import" - }, - "@keyframes": { - "syntax": "@keyframes <keyframes-name> {\n <keyframe-block-list>\n}", - "interfaces": [ - "CSSKeyframeRule", - "CSSKeyframesRule" - ], - "groups": [ - "CSS Animations" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@keyframes" - }, - "@layer": { - "syntax": "@layer [ <layer-name># | <layer-name>? {\n <stylesheet>\n} ]", - "interfaces": [ - "CSSLayerBlockRule", - "CSSLayerStatementRule" - ], - "groups": [ - "CSS Cascading and Inheritance" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@layer" - }, - "@media": { - "syntax": "@media <media-query-list> {\n <group-rule-body>\n}", - "interfaces": [ - "CSSGroupingRule", - "CSSConditionRule", - "CSSMediaRule", - "CSSCustomMediaRule" - ], - "groups": [ - "CSS Conditional Rules", - "Media Queries" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@media" - }, - "@namespace": { - "syntax": "@namespace <namespace-prefix>? [ <string> | <url> ];", - "groups": [ - "CSS Namespaces" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@namespace" - }, - "@page": { - "syntax": "@page <page-selector-list> {\n <page-body>\n}", - "interfaces": [ - "CSSPageRule" - ], - "groups": [ - "CSS Pages" - ], - "descriptors": { - "bleed": { - "syntax": "auto | <length>", - "media": [ - "visual", - "paged" - ], - "initial": "auto", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "marks": { - "syntax": "none | [ crop || cross ]", - "media": [ - "visual", - "paged" - ], - "initial": "none", - "percentages": "no", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard" - }, - "size": { - "syntax": "<length>{1,2} | auto | [ <page-size> || [ portrait | landscape ] ]", - "media": [ - "visual", - "paged" - ], - "initial": "auto", - "percentages": "no", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "orderOfAppearance", - "status": "standard" - } - }, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@page" - }, - "@property": { - "syntax": "@property <custom-property-name> {\n <declaration-list>\n}", - "interfaces": [ - "CSS", - "CSSPropertyRule" - ], - "groups": [ - "CSS Houdini" - ], - "descriptors": { - "syntax": { - "syntax": "<string>", - "media": "all", - "percentages": "no", - "initial": "n/a (required)", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental" - }, - "inherits": { - "syntax": "true | false", - "media": "all", - "percentages": "no", - "initial": "auto", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental" - }, - "initial-value": { - "syntax": "<string>", - "media": "all", - "initial": "n/a (required)", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental" - } - }, - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@property" - }, - "@scroll-timeline": { - "syntax": "@scroll-timeline <timeline-name> { <declaration-list> }", - "interfaces": [ - "ScrollTimeline" - ], - "groups": [ - "CSS Animations" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@scroll-timeline" - }, - "@supports": { - "syntax": "@supports <supports-condition> {\n <group-rule-body>\n}", - "interfaces": [ - "CSSGroupingRule", - "CSSConditionRule", - "CSSSupportsRule" - ], - "groups": [ - "CSS Conditional Rules" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@supports" - }, - "@viewport": { - "syntax": "@viewport {\n <group-rule-body>\n}", - "interfaces": [ - "CSSViewportRule" - ], - "groups": [ - "CSS Device Adaptation" - ], - "descriptors": { - "height": { - "syntax": "<viewport-length>{1,2}", - "media": [ - "visual", - "continuous" - ], - "initial": [ - "min-height", - "max-height" - ], - "percentages": [ - "min-height", - "max-height" - ], - "computed": [ - "min-height", - "max-height" - ], - "order": "orderOfAppearance", - "status": "standard" - }, - "max-height": { - "syntax": "<viewport-length>", - "media": [ - "visual", - "continuous" - ], - "initial": "auto", - "percentages": "referToHeightOfInitialViewport", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard" - }, - "max-width": { - "syntax": "<viewport-length>", - "media": [ - "visual", - "continuous" - ], - "initial": "auto", - "percentages": "referToWidthOfInitialViewport", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard" - }, - "max-zoom": { - "syntax": "auto | <number> | <percentage>", - "media": [ - "visual", - "continuous" - ], - "initial": "auto", - "percentages": "the zoom factor itself", - "computed": "autoNonNegativeOrPercentage", - "order": "uniqueOrder", - "status": "standard" - }, - "min-height": { - "syntax": "<viewport-length>", - "media": [ - "visual", - "continuous" - ], - "initial": "auto", - "percentages": "referToHeightOfInitialViewport", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard" - }, - "min-width": { - "syntax": "<viewport-length>", - "media": [ - "visual", - "continuous" - ], - "initial": "auto", - "percentages": "referToWidthOfInitialViewport", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard" - }, - "min-zoom": { - "syntax": "auto | <number> | <percentage>", - "media": [ - "visual", - "continuous" - ], - "initial": "auto", - "percentages": "the zoom factor itself", - "computed": "autoNonNegativeOrPercentage", - "order": "uniqueOrder", - "status": "standard" - }, - "orientation": { - "syntax": "auto | portrait | landscape", - "media": [ - "visual", - "continuous" - ], - "initial": "auto", - "percentages": "referToSizeOfBoundingBox", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "user-zoom": { - "syntax": "zoom | fixed", - "media": [ - "visual", - "continuous" - ], - "initial": "zoom", - "percentages": "referToSizeOfBoundingBox", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "viewport-fit": { - "syntax": "auto | contain | cover", - "media": [ - "visual", - "continuous" - ], - "initial": "auto", - "percentages": "no", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard" - }, - "width": { - "syntax": "<viewport-length>{1,2}", - "media": [ - "visual", - "continuous" - ], - "initial": [ - "min-width", - "max-width" - ], - "percentages": [ - "min-width", - "max-width" - ], - "computed": [ - "min-width", - "max-width" - ], - "order": "orderOfAppearance", - "status": "standard" - }, - "zoom": { - "syntax": "auto | <number> | <percentage>", - "media": [ - "visual", - "continuous" - ], - "initial": "auto", - "percentages": "the zoom factor itself", - "computed": "autoNonNegativeOrPercentage", - "order": "uniqueOrder", - "status": "standard" - } - }, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@viewport" - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/at-rules.schema.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/at-rules.schema.json deleted file mode 100644 index b69505c1..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/at-rules.schema.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "definitions": { - "stringOrPropertyList": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "string", - "property-reference": { - "comment": "property-reference is an extension to the JSON schema validator. Here it jumps 3 levels up in the hierarchy and tests if a value is an existing key in descriptors. See test/validate-schema.js for implementation details.", - "$data": "3" - } - } - } - ] - } - }, - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "syntax": { - "type": "string" - }, - "interfaces": { - "type": "array", - "items": { - "type": "string" - } - }, - "groups": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "$ref": "definitions.json#/groupList" - } - }, - "descriptors": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "syntax": { - "type": "string" - }, - "media": { - "oneOf": [ - { - "type": "string", - "enum": [ - "all", - "continuous", - "paged", - "visual" - ] - }, - { - "type": "array", - "minItems": 2, - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ - "continuous", - "paged", - "visual" - ] - } - } - ] - }, - "initial": { - "$ref": "#/definitions/stringOrPropertyList" - }, - "percentages": { - "$ref": "#/definitions/stringOrPropertyList" - }, - "computed": { - "$ref": "#/definitions/stringOrPropertyList" - }, - "order": { - "enum": [ - "orderOfAppearance", - "uniqueOrder" - ] - }, - "status": { - "enum": [ - "standard", - "nonstandard", - "experimental" - ] - } - }, - "required": [ - "syntax", - "media", - "initial", - "percentages", - "computed", - "order", - "status" - ] - } - }, - "status": { - "enum": [ - "standard", - "nonstandard", - "experimental" - ] - }, - "mdn_url": { - "type": "string", - "pattern": "^https://developer.mozilla.org/docs/Web/CSS/" - } - }, - "required": [ - "syntax", - "groups", - "status" - ] - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/definitions.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/definitions.json deleted file mode 100644 index 600aab06..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/definitions.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "groupList": { - "enum": [ - "Basic Selectors", - "Combinators", - "Compositing and Blending", - "CSS Angles", - "CSS Animations", - "CSS Backgrounds and Borders", - "CSS Basic User Interface", - "CSS Box Model", - "CSS Box Alignment", - "CSS Break", - "CSS Cascading and Inheritance", - "CSS Charsets", - "CSS Color", - "CSS Columns", - "CSS Conditional Rules", - "CSS Containment", - "CSS Counter Styles", - "CSS Device Adaptation", - "CSS Display", - "CSS Flexible Box Layout", - "CSS Flexible Lengths", - "CSS Fonts", - "CSS Fragmentation", - "CSS Frequencies", - "CSS Generated Content", - "CSS Grid Layout", - "CSS Houdini", - "CSS Images", - "CSS Inline", - "CSS Lengths", - "CSS Lists and Counters", - "CSS Logical Properties", - "CSS Masking", - "CSS Miscellaneous", - "CSS Motion Path", - "CSS Namespaces", - "CSS Overflow", - "CSS Pages", - "CSS Positioning", - "CSS Regions", - "CSS Resolutions", - "CSS Ruby", - "CSS Scroll Anchoring", - "CSS Scrollbars", - "CSS Scroll Snap", - "CSS Shadow Parts", - "CSS Shapes", - "CSS Speech", - "CSS Table", - "CSS Text", - "CSS Text Decoration", - "CSS Times", - "CSS Transforms", - "CSS Transitions", - "CSS Types", - "CSS Units", - "CSS Variables", - "CSS Will Change", - "CSS Writing Modes", - "CSSOM View", - "Filter Effects", - "Grouping Selectors", - "MathML", - "Media Queries", - "Microsoft Extensions", - "Mozilla Extensions", - "Pointer Events", - "Pseudo", - "Pseudo-classes", - "Pseudo-elements", - "Selectors", - "WebKit Extensions" - ] - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/index.js b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/index.js deleted file mode 100644 index c258137f..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - atRules: require('./at-rules'), - selectors: require('./selectors'), - types: require('./types'), - properties: require('./properties'), - syntaxes: require('./syntaxes'), - units: require('./units'), -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/properties.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/properties.json deleted file mode 100644 index cd528a98..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/properties.json +++ /dev/null @@ -1,9297 +0,0 @@ -{ - "--*": { - "syntax": "<declaration-value>", - "media": "all", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Variables" - ], - "initial": "seeProse", - "appliesto": "allElements", - "computed": "asSpecifiedWithVarsSubstituted", - "order": "perGrammar", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/--*" - }, - "-ms-accelerator": { - "syntax": "false | true", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "false", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-accelerator" - }, - "-ms-block-progression": { - "syntax": "tb | rl | bt | lr", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "tb", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-block-progression" - }, - "-ms-content-zoom-chaining": { - "syntax": "none | chained", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "none", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-chaining" - }, - "-ms-content-zooming": { - "syntax": "none | zoom", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "zoomForTheTopLevelNoneForTheRest", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zooming" - }, - "-ms-content-zoom-limit": { - "syntax": "<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": [ - "-ms-content-zoom-limit-max", - "-ms-content-zoom-limit-min" - ], - "groups": [ - "Microsoft Extensions" - ], - "initial": [ - "-ms-content-zoom-limit-max", - "-ms-content-zoom-limit-min" - ], - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": [ - "-ms-content-zoom-limit-max", - "-ms-content-zoom-limit-min" - ], - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit" - }, - "-ms-content-zoom-limit-max": { - "syntax": "<percentage>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "maxZoomFactor", - "groups": [ - "Microsoft Extensions" - ], - "initial": "400%", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit-max" - }, - "-ms-content-zoom-limit-min": { - "syntax": "<percentage>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "minZoomFactor", - "groups": [ - "Microsoft Extensions" - ], - "initial": "100%", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit-min" - }, - "-ms-content-zoom-snap": { - "syntax": "<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": [ - "-ms-content-zoom-snap-type", - "-ms-content-zoom-snap-points" - ], - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": [ - "-ms-content-zoom-snap-type", - "-ms-content-zoom-snap-points" - ], - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap" - }, - "-ms-content-zoom-snap-points": { - "syntax": "snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "snapInterval(0%, 100%)", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap-points" - }, - "-ms-content-zoom-snap-type": { - "syntax": "none | proximity | mandatory", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "none", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap-type" - }, - "-ms-filter": { - "syntax": "<string>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "\"\"", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-filter" - }, - "-ms-flow-from": { - "syntax": "[ none | <custom-ident> ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "none", - "appliesto": "nonReplacedElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-flow-from" - }, - "-ms-flow-into": { - "syntax": "[ none | <custom-ident> ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "none", - "appliesto": "iframeElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-flow-into" - }, - "-ms-grid-columns": { - "syntax": "none | <track-list> | <auto-track-list>", - "media": "visual", - "inherited": false, - "animationType": "simpleListOfLpcDifferenceLpc", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Grid Layout" - ], - "initial": "none", - "appliesto": "gridContainers", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-grid-columns" - }, - "-ms-grid-rows": { - "syntax": "none | <track-list> | <auto-track-list>", - "media": "visual", - "inherited": false, - "animationType": "simpleListOfLpcDifferenceLpc", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Grid Layout" - ], - "initial": "none", - "appliesto": "gridContainers", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-grid-rows" - }, - "-ms-high-contrast-adjust": { - "syntax": "auto | none", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-high-contrast-adjust" - }, - "-ms-hyphenate-limit-chars": { - "syntax": "auto | <integer>{1,3}", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-chars" - }, - "-ms-hyphenate-limit-lines": { - "syntax": "no-limit | <integer>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "no-limit", - "appliesto": "blockContainerElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-lines" - }, - "-ms-hyphenate-limit-zone": { - "syntax": "<percentage> | <length>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "referToLineBoxWidth", - "groups": [ - "Microsoft Extensions" - ], - "initial": "0", - "appliesto": "blockContainerElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-zone" - }, - "-ms-ime-align": { - "syntax": "auto | after", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-ime-align" - }, - "-ms-overflow-style": { - "syntax": "auto | none | scrollbar | -ms-autohiding-scrollbar", - "media": "interactive", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "auto", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-overflow-style" - }, - "-ms-scrollbar-3dlight-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "dependsOnUserAgent", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-3dlight-color" - }, - "-ms-scrollbar-arrow-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "ButtonText", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-arrow-color" - }, - "-ms-scrollbar-base-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "dependsOnUserAgent", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-base-color" - }, - "-ms-scrollbar-darkshadow-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "ThreeDDarkShadow", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-darkshadow-color" - }, - "-ms-scrollbar-face-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "ThreeDFace", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-face-color" - }, - "-ms-scrollbar-highlight-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "ThreeDHighlight", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-highlight-color" - }, - "-ms-scrollbar-shadow-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "ThreeDDarkShadow", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-shadow-color" - }, - "-ms-scrollbar-track-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "Scrollbar", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-track-color" - }, - "-ms-scroll-chaining": { - "syntax": "chained | none", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "chained", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-chaining" - }, - "-ms-scroll-limit": { - "syntax": "<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": [ - "-ms-scroll-limit-x-min", - "-ms-scroll-limit-y-min", - "-ms-scroll-limit-x-max", - "-ms-scroll-limit-y-max" - ], - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": [ - "-ms-scroll-limit-x-min", - "-ms-scroll-limit-y-min", - "-ms-scroll-limit-x-max", - "-ms-scroll-limit-y-max" - ], - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit" - }, - "-ms-scroll-limit-x-max": { - "syntax": "auto | <length>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "auto", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-x-max" - }, - "-ms-scroll-limit-x-min": { - "syntax": "<length>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "0", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-x-min" - }, - "-ms-scroll-limit-y-max": { - "syntax": "auto | <length>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "auto", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-y-max" - }, - "-ms-scroll-limit-y-min": { - "syntax": "<length>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "0", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-y-min" - }, - "-ms-scroll-rails": { - "syntax": "none | railed", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "railed", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-rails" - }, - "-ms-scroll-snap-points-x": { - "syntax": "snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "snapInterval(0px, 100%)", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-points-x" - }, - "-ms-scroll-snap-points-y": { - "syntax": "snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "snapInterval(0px, 100%)", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-points-y" - }, - "-ms-scroll-snap-type": { - "syntax": "none | proximity | mandatory", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "none", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-type" - }, - "-ms-scroll-snap-x": { - "syntax": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": [ - "-ms-scroll-snap-type", - "-ms-scroll-snap-points-x" - ], - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": [ - "-ms-scroll-snap-type", - "-ms-scroll-snap-points-x" - ], - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-x" - }, - "-ms-scroll-snap-y": { - "syntax": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": [ - "-ms-scroll-snap-type", - "-ms-scroll-snap-points-y" - ], - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": [ - "-ms-scroll-snap-type", - "-ms-scroll-snap-points-y" - ], - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-y" - }, - "-ms-scroll-translation": { - "syntax": "none | vertical-to-horizontal", - "media": "interactive", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-translation" - }, - "-ms-text-autospace": { - "syntax": "none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-text-autospace" - }, - "-ms-touch-select": { - "syntax": "grippers | none", - "media": "interactive", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "grippers", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-touch-select" - }, - "-ms-user-select": { - "syntax": "none | element | text", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "text", - "appliesto": "nonReplacedElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-user-select" - }, - "-ms-wrap-flow": { - "syntax": "auto | both | start | end | maximum | clear", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "auto", - "appliesto": "blockLevelElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-flow" - }, - "-ms-wrap-margin": { - "syntax": "<length>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "0", - "appliesto": "exclusionElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-margin" - }, - "-ms-wrap-through": { - "syntax": "wrap | none", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "wrap", - "appliesto": "blockLevelElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-through" - }, - "-moz-appearance": { - "syntax": "none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions", - "WebKit Extensions" - ], - "initial": "noneButOverriddenInUserAgentCSS", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/appearance" - }, - "-moz-binding": { - "syntax": "<url> | none", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "none", - "appliesto": "allElementsExceptGeneratedContentOrPseudoElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-binding" - }, - "-moz-border-bottom-colors": { - "syntax": "<color>+ | none", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-border-bottom-colors" - }, - "-moz-border-left-colors": { - "syntax": "<color>+ | none", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-border-left-colors" - }, - "-moz-border-right-colors": { - "syntax": "<color>+ | none", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-border-right-colors" - }, - "-moz-border-top-colors": { - "syntax": "<color>+ | none", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-border-top-colors" - }, - "-moz-context-properties": { - "syntax": "none | [ fill | fill-opacity | stroke | stroke-opacity ]#", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "none", - "appliesto": "allElementsThatCanReferenceImages", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-context-properties" - }, - "-moz-float-edge": { - "syntax": "border-box | content-box | margin-box | padding-box", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "content-box", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-float-edge" - }, - "-moz-force-broken-image-icon": { - "syntax": "0 | 1", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "0", - "appliesto": "images", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-force-broken-image-icon" - }, - "-moz-image-region": { - "syntax": "<shape> | auto", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "auto", - "appliesto": "xulImageElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-image-region" - }, - "-moz-orient": { - "syntax": "inline | block | horizontal | vertical", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "inline", - "appliesto": "anyElementEffectOnProgressAndMeter", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-orient" - }, - "-moz-outline-radius": { - "syntax": "<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?", - "media": "visual", - "inherited": false, - "animationType": [ - "-moz-outline-radius-topleft", - "-moz-outline-radius-topright", - "-moz-outline-radius-bottomright", - "-moz-outline-radius-bottomleft" - ], - "percentages": [ - "-moz-outline-radius-topleft", - "-moz-outline-radius-topright", - "-moz-outline-radius-bottomright", - "-moz-outline-radius-bottomleft" - ], - "groups": [ - "Mozilla Extensions" - ], - "initial": [ - "-moz-outline-radius-topleft", - "-moz-outline-radius-topright", - "-moz-outline-radius-bottomright", - "-moz-outline-radius-bottomleft" - ], - "appliesto": "allElements", - "computed": [ - "-moz-outline-radius-topleft", - "-moz-outline-radius-topright", - "-moz-outline-radius-bottomright", - "-moz-outline-radius-bottomleft" - ], - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius" - }, - "-moz-outline-radius-bottomleft": { - "syntax": "<outline-radius>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "Mozilla Extensions" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomleft" - }, - "-moz-outline-radius-bottomright": { - "syntax": "<outline-radius>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "Mozilla Extensions" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomright" - }, - "-moz-outline-radius-topleft": { - "syntax": "<outline-radius>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "Mozilla Extensions" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topleft" - }, - "-moz-outline-radius-topright": { - "syntax": "<outline-radius>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "Mozilla Extensions" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topright" - }, - "-moz-stack-sizing": { - "syntax": "ignore | stretch-to-fit", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "stretch-to-fit", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-stack-sizing" - }, - "-moz-text-blink": { - "syntax": "none | blink", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-text-blink" - }, - "-moz-user-focus": { - "syntax": "ignore | normal | select-after | select-before | select-menu | select-same | select-all | none", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-user-focus" - }, - "-moz-user-input": { - "syntax": "auto | none | enabled | disabled", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-user-input" - }, - "-moz-user-modify": { - "syntax": "read-only | read-write | write-only", - "media": "interactive", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "read-only", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-user-modify" - }, - "-moz-window-dragging": { - "syntax": "drag | no-drag", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "drag", - "appliesto": "allElementsCreatingNativeWindows", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-window-dragging" - }, - "-moz-window-shadow": { - "syntax": "default | menu | tooltip | sheet | none", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "default", - "appliesto": "allElementsCreatingNativeWindows", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-moz-window-shadow" - }, - "-webkit-appearance": { - "syntax": "none | button | button-bevel | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | media-time-remaining-display | media-toggle-closed-captions-button | media-volume-slider | media-volume-slider-container | media-volume-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "noneButOverriddenInUserAgentCSS", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/appearance" - }, - "-webkit-border-before": { - "syntax": "<'border-width'> || <'border-style'> || <color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": [ - "-webkit-border-before-width" - ], - "groups": [ - "WebKit Extensions" - ], - "initial": [ - "border-width", - "border-style", - "color" - ], - "appliesto": "allElements", - "computed": [ - "border-width", - "border-style", - "color" - ], - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-border-before" - }, - "-webkit-border-before-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "nonstandard" - }, - "-webkit-border-before-style": { - "syntax": "<'border-style'>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard" - }, - "-webkit-border-before-width": { - "syntax": "<'border-width'>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "WebKit Extensions" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthZeroIfBorderStyleNoneOrHidden", - "order": "uniqueOrder", - "status": "nonstandard" - }, - "-webkit-box-reflect": { - "syntax": "[ above | below | right | left ]? <length>? <image>?", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-box-reflect" - }, - "-webkit-line-clamp": { - "syntax": "none | <integer>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "WebKit Extensions", - "CSS Overflow" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-line-clamp" - }, - "-webkit-mask": { - "syntax": "[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <box> | border | padding | content | text ] || [ <box> | border | padding | content ] ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": [ - "-webkit-mask-image", - "-webkit-mask-repeat", - "-webkit-mask-attachment", - "-webkit-mask-position", - "-webkit-mask-origin", - "-webkit-mask-clip" - ], - "appliesto": "allElements", - "computed": [ - "-webkit-mask-image", - "-webkit-mask-repeat", - "-webkit-mask-attachment", - "-webkit-mask-position", - "-webkit-mask-origin", - "-webkit-mask-clip" - ], - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask" - }, - "-webkit-mask-attachment": { - "syntax": "<attachment>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "scroll", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-attachment" - }, - "-webkit-mask-clip": { - "syntax": "[ <box> | border | padding | content | text ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "border", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-clip" - }, - "-webkit-mask-composite": { - "syntax": "<composite-style>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "source-over", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-composite" - }, - "-webkit-mask-image": { - "syntax": "<mask-reference>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "absoluteURIOrNone", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-image" - }, - "-webkit-mask-origin": { - "syntax": "[ <box> | border | padding | content ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "padding", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-origin" - }, - "-webkit-mask-position": { - "syntax": "<position>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "referToSizeOfElement", - "groups": [ - "WebKit Extensions" - ], - "initial": "0% 0%", - "appliesto": "allElements", - "computed": "absoluteLengthOrPercentage", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-position" - }, - "-webkit-mask-position-x": { - "syntax": "[ <length-percentage> | left | center | right ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "referToSizeOfElement", - "groups": [ - "WebKit Extensions" - ], - "initial": "0%", - "appliesto": "allElements", - "computed": "absoluteLengthOrPercentage", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-x" - }, - "-webkit-mask-position-y": { - "syntax": "[ <length-percentage> | top | center | bottom ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "referToSizeOfElement", - "groups": [ - "WebKit Extensions" - ], - "initial": "0%", - "appliesto": "allElements", - "computed": "absoluteLengthOrPercentage", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-y" - }, - "-webkit-mask-repeat": { - "syntax": "<repeat-style>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "repeat", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-repeat" - }, - "-webkit-mask-repeat-x": { - "syntax": "repeat | no-repeat | space | round", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "repeat", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-x" - }, - "-webkit-mask-repeat-y": { - "syntax": "repeat | no-repeat | space | round", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "repeat", - "appliesto": "allElements", - "computed": "absoluteLengthOrPercentage", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-y" - }, - "-webkit-mask-size": { - "syntax": "<bg-size>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "relativeToBackgroundPositioningArea", - "groups": [ - "WebKit Extensions" - ], - "initial": "auto auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-size" - }, - "-webkit-overflow-scrolling": { - "syntax": "auto | touch", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "auto", - "appliesto": "scrollingBoxes", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-overflow-scrolling" - }, - "-webkit-tap-highlight-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "black", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-tap-highlight-color" - }, - "-webkit-text-fill-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "color", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-fill-color" - }, - "-webkit-text-stroke": { - "syntax": "<length> || <color>", - "media": "visual", - "inherited": true, - "animationType": [ - "-webkit-text-stroke-width", - "-webkit-text-stroke-color" - ], - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": [ - "-webkit-text-stroke-width", - "-webkit-text-stroke-color" - ], - "appliesto": "allElements", - "computed": [ - "-webkit-text-stroke-width", - "-webkit-text-stroke-color" - ], - "order": "canonicalOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke" - }, - "-webkit-text-stroke-color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "color", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-color" - }, - "-webkit-text-stroke-width": { - "syntax": "<length>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "absoluteLength", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-width" - }, - "-webkit-touch-callout": { - "syntax": "default | none", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "default", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-touch-callout" - }, - "-webkit-user-modify": { - "syntax": "read-only | read-write | read-write-plaintext-only", - "media": "interactive", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "WebKit Extensions" - ], - "initial": "read-only", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard" - }, - "accent-color": { - "syntax": "auto | <color>", - "media": "interactive", - "inherited": true, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asAutoOrColor", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/accent-color" - }, - "align-content": { - "syntax": "normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": "normal", - "appliesto": "multilineFlexContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/align-content" - }, - "align-items": { - "syntax": "normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/align-items" - }, - "align-self": { - "syntax": "auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": "auto", - "appliesto": "flexItemsGridItemsAndAbsolutelyPositionedBoxes", - "computed": "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/align-self" - }, - "align-tracks": { - "syntax": "[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": "normal", - "appliesto": "gridContainersWithMasonryLayoutInTheirBlockAxis", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/align-tracks" - }, - "all": { - "syntax": "initial | inherit | unset | revert | revert-layer", - "media": "noPracticalMedia", - "inherited": false, - "animationType": "eachOfShorthandPropertiesExceptUnicodeBiDiAndDirection", - "percentages": "no", - "groups": [ - "CSS Miscellaneous" - ], - "initial": "noPracticalInitialValue", - "appliesto": "allElements", - "computed": "asSpecifiedAppliesToEachProperty", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/all" - }, - "animation": { - "syntax": "<single-animation>#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": [ - "animation-name", - "animation-duration", - "animation-timing-function", - "animation-delay", - "animation-iteration-count", - "animation-direction", - "animation-fill-mode", - "animation-play-state", - "animation-timeline" - ], - "appliesto": "allElementsAndPseudos", - "computed": [ - "animation-name", - "animation-duration", - "animation-timing-function", - "animation-delay", - "animation-direction", - "animation-iteration-count", - "animation-fill-mode", - "animation-play-state", - "animation-timeline" - ], - "order": "orderOfAppearance", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation" - }, - "animation-delay": { - "syntax": "<time>#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": "0s", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation-delay" - }, - "animation-direction": { - "syntax": "<single-animation-direction>#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": "normal", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation-direction" - }, - "animation-duration": { - "syntax": "<time>#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": "0s", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation-duration" - }, - "animation-fill-mode": { - "syntax": "<single-animation-fill-mode>#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": "none", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode" - }, - "animation-iteration-count": { - "syntax": "<single-animation-iteration-count>#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": "1", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count" - }, - "animation-name": { - "syntax": "[ none | <keyframes-name> ]#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": "none", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation-name" - }, - "animation-play-state": { - "syntax": "<single-animation-play-state>#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": "running", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation-play-state" - }, - "animation-timing-function": { - "syntax": "<easing-function>#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": "ease", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation-timing-function" - }, - "animation-timeline": { - "syntax": "<single-animation-timeline>#", - "media": "visual", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Animations" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "listEachItemIdentifyerOrNoneAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/animation-timeline" - }, - "appearance": { - "syntax": "none | auto | textfield | menulist-button | <compat-auto>", - "media": "all", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/appearance" - }, - "aspect-ratio": { - "syntax": "auto | <ratio>", - "media": "all", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "auto", - "appliesto": "allElementsExceptInlineBoxesAndInternalRubyOrTableBoxes", - "computed": "asSpecified", - "order": "perGrammar", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/aspect-ratio" - }, - "azimuth": { - "syntax": "<angle> | [ [ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards", - "media": "aural", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Speech" - ], - "initial": "center", - "appliesto": "allElements", - "computed": "normalizedAngle", - "order": "orderOfAppearance", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/azimuth" - }, - "backdrop-filter": { - "syntax": "none | <filter-function-list>", - "media": "visual", - "inherited": false, - "animationType": "filterList", - "percentages": "no", - "groups": [ - "Filter Effects" - ], - "initial": "none", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/backdrop-filter" - }, - "backface-visibility": { - "syntax": "visible | hidden", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Transforms" - ], - "initial": "visible", - "appliesto": "transformableElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/backface-visibility" - }, - "background": { - "syntax": "[ <bg-layer> , ]* <final-bg-layer>", - "media": "visual", - "inherited": false, - "animationType": [ - "background-color", - "background-image", - "background-clip", - "background-position", - "background-size", - "background-repeat", - "background-attachment" - ], - "percentages": [ - "background-position", - "background-size" - ], - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "background-image", - "background-position", - "background-size", - "background-repeat", - "background-origin", - "background-clip", - "background-attachment", - "background-color" - ], - "appliesto": "allElements", - "computed": [ - "background-image", - "background-position", - "background-size", - "background-repeat", - "background-origin", - "background-clip", - "background-attachment", - "background-color" - ], - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background" - }, - "background-attachment": { - "syntax": "<attachment>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "scroll", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-attachment" - }, - "background-blend-mode": { - "syntax": "<blend-mode>#", - "media": "none", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Compositing and Blending" - ], - "initial": "normal", - "appliesto": "allElementsSVGContainerGraphicsAndGraphicsReferencingElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-blend-mode" - }, - "background-clip": { - "syntax": "<box>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "border-box", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-clip" - }, - "background-color": { - "syntax": "<color>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "transparent", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-color" - }, - "background-image": { - "syntax": "<bg-image>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecifiedURLsAbsolute", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-image" - }, - "background-origin": { - "syntax": "<box>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "padding-box", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-origin" - }, - "background-position": { - "syntax": "<bg-position>#", - "media": "visual", - "inherited": false, - "animationType": "repeatableListOfSimpleListOfLpc", - "percentages": "referToSizeOfBackgroundPositioningAreaMinusBackgroundImageSize", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "0% 0%", - "appliesto": "allElements", - "computed": [ - "background-position-x", - "background-position-y" - ], - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-position" - }, - "background-position-x": { - "syntax": "[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "referToWidthOfBackgroundPositioningAreaMinusBackgroundImageHeight", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "0%", - "appliesto": "allElements", - "computed": "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-position-x" - }, - "background-position-y": { - "syntax": "[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "referToHeightOfBackgroundPositioningAreaMinusBackgroundImageHeight", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "0%", - "appliesto": "allElements", - "computed": "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-position-y" - }, - "background-repeat": { - "syntax": "<repeat-style>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "repeat", - "appliesto": "allElements", - "computed": "listEachItemHasTwoKeywordsOnePerDimension", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-repeat" - }, - "background-size": { - "syntax": "<bg-size>#", - "media": "visual", - "inherited": false, - "animationType": "repeatableListOfSimpleListOfLpc", - "percentages": "relativeToBackgroundPositioningArea", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "auto auto", - "appliesto": "allElements", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/background-size" - }, - "block-overflow": { - "syntax": "clip | ellipsis | <string>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "clip", - "appliesto": "blockContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "experimental" - }, - "block-size": { - "syntax": "<'width'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "blockSizeOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "auto", - "appliesto": "sameAsWidthAndHeight", - "computed": "sameAsWidthAndHeight", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/block-size" - }, - "border": { - "syntax": "<line-width> || <line-style> || <color>", - "media": "visual", - "inherited": false, - "animationType": [ - "border-color", - "border-style", - "border-width" - ], - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-width", - "border-style", - "border-color" - ], - "appliesto": "allElements", - "computed": [ - "border-width", - "border-style", - "border-color" - ], - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border" - }, - "border-block": { - "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": [ - "border-top-width", - "border-top-style", - "border-top-color" - ], - "appliesto": "allElements", - "computed": [ - "border-top-width", - "border-top-style", - "border-top-color" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block" - }, - "border-block-color": { - "syntax": "<'border-top-color'>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-color" - }, - "border-block-style": { - "syntax": "<'border-top-style'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-style" - }, - "border-block-width": { - "syntax": "<'border-top-width'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthZeroIfBorderStyleNoneOrHidden", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-width" - }, - "border-block-end": { - "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", - "media": "visual", - "inherited": false, - "animationType": [ - "border-block-end-color", - "border-block-end-style", - "border-block-end-width" - ], - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": [ - "border-top-width", - "border-top-style", - "border-top-color" - ], - "appliesto": "allElements", - "computed": [ - "border-top-width", - "border-top-style", - "border-top-color" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-end" - }, - "border-block-end-color": { - "syntax": "<'border-top-color'>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-end-color" - }, - "border-block-end-style": { - "syntax": "<'border-top-style'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-end-style" - }, - "border-block-end-width": { - "syntax": "<'border-top-width'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthZeroIfBorderStyleNoneOrHidden", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-end-width" - }, - "border-block-start": { - "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", - "media": "visual", - "inherited": false, - "animationType": [ - "border-block-start-color", - "border-block-start-style", - "border-block-start-width" - ], - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": [ - "border-width", - "border-style", - "color" - ], - "appliesto": "allElements", - "computed": [ - "border-width", - "border-style", - "border-block-start-color" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-start" - }, - "border-block-start-color": { - "syntax": "<'border-top-color'>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-start-color" - }, - "border-block-start-style": { - "syntax": "<'border-top-style'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-start-style" - }, - "border-block-start-width": { - "syntax": "<'border-top-width'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthZeroIfBorderStyleNoneOrHidden", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-block-start-width" - }, - "border-bottom": { - "syntax": "<line-width> || <line-style> || <color>", - "media": "visual", - "inherited": false, - "animationType": [ - "border-bottom-color", - "border-bottom-style", - "border-bottom-width" - ], - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-bottom-width", - "border-bottom-style", - "border-bottom-color" - ], - "appliesto": "allElements", - "computed": [ - "border-bottom-width", - "border-bottom-style", - "border-bottom-color" - ], - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom" - }, - "border-bottom-color": { - "syntax": "<'border-top-color'>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-color" - }, - "border-bottom-left-radius": { - "syntax": "<length-percentage>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "0", - "appliesto": "allElementsUAsNotRequiredWhenCollapse", - "computed": "twoAbsoluteLengthOrPercentages", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius" - }, - "border-bottom-right-radius": { - "syntax": "<length-percentage>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "0", - "appliesto": "allElementsUAsNotRequiredWhenCollapse", - "computed": "twoAbsoluteLengthOrPercentages", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius" - }, - "border-bottom-style": { - "syntax": "<line-style>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-style" - }, - "border-bottom-width": { - "syntax": "<line-width>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthOr0IfBorderBottomStyleNoneOrHidden", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-width" - }, - "border-collapse": { - "syntax": "collapse | separate", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Table" - ], - "initial": "separate", - "appliesto": "tableElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-collapse" - }, - "border-color": { - "syntax": "<color>{1,4}", - "media": "visual", - "inherited": false, - "animationType": [ - "border-bottom-color", - "border-left-color", - "border-right-color", - "border-top-color" - ], - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-top-color", - "border-right-color", - "border-bottom-color", - "border-left-color" - ], - "appliesto": "allElements", - "computed": [ - "border-bottom-color", - "border-left-color", - "border-right-color", - "border-top-color" - ], - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-color" - }, - "border-end-end-radius": { - "syntax": "<length-percentage>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElementsUAsNotRequiredWhenCollapse", - "computed": "twoAbsoluteLengthOrPercentages", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius" - }, - "border-end-start-radius": { - "syntax": "<length-percentage>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElementsUAsNotRequiredWhenCollapse", - "computed": "twoAbsoluteLengthOrPercentages", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius" - }, - "border-image": { - "syntax": "<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": [ - "border-image-slice", - "border-image-width" - ], - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-image-source", - "border-image-slice", - "border-image-width", - "border-image-outset", - "border-image-repeat" - ], - "appliesto": "allElementsExceptTableElementsWhenCollapse", - "computed": [ - "border-image-outset", - "border-image-repeat", - "border-image-slice", - "border-image-source", - "border-image-width" - ], - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-image" - }, - "border-image-outset": { - "syntax": "[ <length> | <number> ]{1,4}", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "0", - "appliesto": "allElementsExceptTableElementsWhenCollapse", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-image-outset" - }, - "border-image-repeat": { - "syntax": "[ stretch | repeat | round | space ]{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "stretch", - "appliesto": "allElementsExceptTableElementsWhenCollapse", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-image-repeat" - }, - "border-image-slice": { - "syntax": "<number-percentage>{1,4} && fill?", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "referToSizeOfBorderImage", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "100%", - "appliesto": "allElementsExceptTableElementsWhenCollapse", - "computed": "oneToFourPercentagesOrAbsoluteLengthsPlusFill", - "order": "percentagesOrLengthsFollowedByFill", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-image-slice" - }, - "border-image-source": { - "syntax": "none | <image>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "none", - "appliesto": "allElementsExceptTableElementsWhenCollapse", - "computed": "noneOrImageWithAbsoluteURI", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-image-source" - }, - "border-image-width": { - "syntax": "[ <length-percentage> | <number> | auto ]{1,4}", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "referToWidthOrHeightOfBorderImageArea", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "1", - "appliesto": "allElementsExceptTableElementsWhenCollapse", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-image-width" - }, - "border-inline": { - "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": [ - "border-top-width", - "border-top-style", - "border-top-color" - ], - "appliesto": "allElements", - "computed": [ - "border-top-width", - "border-top-style", - "border-top-color" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline" - }, - "border-inline-end": { - "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", - "media": "visual", - "inherited": false, - "animationType": [ - "border-inline-end-color", - "border-inline-end-style", - "border-inline-end-width" - ], - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": [ - "border-width", - "border-style", - "color" - ], - "appliesto": "allElements", - "computed": [ - "border-width", - "border-style", - "border-inline-end-color" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-end" - }, - "border-inline-color": { - "syntax": "<'border-top-color'>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-color" - }, - "border-inline-style": { - "syntax": "<'border-top-style'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-style" - }, - "border-inline-width": { - "syntax": "<'border-top-width'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthZeroIfBorderStyleNoneOrHidden", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-width" - }, - "border-inline-end-color": { - "syntax": "<'border-top-color'>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color" - }, - "border-inline-end-style": { - "syntax": "<'border-top-style'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style" - }, - "border-inline-end-width": { - "syntax": "<'border-top-width'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthZeroIfBorderStyleNoneOrHidden", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width" - }, - "border-inline-start": { - "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", - "media": "visual", - "inherited": false, - "animationType": [ - "border-inline-start-color", - "border-inline-start-style", - "border-inline-start-width" - ], - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": [ - "border-width", - "border-style", - "color" - ], - "appliesto": "allElements", - "computed": [ - "border-width", - "border-style", - "border-inline-start-color" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-start" - }, - "border-inline-start-color": { - "syntax": "<'border-top-color'>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color" - }, - "border-inline-start-style": { - "syntax": "<'border-top-style'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Logical Properties" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style" - }, - "border-inline-start-width": { - "syntax": "<'border-top-width'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthZeroIfBorderStyleNoneOrHidden", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width" - }, - "border-left": { - "syntax": "<line-width> || <line-style> || <color>", - "media": "visual", - "inherited": false, - "animationType": [ - "border-left-color", - "border-left-style", - "border-left-width" - ], - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-left-width", - "border-left-style", - "border-left-color" - ], - "appliesto": "allElements", - "computed": [ - "border-left-width", - "border-left-style", - "border-left-color" - ], - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-left" - }, - "border-left-color": { - "syntax": "<color>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-left-color" - }, - "border-left-style": { - "syntax": "<line-style>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-left-style" - }, - "border-left-width": { - "syntax": "<line-width>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthOr0IfBorderLeftStyleNoneOrHidden", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-left-width" - }, - "border-radius": { - "syntax": "<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?", - "media": "visual", - "inherited": false, - "animationType": [ - "border-top-left-radius", - "border-top-right-radius", - "border-bottom-right-radius", - "border-bottom-left-radius" - ], - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-top-left-radius", - "border-top-right-radius", - "border-bottom-right-radius", - "border-bottom-left-radius" - ], - "appliesto": "allElementsUAsNotRequiredWhenCollapse", - "computed": [ - "border-bottom-left-radius", - "border-bottom-right-radius", - "border-top-left-radius", - "border-top-right-radius" - ], - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-radius" - }, - "border-right": { - "syntax": "<line-width> || <line-style> || <color>", - "media": "visual", - "inherited": false, - "animationType": [ - "border-right-color", - "border-right-style", - "border-right-width" - ], - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-right-width", - "border-right-style", - "border-right-color" - ], - "appliesto": "allElements", - "computed": [ - "border-right-width", - "border-right-style", - "border-right-color" - ], - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-right" - }, - "border-right-color": { - "syntax": "<color>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-right-color" - }, - "border-right-style": { - "syntax": "<line-style>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-right-style" - }, - "border-right-width": { - "syntax": "<line-width>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthOr0IfBorderRightStyleNoneOrHidden", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-right-width" - }, - "border-spacing": { - "syntax": "<length> <length>?", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Table" - ], - "initial": "0", - "appliesto": "tableElements", - "computed": "twoAbsoluteLengths", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-spacing" - }, - "border-start-end-radius": { - "syntax": "<length-percentage>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElementsUAsNotRequiredWhenCollapse", - "computed": "twoAbsoluteLengthOrPercentages", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius" - }, - "border-start-start-radius": { - "syntax": "<length-percentage>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElementsUAsNotRequiredWhenCollapse", - "computed": "twoAbsoluteLengthOrPercentages", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius" - }, - "border-style": { - "syntax": "<line-style>{1,4}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-top-style", - "border-right-style", - "border-bottom-style", - "border-left-style" - ], - "appliesto": "allElements", - "computed": [ - "border-bottom-style", - "border-left-style", - "border-right-style", - "border-top-style" - ], - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-style" - }, - "border-top": { - "syntax": "<line-width> || <line-style> || <color>", - "media": "visual", - "inherited": false, - "animationType": [ - "border-top-color", - "border-top-style", - "border-top-width" - ], - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-top-width", - "border-top-style", - "border-top-color" - ], - "appliesto": "allElements", - "computed": [ - "border-top-width", - "border-top-style", - "border-top-color" - ], - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-top" - }, - "border-top-color": { - "syntax": "<color>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-top-color" - }, - "border-top-left-radius": { - "syntax": "<length-percentage>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "0", - "appliesto": "allElementsUAsNotRequiredWhenCollapse", - "computed": "twoAbsoluteLengthOrPercentages", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius" - }, - "border-top-right-radius": { - "syntax": "<length-percentage>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfBorderBox", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "0", - "appliesto": "allElementsUAsNotRequiredWhenCollapse", - "computed": "twoAbsoluteLengthOrPercentages", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius" - }, - "border-top-style": { - "syntax": "<line-style>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-top-style" - }, - "border-top-width": { - "syntax": "<line-width>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLengthOr0IfBorderTopStyleNoneOrHidden", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-top-width" - }, - "border-width": { - "syntax": "<line-width>{1,4}", - "media": "visual", - "inherited": false, - "animationType": [ - "border-bottom-width", - "border-left-width", - "border-right-width", - "border-top-width" - ], - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": [ - "border-top-width", - "border-right-width", - "border-bottom-width", - "border-left-width" - ], - "appliesto": "allElements", - "computed": [ - "border-bottom-width", - "border-left-width", - "border-right-width", - "border-top-width" - ], - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/border-width" - }, - "bottom": { - "syntax": "<length> | <percentage> | auto", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToContainingBlockHeight", - "groups": [ - "CSS Positioning" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/bottom" - }, - "box-align": { - "syntax": "start | center | end | baseline | stretch", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions", - "WebKit Extensions" - ], - "initial": "stretch", - "appliesto": "elementsWithDisplayBoxOrInlineBox", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-align" - }, - "box-decoration-break": { - "syntax": "slice | clone", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fragmentation" - ], - "initial": "slice", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-decoration-break" - }, - "box-direction": { - "syntax": "normal | reverse | inherit", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions", - "WebKit Extensions" - ], - "initial": "normal", - "appliesto": "elementsWithDisplayBoxOrInlineBox", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-direction" - }, - "box-flex": { - "syntax": "<number>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions", - "WebKit Extensions" - ], - "initial": "0", - "appliesto": "directChildrenOfElementsWithDisplayMozBoxMozInlineBox", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-flex" - }, - "box-flex-group": { - "syntax": "<integer>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions", - "WebKit Extensions" - ], - "initial": "1", - "appliesto": "inFlowChildrenOfBoxElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-flex-group" - }, - "box-lines": { - "syntax": "single | multiple", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions", - "WebKit Extensions" - ], - "initial": "single", - "appliesto": "boxElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-lines" - }, - "box-ordinal-group": { - "syntax": "<integer>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions", - "WebKit Extensions" - ], - "initial": "1", - "appliesto": "childrenOfBoxElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-ordinal-group" - }, - "box-orient": { - "syntax": "horizontal | vertical | inline-axis | block-axis | inherit", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions", - "WebKit Extensions" - ], - "initial": "inlineAxisHorizontalInXUL", - "appliesto": "elementsWithDisplayBoxOrInlineBox", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-orient" - }, - "box-pack": { - "syntax": "start | center | end | justify", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions", - "WebKit Extensions" - ], - "initial": "start", - "appliesto": "elementsWithDisplayMozBoxMozInlineBox", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-pack" - }, - "box-shadow": { - "syntax": "none | <shadow>#", - "media": "visual", - "inherited": false, - "animationType": "shadowList", - "percentages": "no", - "groups": [ - "CSS Backgrounds and Borders" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "absoluteLengthsSpecifiedColorAsSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-shadow" - }, - "box-sizing": { - "syntax": "content-box | border-box", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Model" - ], - "initial": "content-box", - "appliesto": "allElementsAcceptingWidthOrHeight", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/box-sizing" - }, - "break-after": { - "syntax": "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fragmentation" - ], - "initial": "auto", - "appliesto": "blockLevelElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/break-after" - }, - "break-before": { - "syntax": "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fragmentation" - ], - "initial": "auto", - "appliesto": "blockLevelElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/break-before" - }, - "break-inside": { - "syntax": "auto | avoid | avoid-page | avoid-column | avoid-region", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fragmentation" - ], - "initial": "auto", - "appliesto": "blockLevelElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/break-inside" - }, - "caption-side": { - "syntax": "top | bottom | block-start | block-end | inline-start | inline-end", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Table" - ], - "initial": "top", - "appliesto": "tableCaptionElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/caption-side" - }, - "caret-color": { - "syntax": "auto | <color>", - "media": "interactive", - "inherited": true, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asAutoOrColor", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/caret-color" - }, - "clear": { - "syntax": "none | left | right | both | inline-start | inline-end", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Positioning" - ], - "initial": "none", - "appliesto": "blockLevelElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/clear" - }, - "clip": { - "syntax": "<shape> | auto", - "media": "visual", - "inherited": false, - "animationType": "rectangle", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "auto", - "appliesto": "absolutelyPositionedElements", - "computed": "autoOrRectangle", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/clip" - }, - "clip-path": { - "syntax": "<clip-source> | [ <basic-shape> || <geometry-box> ] | none", - "media": "visual", - "inherited": false, - "animationType": "basicShapeOtherwiseNo", - "percentages": "referToReferenceBoxWhenSpecifiedOtherwiseBorderBox", - "groups": [ - "CSS Masking" - ], - "initial": "none", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecifiedURLsAbsolute", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/clip-path" - }, - "color": { - "syntax": "<color>", - "media": "visual", - "inherited": true, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Color" - ], - "initial": "canvastext", - "appliesto": "allElementsAndText", - "computed": "computedColor", - "order": "perGrammar", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color" - }, - "print-color-adjust": { - "syntax": "economy | exact", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Color" - ], - "initial": "economy", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/print-color-adjust" - }, - "color-scheme": { - "syntax": "normal | [ light | dark | <custom-ident> ]+ && only?", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Color" - ], - "initial": "normal", - "appliesto": "allElementsAndText", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color-scheme" - }, - "column-count": { - "syntax": "<integer> | auto", - "media": "visual", - "inherited": false, - "animationType": "integer", - "percentages": "no", - "groups": [ - "CSS Columns" - ], - "initial": "auto", - "appliesto": "blockContainersExceptTableWrappers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-count" - }, - "column-fill": { - "syntax": "auto | balance | balance-all", - "media": "visualInContinuousMediaNoEffectInOverflowColumns", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Columns" - ], - "initial": "balance", - "appliesto": "multicolElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-fill" - }, - "column-gap": { - "syntax": "normal | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Box Alignment" - ], - "initial": "normal", - "appliesto": "multiColumnElementsFlexContainersGridContainers", - "computed": "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-gap" - }, - "column-rule": { - "syntax": "<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>", - "media": "visual", - "inherited": false, - "animationType": [ - "column-rule-color", - "column-rule-style", - "column-rule-width" - ], - "percentages": "no", - "groups": [ - "CSS Columns" - ], - "initial": [ - "column-rule-width", - "column-rule-style", - "column-rule-color" - ], - "appliesto": "multicolElements", - "computed": [ - "column-rule-color", - "column-rule-style", - "column-rule-width" - ], - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-rule" - }, - "column-rule-color": { - "syntax": "<color>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Columns" - ], - "initial": "currentcolor", - "appliesto": "multicolElements", - "computed": "computedColor", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-rule-color" - }, - "column-rule-style": { - "syntax": "<'border-style'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Columns" - ], - "initial": "none", - "appliesto": "multicolElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-rule-style" - }, - "column-rule-width": { - "syntax": "<'border-width'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Columns" - ], - "initial": "medium", - "appliesto": "multicolElements", - "computed": "absoluteLength0IfColumnRuleStyleNoneOrHidden", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-rule-width" - }, - "column-span": { - "syntax": "none | all", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Columns" - ], - "initial": "none", - "appliesto": "inFlowBlockLevelElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-span" - }, - "column-width": { - "syntax": "<length> | auto", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Columns" - ], - "initial": "auto", - "appliesto": "blockContainersExceptTableWrappers", - "computed": "absoluteLengthZeroOrLarger", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-width" - }, - "columns": { - "syntax": "<'column-width'> || <'column-count'>", - "media": "visual", - "inherited": false, - "animationType": [ - "column-width", - "column-count" - ], - "percentages": "no", - "groups": [ - "CSS Columns" - ], - "initial": [ - "column-width", - "column-count" - ], - "appliesto": "blockContainersExceptTableWrappers", - "computed": [ - "column-width", - "column-count" - ], - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/columns" - }, - "contain": { - "syntax": "none | strict | content | [ size || layout || style || paint ]", - "media": "all", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Containment" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/contain" - }, - "content": { - "syntax": "normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> ]+ ]?", - "media": "all", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Generated Content" - ], - "initial": "normal", - "appliesto": "allElementsTreeAbidingPseudoElementsPageMarginBoxes", - "computed": "normalOnElementsForPseudosNoneAbsoluteURIStringOrAsSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/content" - }, - "content-visibility": { - "syntax": "visible | auto | hidden", - "media": "all", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Containment" - ], - "initial": "visible", - "appliesto": "elementsForWhichLayoutContainmentCanApply", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/content-visibility" - }, - "counter-increment": { - "syntax": "[ <counter-name> <integer>? ]+ | none", - "media": "all", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Counter Styles" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/counter-increment" - }, - "counter-reset": { - "syntax": "[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none", - "media": "all", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Counter Styles" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/counter-reset" - }, - "counter-set": { - "syntax": "[ <counter-name> <integer>? ]+ | none", - "media": "all", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Counter Styles" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/counter-set" - }, - "cursor": { - "syntax": "[ [ <url> [ <x> <y> ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing ] ]", - "media": [ - "visual", - "interactive" - ], - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecifiedURLsAbsolute", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/cursor" - }, - "direction": { - "syntax": "ltr | rtl", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Writing Modes" - ], - "initial": "ltr", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/direction" - }, - "display": { - "syntax": "[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>", - "media": "all", - "inherited": false, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Display" - ], - "initial": "inline", - "appliesto": "allElements", - "computed": "asSpecifiedExceptPositionedFloatingAndRootElementsKeywordMaybeDifferent", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/display" - }, - "empty-cells": { - "syntax": "show | hide", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Table" - ], - "initial": "show", - "appliesto": "tableCellElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/empty-cells" - }, - "filter": { - "syntax": "none | <filter-function-list>", - "media": "visual", - "inherited": false, - "animationType": "filterList", - "percentages": "no", - "groups": [ - "Filter Effects" - ], - "initial": "none", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter" - }, - "flex": { - "syntax": "none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]", - "media": "visual", - "inherited": false, - "animationType": [ - "flex-grow", - "flex-shrink", - "flex-basis" - ], - "percentages": "no", - "groups": [ - "CSS Flexible Box Layout" - ], - "initial": [ - "flex-grow", - "flex-shrink", - "flex-basis" - ], - "appliesto": "flexItemsAndInFlowPseudos", - "computed": [ - "flex-grow", - "flex-shrink", - "flex-basis" - ], - "order": "orderOfAppearance", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/flex" - }, - "flex-basis": { - "syntax": "content | <'width'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToFlexContainersInnerMainSize", - "groups": [ - "CSS Flexible Box Layout" - ], - "initial": "auto", - "appliesto": "flexItemsAndInFlowPseudos", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "lengthOrPercentageBeforeKeywordIfBothPresent", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/flex-basis" - }, - "flex-direction": { - "syntax": "row | row-reverse | column | column-reverse", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Flexible Box Layout" - ], - "initial": "row", - "appliesto": "flexContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/flex-direction" - }, - "flex-flow": { - "syntax": "<'flex-direction'> || <'flex-wrap'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Flexible Box Layout" - ], - "initial": [ - "flex-direction", - "flex-wrap" - ], - "appliesto": "flexContainers", - "computed": [ - "flex-direction", - "flex-wrap" - ], - "order": "orderOfAppearance", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/flex-flow" - }, - "flex-grow": { - "syntax": "<number>", - "media": "visual", - "inherited": false, - "animationType": "number", - "percentages": "no", - "groups": [ - "CSS Flexible Box Layout" - ], - "initial": "0", - "appliesto": "flexItemsAndInFlowPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/flex-grow" - }, - "flex-shrink": { - "syntax": "<number>", - "media": "visual", - "inherited": false, - "animationType": "number", - "percentages": "no", - "groups": [ - "CSS Flexible Box Layout" - ], - "initial": "1", - "appliesto": "flexItemsAndInFlowPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/flex-shrink" - }, - "flex-wrap": { - "syntax": "nowrap | wrap | wrap-reverse", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Flexible Box Layout" - ], - "initial": "nowrap", - "appliesto": "flexContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/flex-wrap" - }, - "float": { - "syntax": "left | right | none | inline-start | inline-end", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Positioning" - ], - "initial": "none", - "appliesto": "allElementsNoEffectIfDisplayNone", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/float" - }, - "font": { - "syntax": "[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar", - "media": "visual", - "inherited": true, - "animationType": [ - "font-style", - "font-variant", - "font-weight", - "font-stretch", - "font-size", - "line-height", - "font-family" - ], - "percentages": [ - "font-size", - "line-height" - ], - "groups": [ - "CSS Fonts" - ], - "initial": [ - "font-style", - "font-variant", - "font-weight", - "font-stretch", - "font-size", - "line-height", - "font-family" - ], - "appliesto": "allElements", - "computed": [ - "font-style", - "font-variant", - "font-weight", - "font-stretch", - "font-size", - "line-height", - "font-family" - ], - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font" - }, - "font-family": { - "syntax": "[ <family-name> | <generic-family> ]#", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "dependsOnUserAgent", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-family" - }, - "font-feature-settings": { - "syntax": "normal | <feature-tag-value>#", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-feature-settings" - }, - "font-kerning": { - "syntax": "auto | normal | none", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-kerning" - }, - "font-language-override": { - "syntax": "normal | <string>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-language-override" - }, - "font-optical-sizing": { - "syntax": "auto | none", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing" - }, - "font-variation-settings": { - "syntax": "normal | [ <string> <number> ]#", - "media": "visual", - "inherited": true, - "animationType": "transform", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-variation-settings" - }, - "font-size": { - "syntax": "<absolute-size> | <relative-size> | <length-percentage>", - "media": "visual", - "inherited": true, - "animationType": "length", - "percentages": "referToParentElementsFontSize", - "groups": [ - "CSS Fonts" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-size" - }, - "font-size-adjust": { - "syntax": "none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]", - "media": "visual", - "inherited": true, - "animationType": "number", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-size-adjust" - }, - "font-smooth": { - "syntax": "auto | never | always | <absolute-size> | <length>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-smooth" - }, - "font-stretch": { - "syntax": "<font-stretch-absolute>", - "media": "visual", - "inherited": true, - "animationType": "fontStretch", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-stretch" - }, - "font-style": { - "syntax": "normal | italic | oblique <angle>?", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-style" - }, - "font-synthesis": { - "syntax": "none | [ weight || style || small-caps ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "weight style", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-synthesis" - }, - "font-variant": { - "syntax": "normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-variant" - }, - "font-variant-alternates": { - "syntax": "normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates" - }, - "font-variant-caps": { - "syntax": "normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-caps" - }, - "font-variant-east-asian": { - "syntax": "normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian" - }, - "font-variant-ligatures": { - "syntax": "normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures" - }, - "font-variant-numeric": { - "syntax": "normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric" - }, - "font-variant-position": { - "syntax": "normal | sub | super", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-position" - }, - "font-weight": { - "syntax": "<font-weight-absolute> | bolder | lighter", - "media": "visual", - "inherited": true, - "animationType": "fontWeight", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "keywordOrNumericalValueBolderLighterTransformedToRealValue", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-weight" - }, - "forced-color-adjust": { - "syntax": "auto | none", - "media": "visual", - "inherited": true, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Color" - ], - "initial": "auto", - "appliesto": "allElementsAndText", - "computed": "asSpecified", - "order": "perGrammar", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/forced-color-adjust" - }, - "gap": { - "syntax": "<'row-gap'> <'column-gap'>?", - "media": "visual", - "inherited": false, - "animationType": [ - "row-gap", - "column-gap" - ], - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": [ - "row-gap", - "column-gap" - ], - "appliesto": "multiColumnElementsFlexContainersGridContainers", - "computed": [ - "row-gap", - "column-gap" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/gap" - }, - "grid": { - "syntax": "<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": [ - "grid-template-rows", - "grid-template-columns", - "grid-auto-rows", - "grid-auto-columns" - ], - "groups": [ - "CSS Grid Layout" - ], - "initial": [ - "grid-template-rows", - "grid-template-columns", - "grid-template-areas", - "grid-auto-rows", - "grid-auto-columns", - "grid-auto-flow", - "grid-column-gap", - "grid-row-gap", - "column-gap", - "row-gap" - ], - "appliesto": "gridContainers", - "computed": [ - "grid-template-rows", - "grid-template-columns", - "grid-template-areas", - "grid-auto-rows", - "grid-auto-columns", - "grid-auto-flow", - "grid-column-gap", - "grid-row-gap", - "column-gap", - "row-gap" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid" - }, - "grid-area": { - "syntax": "<grid-line> [ / <grid-line> ]{0,3}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": [ - "grid-row-start", - "grid-column-start", - "grid-row-end", - "grid-column-end" - ], - "appliesto": "gridItemsAndBoxesWithinGridContainer", - "computed": [ - "grid-row-start", - "grid-column-start", - "grid-row-end", - "grid-column-end" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-area" - }, - "grid-auto-columns": { - "syntax": "<track-size>+", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Grid Layout" - ], - "initial": "auto", - "appliesto": "gridContainers", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns" - }, - "grid-auto-flow": { - "syntax": "[ row | column ] || dense", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": "row", - "appliesto": "gridContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow" - }, - "grid-auto-rows": { - "syntax": "<track-size>+", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Grid Layout" - ], - "initial": "auto", - "appliesto": "gridContainers", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows" - }, - "grid-column": { - "syntax": "<grid-line> [ / <grid-line> ]?", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": [ - "grid-column-start", - "grid-column-end" - ], - "appliesto": "gridItemsAndBoxesWithinGridContainer", - "computed": [ - "grid-column-start", - "grid-column-end" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-column" - }, - "grid-column-end": { - "syntax": "<grid-line>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": "auto", - "appliesto": "gridItemsAndBoxesWithinGridContainer", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-column-end" - }, - "grid-column-gap": { - "syntax": "<length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Grid Layout" - ], - "initial": "0", - "appliesto": "gridContainers", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/column-gap" - }, - "grid-column-start": { - "syntax": "<grid-line>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": "auto", - "appliesto": "gridItemsAndBoxesWithinGridContainer", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-column-start" - }, - "grid-gap": { - "syntax": "<'grid-row-gap'> <'grid-column-gap'>?", - "media": "visual", - "inherited": false, - "animationType": [ - "grid-row-gap", - "grid-column-gap" - ], - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": [ - "grid-row-gap", - "grid-column-gap" - ], - "appliesto": "gridContainers", - "computed": [ - "grid-row-gap", - "grid-column-gap" - ], - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/gap" - }, - "grid-row": { - "syntax": "<grid-line> [ / <grid-line> ]?", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": [ - "grid-row-start", - "grid-row-end" - ], - "appliesto": "gridItemsAndBoxesWithinGridContainer", - "computed": [ - "grid-row-start", - "grid-row-end" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-row" - }, - "grid-row-end": { - "syntax": "<grid-line>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": "auto", - "appliesto": "gridItemsAndBoxesWithinGridContainer", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-row-end" - }, - "grid-row-gap": { - "syntax": "<length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Grid Layout" - ], - "initial": "0", - "appliesto": "gridContainers", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/row-gap" - }, - "grid-row-start": { - "syntax": "<grid-line>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": "auto", - "appliesto": "gridItemsAndBoxesWithinGridContainer", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-row-start" - }, - "grid-template": { - "syntax": "none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": [ - "grid-template-columns", - "grid-template-rows" - ], - "groups": [ - "CSS Grid Layout" - ], - "initial": [ - "grid-template-columns", - "grid-template-rows", - "grid-template-areas" - ], - "appliesto": "gridContainers", - "computed": [ - "grid-template-columns", - "grid-template-rows", - "grid-template-areas" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-template" - }, - "grid-template-areas": { - "syntax": "none | <string>+", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": "none", - "appliesto": "gridContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-template-areas" - }, - "grid-template-columns": { - "syntax": "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?", - "media": "visual", - "inherited": false, - "animationType": "simpleListOfLpcDifferenceLpc", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Grid Layout" - ], - "initial": "none", - "appliesto": "gridContainers", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-template-columns" - }, - "grid-template-rows": { - "syntax": "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?", - "media": "visual", - "inherited": false, - "animationType": "simpleListOfLpcDifferenceLpc", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Grid Layout" - ], - "initial": "none", - "appliesto": "gridContainers", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/grid-template-rows" - }, - "hanging-punctuation": { - "syntax": "none | [ first || [ force-end | allow-end ] || last ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/hanging-punctuation" - }, - "height": { - "syntax": "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "regardingHeightOfGeneratedBoxContainingBlockPercentagesRelativeToContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "auto", - "appliesto": "allElementsButNonReplacedAndTableColumns", - "computed": "percentageAutoOrAbsoluteLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/height" - }, - "hyphenate-character": { - "syntax": "auto | <string>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/hyphenate-character" - }, - "hyphens": { - "syntax": "none | manual | auto", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "manual", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/hyphens" - }, - "image-orientation": { - "syntax": "from-image | <angle> | [ <angle>? flip ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Images" - ], - "initial": "from-image", - "appliesto": "allElements", - "computed": "angleRoundedToNextQuarter", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/image-orientation" - }, - "image-rendering": { - "syntax": "auto | crisp-edges | pixelated", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Images" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/image-rendering" - }, - "image-resolution": { - "syntax": "[ from-image || <resolution> ] && snap?", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Images" - ], - "initial": "1dppx", - "appliesto": "allElements", - "computed": "asSpecifiedWithExceptionOfResolution", - "order": "uniqueOrder", - "status": "experimental" - }, - "ime-mode": { - "syntax": "auto | normal | active | inactive | disabled", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "auto", - "appliesto": "textFields", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/ime-mode" - }, - "initial-letter": { - "syntax": "normal | [ <number> <integer>? ]", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Inline" - ], - "initial": "normal", - "appliesto": "firstLetterPseudoElementsAndInlineLevelFirstChildren", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/initial-letter" - }, - "initial-letter-align": { - "syntax": "[ auto | alphabetic | hanging | ideographic ]", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Inline" - ], - "initial": "auto", - "appliesto": "firstLetterPseudoElementsAndInlineLevelFirstChildren", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/initial-letter-align" - }, - "inline-size": { - "syntax": "<'width'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "inlineSizeOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "auto", - "appliesto": "sameAsWidthAndHeight", - "computed": "sameAsWidthAndHeight", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/inline-size" - }, - "input-security": { - "syntax": "auto | none", - "media": "interactive", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "auto", - "appliesto": "sensitiveTextInputs", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard" - }, - "inset": { - "syntax": "<'top'>{1,4}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "logicalHeightOrWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "sameAsBoxOffsets", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/inset" - }, - "inset-block": { - "syntax": "<'top'>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "logicalHeightOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "sameAsBoxOffsets", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/inset-block" - }, - "inset-block-end": { - "syntax": "<'top'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "logicalHeightOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "sameAsBoxOffsets", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/inset-block-end" - }, - "inset-block-start": { - "syntax": "<'top'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "logicalHeightOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "sameAsBoxOffsets", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/inset-block-start" - }, - "inset-inline": { - "syntax": "<'top'>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "sameAsBoxOffsets", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/inset-inline" - }, - "inset-inline-end": { - "syntax": "<'top'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "sameAsBoxOffsets", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/inset-inline-end" - }, - "inset-inline-start": { - "syntax": "<'top'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "sameAsBoxOffsets", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/inset-inline-start" - }, - "isolation": { - "syntax": "auto | isolate", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Compositing and Blending" - ], - "initial": "auto", - "appliesto": "allElementsSVGContainerGraphicsAndGraphicsReferencingElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/isolation" - }, - "justify-content": { - "syntax": "normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": "normal", - "appliesto": "flexContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/justify-content" - }, - "justify-items": { - "syntax": "normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": "legacy", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/justify-items" - }, - "justify-self": { - "syntax": "auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": "auto", - "appliesto": "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/justify-self" - }, - "justify-tracks": { - "syntax": "[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": "normal", - "appliesto": "gridContainersWithMasonryLayoutInTheirInlineAxis", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/justify-tracks" - }, - "left": { - "syntax": "<length> | <percentage> | auto", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Positioning" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/left" - }, - "letter-spacing": { - "syntax": "normal | <length>", - "media": "visual", - "inherited": true, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "optimumValueOfAbsoluteLengthOrNormal", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/letter-spacing" - }, - "line-break": { - "syntax": "auto | loose | normal | strict | anywhere", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/line-break" - }, - "line-clamp": { - "syntax": "none | <integer>", - "media": "visual", - "inherited": false, - "animationType": "integer", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "none", - "appliesto": "blockContainersExceptMultiColumnContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "experimental" - }, - "line-height": { - "syntax": "normal | <number> | <length> | <percentage>", - "media": "visual", - "inherited": true, - "animationType": "numberOrLength", - "percentages": "referToElementFontSize", - "groups": [ - "CSS Fonts" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "absoluteLengthOrAsSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/line-height" - }, - "line-height-step": { - "syntax": "<length>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fonts" - ], - "initial": "0", - "appliesto": "blockContainers", - "computed": "absoluteLength", - "order": "perGrammar", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/line-height-step" - }, - "list-style": { - "syntax": "<'list-style-type'> || <'list-style-position'> || <'list-style-image'>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Lists and Counters" - ], - "initial": [ - "list-style-type", - "list-style-position", - "list-style-image" - ], - "appliesto": "listItems", - "computed": [ - "list-style-image", - "list-style-position", - "list-style-type" - ], - "order": "orderOfAppearance", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/list-style" - }, - "list-style-image": { - "syntax": "<image> | none", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Lists and Counters" - ], - "initial": "none", - "appliesto": "listItems", - "computed": "theKeywordListStyleImageNoneOrComputedValue", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/list-style-image" - }, - "list-style-position": { - "syntax": "inside | outside", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Lists and Counters" - ], - "initial": "outside", - "appliesto": "listItems", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/list-style-position" - }, - "list-style-type": { - "syntax": "<counter-style> | <string> | none", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Lists and Counters" - ], - "initial": "disc", - "appliesto": "listItems", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/list-style-type" - }, - "margin": { - "syntax": "[ <length> | <percentage> | auto ]{1,4}", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": [ - "margin-bottom", - "margin-left", - "margin-right", - "margin-top" - ], - "appliesto": "allElementsExceptTableDisplayTypes", - "computed": [ - "margin-bottom", - "margin-left", - "margin-right", - "margin-top" - ], - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin" - }, - "margin-block": { - "syntax": "<'margin-left'>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "dependsOnLayoutModel", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "sameAsMargin", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-block" - }, - "margin-block-end": { - "syntax": "<'margin-left'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "dependsOnLayoutModel", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "sameAsMargin", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-block-end" - }, - "margin-block-start": { - "syntax": "<'margin-left'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "dependsOnLayoutModel", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "sameAsMargin", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-block-start" - }, - "margin-bottom": { - "syntax": "<length> | <percentage> | auto", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "0", - "appliesto": "allElementsExceptTableDisplayTypes", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-bottom" - }, - "margin-inline": { - "syntax": "<'margin-left'>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "dependsOnLayoutModel", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "sameAsMargin", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-inline" - }, - "margin-inline-end": { - "syntax": "<'margin-left'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "dependsOnLayoutModel", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "sameAsMargin", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-inline-end" - }, - "margin-inline-start": { - "syntax": "<'margin-left'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "dependsOnLayoutModel", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "sameAsMargin", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-inline-start" - }, - "margin-left": { - "syntax": "<length> | <percentage> | auto", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "0", - "appliesto": "allElementsExceptTableDisplayTypes", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-left" - }, - "margin-right": { - "syntax": "<length> | <percentage> | auto", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "0", - "appliesto": "allElementsExceptTableDisplayTypes", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-right" - }, - "margin-top": { - "syntax": "<length> | <percentage> | auto", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "0", - "appliesto": "allElementsExceptTableDisplayTypes", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-top" - }, - "margin-trim": { - "syntax": "none | in-flow | all", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Model" - ], - "initial": "none", - "appliesto": "blockContainersAndMultiColumnContainers", - "computed": "asSpecified", - "order": "perGrammar", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/margin-trim" - }, - "mask": { - "syntax": "<mask-layer>#", - "media": "visual", - "inherited": false, - "animationType": [ - "mask-image", - "mask-mode", - "mask-repeat", - "mask-position", - "mask-clip", - "mask-origin", - "mask-size", - "mask-composite" - ], - "percentages": [ - "mask-position" - ], - "groups": [ - "CSS Masking" - ], - "initial": [ - "mask-image", - "mask-mode", - "mask-repeat", - "mask-position", - "mask-clip", - "mask-origin", - "mask-size", - "mask-composite" - ], - "appliesto": "allElementsSVGContainerElements", - "computed": [ - "mask-image", - "mask-mode", - "mask-repeat", - "mask-position", - "mask-clip", - "mask-origin", - "mask-size", - "mask-composite" - ], - "order": "perGrammar", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask" - }, - "mask-border": { - "syntax": "<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>", - "media": "visual", - "inherited": false, - "animationType": [ - "mask-border-mode", - "mask-border-outset", - "mask-border-repeat", - "mask-border-slice", - "mask-border-source", - "mask-border-width" - ], - "percentages": [ - "mask-border-slice", - "mask-border-width" - ], - "groups": [ - "CSS Masking" - ], - "initial": [ - "mask-border-mode", - "mask-border-outset", - "mask-border-repeat", - "mask-border-slice", - "mask-border-source", - "mask-border-width" - ], - "appliesto": "allElementsSVGContainerElements", - "computed": [ - "mask-border-mode", - "mask-border-outset", - "mask-border-repeat", - "mask-border-slice", - "mask-border-source", - "mask-border-width" - ], - "order": "perGrammar", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-border" - }, - "mask-border-mode": { - "syntax": "luminance | alpha", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "alpha", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-mode" - }, - "mask-border-outset": { - "syntax": "[ <length> | <number> ]{1,4}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "0", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-outset" - }, - "mask-border-repeat": { - "syntax": "[ stretch | repeat | round | space ]{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "stretch", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat" - }, - "mask-border-slice": { - "syntax": "<number-percentage>{1,4} fill?", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "referToSizeOfMaskBorderImage", - "groups": [ - "CSS Masking" - ], - "initial": "0", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-slice" - }, - "mask-border-source": { - "syntax": "none | <image>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "none", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecifiedURLsAbsolute", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-source" - }, - "mask-border-width": { - "syntax": "[ <length-percentage> | <number> | auto ]{1,4}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "relativeToMaskBorderImageArea", - "groups": [ - "CSS Masking" - ], - "initial": "auto", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-width" - }, - "mask-clip": { - "syntax": "[ <geometry-box> | no-clip ]#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "border-box", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-clip" - }, - "mask-composite": { - "syntax": "<compositing-operator>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "add", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-composite" - }, - "mask-image": { - "syntax": "<mask-reference>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "none", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecifiedURLsAbsolute", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-image" - }, - "mask-mode": { - "syntax": "<masking-mode>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "match-source", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-mode" - }, - "mask-origin": { - "syntax": "<geometry-box>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "border-box", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-origin" - }, - "mask-position": { - "syntax": "<position>#", - "media": "visual", - "inherited": false, - "animationType": "repeatableListOfSimpleListOfLpc", - "percentages": "referToSizeOfMaskPaintingArea", - "groups": [ - "CSS Masking" - ], - "initial": "center", - "appliesto": "allElementsSVGContainerElements", - "computed": "consistsOfTwoKeywordsForOriginAndOffsets", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-position" - }, - "mask-repeat": { - "syntax": "<repeat-style>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "no-repeat", - "appliesto": "allElementsSVGContainerElements", - "computed": "consistsOfTwoDimensionKeywords", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-repeat" - }, - "mask-size": { - "syntax": "<bg-size>#", - "media": "visual", - "inherited": false, - "animationType": "repeatableListOfSimpleListOfLpc", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "auto", - "appliesto": "allElementsSVGContainerElements", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-size" - }, - "mask-type": { - "syntax": "luminance | alpha", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Masking" - ], - "initial": "luminance", - "appliesto": "maskElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mask-type" - }, - "masonry-auto-flow": { - "syntax": "[ pack | next ] || [ definite-first | ordered ]", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Grid Layout" - ], - "initial": "pack", - "appliesto": "gridContainersWithMasonryLayout", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow" - }, - "math-style": { - "syntax": "normal | compact", - "media": "visual", - "inherited": true, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "MathML" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/math-style" - }, - "max-block-size": { - "syntax": "<'max-width'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "blockSizeOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "none", - "appliesto": "sameAsWidthAndHeight", - "computed": "sameAsMaxWidthAndMaxHeight", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/max-block-size" - }, - "max-height": { - "syntax": "none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "regardingHeightOfGeneratedBoxContainingBlockPercentagesNone", - "groups": [ - "CSS Box Model" - ], - "initial": "none", - "appliesto": "allElementsButNonReplacedAndTableColumns", - "computed": "percentageAsSpecifiedAbsoluteLengthOrNone", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/max-height" - }, - "max-inline-size": { - "syntax": "<'max-width'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "inlineSizeOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "none", - "appliesto": "sameAsWidthAndHeight", - "computed": "sameAsMaxWidthAndMaxHeight", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/max-inline-size" - }, - "max-lines": { - "syntax": "none | <integer>", - "media": "visual", - "inherited": false, - "animationType": "integer", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "none", - "appliesto": "blockContainersExceptMultiColumnContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "experimental" - }, - "max-width": { - "syntax": "none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "none", - "appliesto": "allElementsButNonReplacedAndTableRows", - "computed": "percentageAsSpecifiedAbsoluteLengthOrNone", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/max-width" - }, - "min-block-size": { - "syntax": "<'min-width'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "blockSizeOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "sameAsWidthAndHeight", - "computed": "sameAsMinWidthAndMinHeight", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/min-block-size" - }, - "min-height": { - "syntax": "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "regardingHeightOfGeneratedBoxContainingBlockPercentages0", - "groups": [ - "CSS Box Model" - ], - "initial": "auto", - "appliesto": "allElementsButNonReplacedAndTableColumns", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/min-height" - }, - "min-inline-size": { - "syntax": "<'min-width'>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "inlineSizeOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "sameAsWidthAndHeight", - "computed": "sameAsMinWidthAndMinHeight", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/min-inline-size" - }, - "min-width": { - "syntax": "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "auto", - "appliesto": "allElementsButNonReplacedAndTableRows", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/min-width" - }, - "mix-blend-mode": { - "syntax": "<blend-mode> | plus-lighter", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Compositing and Blending" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode" - }, - "object-fit": { - "syntax": "fill | contain | cover | none | scale-down", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Images" - ], - "initial": "fill", - "appliesto": "replacedElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/object-fit" - }, - "object-position": { - "syntax": "<position>", - "media": "visual", - "inherited": true, - "animationType": "repeatableListOfSimpleListOfLpc", - "percentages": "referToWidthAndHeightOfElement", - "groups": [ - "CSS Images" - ], - "initial": "50% 50%", - "appliesto": "replacedElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/object-position" - }, - "offset": { - "syntax": "[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?", - "media": "visual", - "inherited": false, - "animationType": [ - "offset-position", - "offset-path", - "offset-distance", - "offset-anchor", - "offset-rotate" - ], - "percentages": [ - "offset-position", - "offset-distance", - "offset-anchor" - ], - "groups": [ - "CSS Motion Path" - ], - "initial": [ - "offset-position", - "offset-path", - "offset-distance", - "offset-anchor", - "offset-rotate" - ], - "appliesto": "transformableElements", - "computed": [ - "offset-position", - "offset-path", - "offset-distance", - "offset-anchor", - "offset-rotate" - ], - "order": "perGrammar", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/offset" - }, - "offset-anchor": { - "syntax": "auto | <position>", - "media": "visual", - "inherited": false, - "animationType": "position", - "percentages": "relativeToWidthAndHeight", - "groups": [ - "CSS Motion Path" - ], - "initial": "auto", - "appliesto": "transformableElements", - "computed": "forLengthAbsoluteValueOtherwisePercentage", - "order": "perGrammar", - "status": "standard" - }, - "offset-distance": { - "syntax": "<length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToTotalPathLength", - "groups": [ - "CSS Motion Path" - ], - "initial": "0", - "appliesto": "transformableElements", - "computed": "forLengthAbsoluteValueOtherwisePercentage", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/offset-distance" - }, - "offset-path": { - "syntax": "none | ray( [ <angle> && <size> && contain? ] ) | <path()> | <url> | [ <basic-shape> || <geometry-box> ]", - "media": "visual", - "inherited": false, - "animationType": "angleOrBasicShapeOrPath", - "percentages": "no", - "groups": [ - "CSS Motion Path" - ], - "initial": "none", - "appliesto": "transformableElements", - "computed": "asSpecified", - "order": "perGrammar", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/offset-path" - }, - "offset-position": { - "syntax": "auto | <position>", - "media": "visual", - "inherited": false, - "animationType": "position", - "percentages": "referToSizeOfContainingBlock", - "groups": [ - "CSS Motion Path" - ], - "initial": "auto", - "appliesto": "transformableElements", - "computed": "forLengthAbsoluteValueOtherwisePercentage", - "order": "perGrammar", - "status": "experimental" - }, - "offset-rotate": { - "syntax": "[ auto | reverse ] || <angle>", - "media": "visual", - "inherited": false, - "animationType": "angleOrBasicShapeOrPath", - "percentages": "no", - "groups": [ - "CSS Motion Path" - ], - "initial": "auto", - "appliesto": "transformableElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/offset-rotate" - }, - "opacity": { - "syntax": "<alpha-value>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "mapToRange0To1", - "groups": [ - "CSS Color" - ], - "initial": "1", - "appliesto": "allElements", - "computed": "specifiedValueNumberClipped0To1", - "order": "perGrammar", - "alsoAppliesTo": [ - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/opacity" - }, - "order": { - "syntax": "<integer>", - "media": "visual", - "inherited": false, - "animationType": "integer", - "percentages": "no", - "groups": [ - "CSS Flexible Box Layout" - ], - "initial": "0", - "appliesto": "flexItemsGridItemsAbsolutelyPositionedContainerChildren", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/order" - }, - "orphans": { - "syntax": "<integer>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fragmentation" - ], - "initial": "2", - "appliesto": "blockContainerElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/orphans" - }, - "outline": { - "syntax": "[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]", - "media": [ - "visual", - "interactive" - ], - "inherited": false, - "animationType": [ - "outline-color", - "outline-width", - "outline-style" - ], - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": [ - "outline-color", - "outline-style", - "outline-width" - ], - "appliesto": "allElements", - "computed": [ - "outline-color", - "outline-width", - "outline-style" - ], - "order": "orderOfAppearance", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/outline" - }, - "outline-color": { - "syntax": "<color> | invert", - "media": [ - "visual", - "interactive" - ], - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "invertOrCurrentColor", - "appliesto": "allElements", - "computed": "invertForTranslucentColorRGBAOtherwiseRGB", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/outline-color" - }, - "outline-offset": { - "syntax": "<length>", - "media": [ - "visual", - "interactive" - ], - "inherited": false, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/outline-offset" - }, - "outline-style": { - "syntax": "auto | <'border-style'>", - "media": [ - "visual", - "interactive" - ], - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/outline-style" - }, - "outline-width": { - "syntax": "<line-width>", - "media": [ - "visual", - "interactive" - ], - "inherited": false, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "medium", - "appliesto": "allElements", - "computed": "absoluteLength0ForNone", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/outline-width" - }, - "overflow": { - "syntax": "[ visible | hidden | clip | scroll | auto ]{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "visible", - "appliesto": "blockContainersFlexContainersGridContainers", - "computed": [ - "overflow-x", - "overflow-y" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overflow" - }, - "overflow-anchor": { - "syntax": "auto | none", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Scroll Anchoring" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard" - }, - "overflow-block": { - "syntax": "visible | hidden | clip | scroll | auto", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "auto", - "appliesto": "blockContainersFlexContainersGridContainers", - "computed": "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent", - "order": "perGrammar", - "status": "standard" - }, - "overflow-clip-box": { - "syntax": "padding-box | content-box", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Mozilla Extensions" - ], - "initial": "padding-box", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Mozilla/CSS/overflow-clip-box" - }, - "overflow-clip-margin": { - "syntax": "<visual-box> || <length [0,∞]>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "0px", - "appliesto": "allElements", - "computed": "theComputedLength", - "order": "perGrammar", - "status": "standard" - }, - "overflow-inline": { - "syntax": "visible | hidden | clip | scroll | auto", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "auto", - "appliesto": "blockContainersFlexContainersGridContainers", - "computed": "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent", - "order": "perGrammar", - "status": "standard" - }, - "overflow-wrap": { - "syntax": "normal | break-word | anywhere", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "normal", - "appliesto": "nonReplacedInlineElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overflow-wrap" - }, - "overflow-x": { - "syntax": "visible | hidden | clip | scroll | auto", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "visible", - "appliesto": "blockContainersFlexContainersGridContainers", - "computed": "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overflow-x" - }, - "overflow-y": { - "syntax": "visible | hidden | clip | scroll | auto", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "visible", - "appliesto": "blockContainersFlexContainersGridContainers", - "computed": "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overflow-y" - }, - "overscroll-behavior": { - "syntax": "[ contain | none | auto ]{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Model" - ], - "initial": "auto", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": [ - "overscroll-behavior-x", - "overscroll-behavior-y" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior" - }, - "overscroll-behavior-block": { - "syntax": "contain | none | auto", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Model" - ], - "initial": "auto", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block" - }, - "overscroll-behavior-inline": { - "syntax": "contain | none | auto", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Model" - ], - "initial": "auto", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline" - }, - "overscroll-behavior-x": { - "syntax": "contain | none | auto", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Model" - ], - "initial": "auto", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x" - }, - "overscroll-behavior-y": { - "syntax": "contain | none | auto", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Model" - ], - "initial": "auto", - "appliesto": "nonReplacedBlockAndInlineBlockElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y" - }, - "padding": { - "syntax": "[ <length> | <percentage> ]{1,4}", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": [ - "padding-bottom", - "padding-left", - "padding-right", - "padding-top" - ], - "appliesto": "allElementsExceptInternalTableDisplayTypes", - "computed": [ - "padding-bottom", - "padding-left", - "padding-right", - "padding-top" - ], - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding" - }, - "padding-block": { - "syntax": "<'padding-left'>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-block" - }, - "padding-block-end": { - "syntax": "<'padding-left'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-block-end" - }, - "padding-block-start": { - "syntax": "<'padding-left'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-block-start" - }, - "padding-bottom": { - "syntax": "<length> | <percentage>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "0", - "appliesto": "allElementsExceptInternalTableDisplayTypes", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-bottom" - }, - "padding-inline": { - "syntax": "<'padding-left'>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-inline" - }, - "padding-inline-end": { - "syntax": "<'padding-left'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-inline-end" - }, - "padding-inline-start": { - "syntax": "<'padding-left'>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "logicalWidthOfContainingBlock", - "groups": [ - "CSS Logical Properties" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-inline-start" - }, - "padding-left": { - "syntax": "<length> | <percentage>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "0", - "appliesto": "allElementsExceptInternalTableDisplayTypes", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-left" - }, - "padding-right": { - "syntax": "<length> | <percentage>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "0", - "appliesto": "allElementsExceptInternalTableDisplayTypes", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-right" - }, - "padding-top": { - "syntax": "<length> | <percentage>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "0", - "appliesto": "allElementsExceptInternalTableDisplayTypes", - "computed": "percentageAsSpecifiedOrAbsoluteLength", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/padding-top" - }, - "page-break-after": { - "syntax": "auto | always | avoid | left | right | recto | verso", - "media": [ - "visual", - "paged" - ], - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Pages" - ], - "initial": "auto", - "appliesto": "blockElementsInNormalFlow", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/page-break-after" - }, - "page-break-before": { - "syntax": "auto | always | avoid | left | right | recto | verso", - "media": [ - "visual", - "paged" - ], - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Pages" - ], - "initial": "auto", - "appliesto": "blockElementsInNormalFlow", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/page-break-before" - }, - "page-break-inside": { - "syntax": "auto | avoid", - "media": [ - "visual", - "paged" - ], - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Pages" - ], - "initial": "auto", - "appliesto": "blockElementsInNormalFlow", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/page-break-inside" - }, - "paint-order": { - "syntax": "normal | [ fill || stroke || markers ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "normal", - "appliesto": "textElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/paint-order" - }, - "perspective": { - "syntax": "none | <length>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Transforms" - ], - "initial": "none", - "appliesto": "transformableElements", - "computed": "absoluteLengthOrNone", - "order": "uniqueOrder", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/perspective" - }, - "perspective-origin": { - "syntax": "<position>", - "media": "visual", - "inherited": false, - "animationType": "simpleListOfLpc", - "percentages": "referToSizeOfBoundingBox", - "groups": [ - "CSS Transforms" - ], - "initial": "50% 50%", - "appliesto": "transformableElements", - "computed": "forLengthAbsoluteValueOtherwisePercentage", - "order": "oneOrTwoValuesLengthAbsoluteKeywordsPercentages", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/perspective-origin" - }, - "place-content": { - "syntax": "<'align-content'> <'justify-content'>?", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": "normal", - "appliesto": "multilineFlexContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/place-content" - }, - "place-items": { - "syntax": "<'align-items'> <'justify-items'>?", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": [ - "align-items", - "justify-items" - ], - "appliesto": "allElements", - "computed": [ - "align-items", - "justify-items" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/place-items" - }, - "place-self": { - "syntax": "<'align-self'> <'justify-self'>?", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Box Alignment" - ], - "initial": [ - "align-self", - "justify-self" - ], - "appliesto": "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems", - "computed": [ - "align-self", - "justify-self" - ], - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/place-self" - }, - "pointer-events": { - "syntax": "auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/pointer-events" - }, - "position": { - "syntax": "static | relative | absolute | sticky | fixed", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Positioning" - ], - "initial": "static", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/position" - }, - "quotes": { - "syntax": "none | auto | [ <string> <string> ]+", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Generated Content" - ], - "initial": "dependsOnUserAgent", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/quotes" - }, - "resize": { - "syntax": "none | both | horizontal | vertical | block | inline", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "none", - "appliesto": "elementsWithOverflowNotVisibleAndReplacedElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/resize" - }, - "right": { - "syntax": "<length> | <percentage> | auto", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Positioning" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/right" - }, - "rotate": { - "syntax": "none | <angle> | [ x | y | z | <number>{3} ] && <angle>", - "media": "visual", - "inherited": false, - "animationType": "transform", - "percentages": "no", - "groups": [ - "CSS Transforms" - ], - "initial": "none", - "appliesto": "transformableElements", - "computed": "asSpecified", - "order": "perGrammar", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/rotate" - }, - "row-gap": { - "syntax": "normal | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToDimensionOfContentArea", - "groups": [ - "CSS Box Alignment" - ], - "initial": "normal", - "appliesto": "multiColumnElementsFlexContainersGridContainers", - "computed": "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/row-gap" - }, - "ruby-align": { - "syntax": "start | center | space-between | space-around", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Ruby" - ], - "initial": "space-around", - "appliesto": "rubyBasesAnnotationsBaseAnnotationContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/ruby-align" - }, - "ruby-merge": { - "syntax": "separate | collapse | auto", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Ruby" - ], - "initial": "separate", - "appliesto": "rubyAnnotationsContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental" - }, - "ruby-position": { - "syntax": "[ alternate || [ over | under ] ] | inter-character", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Ruby" - ], - "initial": "alternate", - "appliesto": "rubyAnnotationsContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/ruby-position" - }, - "scale": { - "syntax": "none | <number>{1,3}", - "media": "visual", - "inherited": false, - "animationType": "transform", - "percentages": "no", - "groups": [ - "CSS Transforms" - ], - "initial": "none", - "appliesto": "transformableElements", - "computed": "asSpecified", - "order": "perGrammar", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scale" - }, - "scrollbar-color": { - "syntax": "auto | <color>{2}", - "media": "visual", - "inherited": true, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Scrollbars" - ], - "initial": "auto", - "appliesto": "scrollingBoxes", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-color" - }, - "scrollbar-gutter": { - "syntax": "auto | stable && both-edges?", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Overflow" - ], - "initial": "auto", - "appliesto": "scrollingBoxes", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-gutter" - }, - "scrollbar-width": { - "syntax": "auto | thin | none", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Scrollbars" - ], - "initial": "auto", - "appliesto": "scrollingBoxes", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-width" - }, - "scroll-behavior": { - "syntax": "auto | smooth", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSSOM View" - ], - "initial": "auto", - "appliesto": "scrollingBoxes", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-behavior" - }, - "scroll-margin": { - "syntax": "<length>{1,4}", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin" - }, - "scroll-margin-block": { - "syntax": "<length>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block" - }, - "scroll-margin-block-start": { - "syntax": "<length>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start" - }, - "scroll-margin-block-end": { - "syntax": "<length>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end" - }, - "scroll-margin-bottom": { - "syntax": "<length>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom" - }, - "scroll-margin-inline": { - "syntax": "<length>{1,2}", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline" - }, - "scroll-margin-inline-start": { - "syntax": "<length>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start" - }, - "scroll-margin-inline-end": { - "syntax": "<length>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end" - }, - "scroll-margin-left": { - "syntax": "<length>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left" - }, - "scroll-margin-right": { - "syntax": "<length>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right" - }, - "scroll-margin-top": { - "syntax": "<length>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top" - }, - "scroll-padding": { - "syntax": "[ auto | <length-percentage> ]{1,4}", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding" - }, - "scroll-padding-block": { - "syntax": "[ auto | <length-percentage> ]{1,2}", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block" - }, - "scroll-padding-block-start": { - "syntax": "auto | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start" - }, - "scroll-padding-block-end": { - "syntax": "auto | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end" - }, - "scroll-padding-bottom": { - "syntax": "auto | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom" - }, - "scroll-padding-inline": { - "syntax": "[ auto | <length-percentage> ]{1,2}", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline" - }, - "scroll-padding-inline-start": { - "syntax": "auto | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start" - }, - "scroll-padding-inline-end": { - "syntax": "auto | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end" - }, - "scroll-padding-left": { - "syntax": "auto | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left" - }, - "scroll-padding-right": { - "syntax": "auto | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right" - }, - "scroll-padding-top": { - "syntax": "auto | <length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "relativeToTheScrollContainersScrollport", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "auto", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top" - }, - "scroll-snap-align": { - "syntax": "[ none | start | end | center ]{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align" - }, - "scroll-snap-coordinate": { - "syntax": "none | <position>#", - "media": "interactive", - "inherited": false, - "animationType": "position", - "percentages": "referToBorderBox", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-coordinate" - }, - "scroll-snap-destination": { - "syntax": "<position>", - "media": "interactive", - "inherited": false, - "animationType": "position", - "percentages": "relativeToScrollContainerPaddingBoxAxis", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "0px 0px", - "appliesto": "scrollContainers", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-destination" - }, - "scroll-snap-points-x": { - "syntax": "none | repeat( <length-percentage> )", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "relativeToScrollContainerPaddingBoxAxis", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "none", - "appliesto": "scrollContainers", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-x" - }, - "scroll-snap-points-y": { - "syntax": "none | repeat( <length-percentage> )", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "relativeToScrollContainerPaddingBoxAxis", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "none", - "appliesto": "scrollContainers", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-y" - }, - "scroll-snap-stop": { - "syntax": "normal | always", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop" - }, - "scroll-snap-type": { - "syntax": "none | [ x | y | block | inline | both ] [ mandatory | proximity ]?", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type" - }, - "scroll-snap-type-x": { - "syntax": "none | mandatory | proximity", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "none", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-x" - }, - "scroll-snap-type-y": { - "syntax": "none | mandatory | proximity", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Scroll Snap" - ], - "initial": "none", - "appliesto": "scrollContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "obsolete", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-y" - }, - "shape-image-threshold": { - "syntax": "<alpha-value>", - "media": "visual", - "inherited": false, - "animationType": "number", - "percentages": "no", - "groups": [ - "CSS Shapes" - ], - "initial": "0.0", - "appliesto": "floats", - "computed": "specifiedValueNumberClipped0To1", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold" - }, - "shape-margin": { - "syntax": "<length-percentage>", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Shapes" - ], - "initial": "0", - "appliesto": "floats", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/shape-margin" - }, - "shape-outside": { - "syntax": "none | [ <shape-box> || <basic-shape> ] | <image>", - "media": "visual", - "inherited": false, - "animationType": "basicShapeOtherwiseNo", - "percentages": "no", - "groups": [ - "CSS Shapes" - ], - "initial": "none", - "appliesto": "floats", - "computed": "asDefinedForBasicShapeWithAbsoluteURIOtherwiseAsSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/shape-outside" - }, - "tab-size": { - "syntax": "<integer> | <length>", - "media": "visual", - "inherited": true, - "animationType": "length", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "8", - "appliesto": "blockContainers", - "computed": "specifiedIntegerOrAbsoluteLength", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/tab-size" - }, - "table-layout": { - "syntax": "auto | fixed", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Table" - ], - "initial": "auto", - "appliesto": "tableElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/table-layout" - }, - "text-align": { - "syntax": "start | end | left | right | center | justify | match-parent", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "startOrNamelessValueIfLTRRightIfRTL", - "appliesto": "blockContainers", - "computed": "asSpecifiedExceptMatchParent", - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-align" - }, - "text-align-last": { - "syntax": "auto | start | end | left | right | center | justify", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "auto", - "appliesto": "blockContainers", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-align-last" - }, - "text-combine-upright": { - "syntax": "none | all | [ digits <integer>? ]", - "media": "visual", - "inherited": true, - "animationType": "notAnimatable", - "percentages": "no", - "groups": [ - "CSS Writing Modes" - ], - "initial": "none", - "appliesto": "nonReplacedInlineElements", - "computed": "keywordPlusIntegerIfDigits", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-combine-upright" - }, - "text-decoration": { - "syntax": "<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>", - "media": "visual", - "inherited": false, - "animationType": [ - "text-decoration-color", - "text-decoration-style", - "text-decoration-line", - "text-decoration-thickness" - ], - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": [ - "text-decoration-color", - "text-decoration-style", - "text-decoration-line" - ], - "appliesto": "allElements", - "computed": [ - "text-decoration-line", - "text-decoration-style", - "text-decoration-color", - "text-decoration-thickness" - ], - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration" - }, - "text-decoration-color": { - "syntax": "<color>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-color" - }, - "text-decoration-line": { - "syntax": "none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-line" - }, - "text-decoration-skip": { - "syntax": "none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "objects", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip" - }, - "text-decoration-skip-ink": { - "syntax": "auto | all | none", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink" - }, - "text-decoration-style": { - "syntax": "solid | double | dotted | dashed | wavy", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "solid", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-style" - }, - "text-decoration-thickness": { - "syntax": "auto | from-font | <length> | <percentage> ", - "media": "visual", - "inherited": false, - "animationType": "byComputedValueType", - "percentages": "referToElementFontSize", - "groups": [ - "CSS Text Decoration" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness" - }, - "text-emphasis": { - "syntax": "<'text-emphasis-style'> || <'text-emphasis-color'>", - "media": "visual", - "inherited": false, - "animationType": [ - "text-emphasis-color", - "text-emphasis-style" - ], - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": [ - "text-emphasis-style", - "text-emphasis-color" - ], - "appliesto": "allElements", - "computed": [ - "text-emphasis-style", - "text-emphasis-color" - ], - "order": "orderOfAppearance", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-emphasis" - }, - "text-emphasis-color": { - "syntax": "<color>", - "media": "visual", - "inherited": false, - "animationType": "color", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "currentcolor", - "appliesto": "allElements", - "computed": "computedColor", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color" - }, - "text-emphasis-position": { - "syntax": "[ over | under ] && [ right | left ]", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "over right", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position" - }, - "text-emphasis-style": { - "syntax": "none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style" - }, - "text-indent": { - "syntax": "<length-percentage> && hanging? && each-line?", - "media": "visual", - "inherited": true, - "animationType": "lpc", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Text" - ], - "initial": "0", - "appliesto": "blockContainers", - "computed": "percentageOrAbsoluteLengthPlusKeywords", - "order": "lengthOrPercentageBeforeKeywords", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-indent" - }, - "text-justify": { - "syntax": "auto | inter-character | inter-word | none", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "auto", - "appliesto": "inlineLevelAndTableCellElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-justify" - }, - "text-orientation": { - "syntax": "mixed | upright | sideways", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Writing Modes" - ], - "initial": "mixed", - "appliesto": "allElementsExceptTableRowGroupsRowsColumnGroupsAndColumns", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-orientation" - }, - "text-overflow": { - "syntax": "[ clip | ellipsis | <string> ]{1,2}", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "clip", - "appliesto": "blockContainerElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-overflow" - }, - "text-rendering": { - "syntax": "auto | optimizeSpeed | optimizeLegibility | geometricPrecision", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Miscellaneous" - ], - "initial": "auto", - "appliesto": "textElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-rendering" - }, - "text-shadow": { - "syntax": "none | <shadow-t>#", - "media": "visual", - "inherited": true, - "animationType": "shadowList", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "colorPlusThreeAbsoluteLengths", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-shadow" - }, - "text-size-adjust": { - "syntax": "none | auto | <percentage>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "referToSizeOfFont", - "groups": [ - "CSS Text" - ], - "initial": "autoForSmartphoneBrowsersSupportingInflation", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-size-adjust" - }, - "text-transform": { - "syntax": "none | capitalize | uppercase | lowercase | full-width | full-size-kana", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "none", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-transform" - }, - "text-underline-offset": { - "syntax": "auto | <length> | <percentage> ", - "media": "visual", - "inherited": true, - "animationType": "byComputedValueType", - "percentages": "referToElementFontSize", - "groups": [ - "CSS Text Decoration" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-underline-offset" - }, - "text-underline-position": { - "syntax": "auto | from-font | [ under || [ left | right ] ]", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text Decoration" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "orderOfAppearance", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/text-underline-position" - }, - "top": { - "syntax": "<length> | <percentage> | auto", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToContainingBlockHeight", - "groups": [ - "CSS Positioning" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/top" - }, - "touch-action": { - "syntax": "auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "Pointer Events" - ], - "initial": "auto", - "appliesto": "allElementsExceptNonReplacedInlineElementsTableRowsColumnsRowColumnGroups", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/touch-action" - }, - "transform": { - "syntax": "none | <transform-list>", - "media": "visual", - "inherited": false, - "animationType": "transform", - "percentages": "referToSizeOfBoundingBox", - "groups": [ - "CSS Transforms" - ], - "initial": "none", - "appliesto": "transformableElements", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "uniqueOrder", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transform" - }, - "transform-box": { - "syntax": "content-box | border-box | fill-box | stroke-box | view-box", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Transforms" - ], - "initial": "view-box", - "appliesto": "transformableElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transform-box" - }, - "transform-origin": { - "syntax": "[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?", - "media": "visual", - "inherited": false, - "animationType": "simpleListOfLpc", - "percentages": "referToSizeOfBoundingBox", - "groups": [ - "CSS Transforms" - ], - "initial": "50% 50% 0", - "appliesto": "transformableElements", - "computed": "forLengthAbsoluteValueOtherwisePercentage", - "order": "oneOrTwoValuesLengthAbsoluteKeywordsPercentages", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transform-origin" - }, - "transform-style": { - "syntax": "flat | preserve-3d", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Transforms" - ], - "initial": "flat", - "appliesto": "transformableElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transform-style" - }, - "transition": { - "syntax": "<single-transition>#", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Transitions" - ], - "initial": [ - "transition-delay", - "transition-duration", - "transition-property", - "transition-timing-function" - ], - "appliesto": "allElementsAndPseudos", - "computed": [ - "transition-delay", - "transition-duration", - "transition-property", - "transition-timing-function" - ], - "order": "orderOfAppearance", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transition" - }, - "transition-delay": { - "syntax": "<time>#", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Transitions" - ], - "initial": "0s", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transition-delay" - }, - "transition-duration": { - "syntax": "<time>#", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Transitions" - ], - "initial": "0s", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transition-duration" - }, - "transition-property": { - "syntax": "none | <single-transition-property>#", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Transitions" - ], - "initial": "all", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transition-property" - }, - "transition-timing-function": { - "syntax": "<easing-function>#", - "media": "interactive", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Transitions" - ], - "initial": "ease", - "appliesto": "allElementsAndPseudos", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transition-timing-function" - }, - "translate": { - "syntax": "none | <length-percentage> [ <length-percentage> <length>? ]?", - "media": "visual", - "inherited": false, - "animationType": "transform", - "percentages": "referToSizeOfBoundingBox", - "groups": [ - "CSS Transforms" - ], - "initial": "none", - "appliesto": "transformableElements", - "computed": "asSpecifiedRelativeToAbsoluteLengths", - "order": "perGrammar", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/translate" - }, - "unicode-bidi": { - "syntax": "normal | embed | isolate | bidi-override | isolate-override | plaintext", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Writing Modes" - ], - "initial": "normal", - "appliesto": "allElementsSomeValuesNoEffectOnNonInlineElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/unicode-bidi" - }, - "user-select": { - "syntax": "auto | text | none | contain | all", - "media": "visual", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Basic User Interface" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/user-select" - }, - "vertical-align": { - "syntax": "baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>", - "media": "visual", - "inherited": false, - "animationType": "length", - "percentages": "referToLineHeight", - "groups": [ - "CSS Table" - ], - "initial": "baseline", - "appliesto": "inlineLevelAndTableCellElements", - "computed": "absoluteLengthOrKeyword", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/vertical-align" - }, - "visibility": { - "syntax": "visible | hidden | collapse", - "media": "visual", - "inherited": true, - "animationType": "visibility", - "percentages": "no", - "groups": [ - "CSS Box Model" - ], - "initial": "visible", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/visibility" - }, - "white-space": { - "syntax": "normal | pre | nowrap | pre-wrap | pre-line | break-spaces", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/white-space" - }, - "widows": { - "syntax": "<integer>", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Fragmentation" - ], - "initial": "2", - "appliesto": "blockContainerElements", - "computed": "asSpecified", - "order": "perGrammar", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/widows" - }, - "width": { - "syntax": "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)", - "media": "visual", - "inherited": false, - "animationType": "lpc", - "percentages": "referToWidthOfContainingBlock", - "groups": [ - "CSS Box Model" - ], - "initial": "auto", - "appliesto": "allElementsButNonReplacedAndTableRows", - "computed": "percentageAutoOrAbsoluteLength", - "order": "lengthOrPercentageBeforeKeywordIfBothPresent", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/width" - }, - "will-change": { - "syntax": "auto | <animateable-feature>#", - "media": "all", - "inherited": false, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Will Change" - ], - "initial": "auto", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/will-change" - }, - "word-break": { - "syntax": "normal | break-all | keep-all | break-word", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/word-break" - }, - "word-spacing": { - "syntax": "normal | <length>", - "media": "visual", - "inherited": true, - "animationType": "length", - "percentages": "referToWidthOfAffectedGlyph", - "groups": [ - "CSS Text" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "optimumMinAndMaxValueOfAbsoluteLengthPercentageOrNormal", - "order": "uniqueOrder", - "alsoAppliesTo": [ - "::first-letter", - "::first-line", - "::placeholder" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/word-spacing" - }, - "word-wrap": { - "syntax": "normal | break-word", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Text" - ], - "initial": "normal", - "appliesto": "nonReplacedInlineElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/overflow-wrap" - }, - "writing-mode": { - "syntax": "horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr", - "media": "visual", - "inherited": true, - "animationType": "discrete", - "percentages": "no", - "groups": [ - "CSS Writing Modes" - ], - "initial": "horizontal-tb", - "appliesto": "allElementsExceptTableRowColumnGroupsTableRowsColumns", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/writing-mode" - }, - "z-index": { - "syntax": "auto | <integer>", - "media": "visual", - "inherited": false, - "animationType": "integer", - "percentages": "no", - "groups": [ - "CSS Positioning" - ], - "initial": "auto", - "appliesto": "positionedElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "stacking": true, - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/z-index" - }, - "zoom": { - "syntax": "normal | reset | <number> | <percentage>", - "media": "visual", - "inherited": false, - "animationType": "integer", - "percentages": "no", - "groups": [ - "Microsoft Extensions" - ], - "initial": "normal", - "appliesto": "allElements", - "computed": "asSpecified", - "order": "uniqueOrder", - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/zoom" - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/properties.schema.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/properties.schema.json deleted file mode 100644 index 8bbae47e..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/properties.schema.json +++ /dev/null @@ -1,411 +0,0 @@ -{ - "definitions": { - "propertyList": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "string", - "property-reference": { - "comment": "property-reference is an extension to the JSON schema validator. Here it jumps to the root level of the hierarchy and tests if a value is an existing key there (i.e a defined property). See test/validate-schema.js for implementation details.", - "$data": "/" - } - } - }, - "animationType": { - "enum": [ - "angleBasicShapeOrPath", - "angleOrBasicShapeOrPath", - "basicShapeOtherwiseNo", - "byComputedValueType", - "color", - "discrete", - "eachOfShorthandPropertiesExceptUnicodeBiDiAndDirection", - "filterList", - "fontStretch", - "fontWeight", - "integer", - "length", - "lpc", - "notAnimatable", - "numberOrLength", - "number", - "position", - "rectangle", - "repeatableListOfSimpleListOfLpc", - "shadowList", - "simpleListOfLpc", - "simpleListOfLpcDifferenceLpc", - "transform", - "visibility" - ] - }, - "percentages": { - "enum": [ - "blockSizeOfContainingBlock", - "dependsOnLayoutModel", - "inlineSizeOfContainingBlock", - "lengthsAsPercentages", - "logicalHeightOfContainingBlock", - "logicalWidthOfContainingBlock", - "logicalHeightOrWidthOfContainingBlock", - "mapToRange0To1", - "maxZoomFactor", - "minZoomFactor", - "no", - "referToBorderBox", - "referToContainingBlockHeight", - "referToDimensionOfBorderBox", - "referToDimensionOfContentArea", - "referToElementFontSize", - "referToFlexContainersInnerMainSize", - "referToHeightOfBackgroundPositioningAreaMinusBackgroundImageHeight", - "referToLineBoxWidth", - "referToLineHeight", - "referToParentElementsFontSize", - "referToSizeOfBackgroundPositioningAreaMinusBackgroundImageSize", - "referToSizeOfBorderImage", - "referToSizeOfBoundingBox", - "referToSizeOfContainingBlock", - "referToSizeOfElement", - "referToSizeOfFont", - "referToSizeOfMaskBorderImage", - "referToSizeOfMaskPaintingArea", - "referToTotalPathLength", - "referToWidthAndHeightOfElement", - "referToWidthOfAffectedGlyph", - "referToWidthOfBackgroundPositioningAreaMinusBackgroundImageHeight", - "referToWidthOfContainingBlock", - "referToWidthOrHeightOfBorderImageArea", - "referToReferenceBoxWhenSpecifiedOtherwiseBorderBox", - "regardingHeightOfGeneratedBoxContainingBlockPercentages0", - "regardingHeightOfGeneratedBoxContainingBlockPercentagesNone", - "regardingHeightOfGeneratedBoxContainingBlockPercentagesRelativeToContainingBlock", - "relativeToBackgroundPositioningArea", - "relativeToMaskBorderImageArea", - "relativeToScrollContainerPaddingBoxAxis", - "relativeToTheScrollContainersScrollport", - "relativeToWidthAndHeight" - ] - }, - "computed": { - "enum": [ - "absoluteLength", - "absoluteLength0ForNone", - "absoluteLength0IfColumnRuleStyleNoneOrHidden", - "absoluteLengthOr0IfBorderBottomStyleNoneOrHidden", - "absoluteLengthOr0IfBorderLeftStyleNoneOrHidden", - "absoluteLengthOr0IfBorderRightStyleNoneOrHidden", - "absoluteLengthOr0IfBorderTopStyleNoneOrHidden", - "absoluteLengthOrAsSpecified", - "absoluteLengthOrKeyword", - "absoluteLengthOrNone", - "absoluteLengthOrNormal", - "absoluteLengthOrPercentage", - "absoluteLengthsSpecifiedColorAsSpecified", - "absoluteLengthZeroIfBorderStyleNoneOrHidden", - "absoluteLengthZeroOrLarger", - "absoluteURIOrNone", - "angleRoundedToNextQuarter", - "asAutoOrColor", - "asDefinedForBasicShapeWithAbsoluteURIOtherwiseAsSpecified", - "asLength", - "asSpecified", - "asSpecifiedAppliesToEachProperty", - "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent", - "asSpecifiedExceptMatchParent", - "asSpecifiedExceptPositionedFloatingAndRootElementsKeywordMaybeDifferent", - "asSpecifiedRelativeToAbsoluteLengths", - "asSpecifiedURLsAbsolute", - "asSpecifiedWithExceptionOfResolution", - "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn", - "asSpecifiedWithVarsSubstituted", - "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent", - "autoOrRectangle", - "colorPlusThreeAbsoluteLengths", - "computedColor", - "consistsOfTwoDimensionKeywords", - "consistsOfTwoKeywordsForOriginAndOffsets", - "forLengthAbsoluteValueOtherwisePercentage", - "invertForTranslucentColorRGBAOtherwiseRGB", - "keywordOrNumericalValueBolderLighterTransformedToRealValue", - "keywordPlusIntegerIfDigits", - "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto", - "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin", - "listEachItemHasTwoKeywordsOnePerDimension", - "listEachItemIdentifyerOrNoneAuto", - "listEachItemTwoKeywordsOriginOffsets", - "noneOrImageWithAbsoluteURI", - "normalizedAngle", - "normalOnElementsForPseudosNoneAbsoluteURIStringOrAsSpecified", - "oneToFourPercentagesOrAbsoluteLengthsPlusFill", - "optimumMinAndMaxValueOfAbsoluteLengthPercentageOrNormal", - "optimumValueOfAbsoluteLengthOrNormal", - "percentageAsSpecifiedAbsoluteLengthOrNone", - "percentageAsSpecifiedOrAbsoluteLength", - "percentageAutoOrAbsoluteLength", - "percentageOrAbsoluteLengthPlusKeywords", - "sameAsBoxOffsets", - "sameAsMaxWidthAndMaxHeight", - "sameAsMinWidthAndMinHeight", - "sameAsWidthAndHeight", - "specifiedIntegerOrAbsoluteLength", - "specifiedValueClipped0To1", - "specifiedValueNumberClipped0To1", - "theComputedLength", - "theKeywordListStyleImageNoneOrComputedValue", - "translucentValuesRGBAOtherwiseRGB", - "twoAbsoluteLengthOrPercentages", - "twoAbsoluteLengths" - ] - }, - "appliesto": { - "enum": [ - "absolutelyPositionedElements", - "allElements", - "allElementsAcceptingWidthOrHeight", - "allElementsAndPseudos", - "allElementsAndText", - "allElementsButNonReplacedAndTableColumns", - "allElementsButNonReplacedAndTableRows", - "allElementsCreatingNativeWindows", - "allElementsExceptGeneratedContentOrPseudoElements", - "allElementsExceptInlineBoxesAndInternalRubyOrTableBoxes", - "allElementsExceptInternalTableDisplayTypes", - "allElementsExceptNonReplacedInlineElementsTableRowsColumnsRowColumnGroups", - "allElementsExceptTableDisplayTypes", - "allElementsExceptTableElementsWhenCollapse", - "allElementsExceptTableRowColumnGroupsTableRowsColumns", - "allElementsExceptTableRowGroupsRowsColumnGroupsAndColumns", - "allElementsNoEffectIfDisplayNone", - "allElementsSomeValuesNoEffectOnNonInlineElements", - "allElementsSVGContainerElements", - "allElementsSVGContainerGraphicsAndGraphicsReferencingElements", - "allElementsThatCanReferenceImages", - "allElementsTreeAbidingPseudoElementsPageMarginBoxes", - "allElementsUAsNotRequiredWhenCollapse", - "anyElementEffectOnProgressAndMeter", - "beforeAndAfterPseudos", - "blockContainerElements", - "blockContainers", - "blockContainersAndMultiColumnContainers", - "blockContainersExceptMultiColumnContainers", - "blockContainersExceptTableWrappers", - "blockContainersFlexContainersGridContainers", - "blockElementsInNormalFlow", - "blockLevelElements", - "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems", - "boxElements", - "childrenOfBoxElements", - "directChildrenOfElementsWithDisplayMozBoxMozInlineBox", - "elementsForWhichLayoutContainmentCanApply", - "elementsWithDisplayBoxOrInlineBox", - "elementsWithDisplayMarker", - "elementsWithDisplayMozBoxMozInlineBox", - "elementsWithOverflowNotVisibleAndReplacedElements", - "exclusionElements", - "firstLetterPseudoElementsAndInlineLevelFirstChildren", - "flexContainers", - "flexItemsAndAbsolutelyPositionedFlexContainerChildren", - "flexItemsAndInFlowPseudos", - "flexItemsGridItemsAbsolutelyPositionedContainerChildren", - "flexItemsGridItemsAndAbsolutelyPositionedBoxes", - "floats", - "gridContainers", - "gridContainersWithMasonryLayout", - "gridContainersWithMasonryLayoutInTheirBlockAxis", - "gridContainersWithMasonryLayoutInTheirInlineAxis", - "gridItemsAndBoxesWithinGridContainer", - "iframeElements", - "images", - "inFlowBlockLevelElements", - "inFlowChildrenOfBoxElements", - "inlineLevelAndTableCellElements", - "listItems", - "maskElements", - "multicolElements", - "multiColumnElementsFlexContainersGridContainers", - "multilineFlexContainers", - "nonReplacedBlockAndInlineBlockElements", - "nonReplacedBlockElements", - "nonReplacedElements", - "nonReplacedInlineElements", - "positionedElements", - "replacedElements", - "rubyAnnotationsContainers", - "rubyBasesAnnotationsBaseAnnotationContainers", - "sameAsMargin", - "sameAsWidthAndHeight", - "scrollContainers", - "scrollingBoxes", - "sensitiveTextInputs", - "tableCaptionElements", - "tableCellElements", - "tableElements", - "textElements", - "textFields", - "transformableElements", - "xulImageElements" - ] - }, - "alsoApplyTo": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "enum": [ - "::first-letter", - "::first-line", - "::placeholder" - ] - } - }, - "order": { - "enum": [ - "canonicalOrder", - "lengthOrPercentageBeforeKeywordIfBothPresent", - "lengthOrPercentageBeforeKeywords", - "oneOrTwoValuesLengthAbsoluteKeywordsPercentages", - "orderOfAppearance", - "percentagesOrLengthsFollowedByFill", - "perGrammar", - "uniqueOrder" - ] - }, - "status": { - "enum": [ - "standard", - "nonstandard", - "experimental", - "obsolete" - ] - }, - "mdn_url": { - "type": "string", - "pattern": "^https://developer.mozilla.org/docs/" - } - }, - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "required": [ - "syntax", - "media", - "inherited", - "animationType", - "percentages", - "groups", - "initial", - "appliesto", - "computed", - "order", - "status" - ], - "properties": { - "syntax": { - "type": "string" - }, - "media": { - "oneOf": [ - { - "type": "string", - "enum": [ - "all", - "aural", - "continuous", - "interactive", - "none", - "noPracticalMedia", - "paged", - "visual", - "visualInContinuousMediaNoEffectInOverflowColumns" - ] - }, - { - "type": "array", - "minItems": 2, - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ - "interactive", - "paged", - "visual" - ] - } - } - ] - }, - "inherited": { - "type": "boolean" - }, - "animationType": { - "oneOf": [ - { - "$ref": "#/definitions/animationType" - }, - { - "$ref": "#/definitions/propertyList" - } - ] - }, - "percentages": { - "oneOf": [ - { - "$ref": "#/definitions/percentages" - }, - { - "$ref": "#/definitions/propertyList" - } - ] - }, - "groups": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "$ref": "definitions.json#/groupList" - } - }, - "initial": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/propertyList" - } - ] - }, - "appliesto": { - "$ref": "#/definitions/appliesto" - }, - "alsoAppliesTo": { - "$ref": "#/definitions/alsoApplyTo" - }, - "computed": { - "oneOf": [ - { - "$ref": "#/definitions/computed" - }, - { - "$ref": "#/definitions/propertyList" - } - ] - }, - "order": { - "$ref": "#/definitions/order" - }, - "stacking": { - "type": "boolean" - }, - "status": { - "$ref": "#/definitions/status" - }, - "mdn_url": { - "$ref": "#/definitions/mdn_url" - } - } - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/readme.md b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/readme.md deleted file mode 100644 index d57b427b..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/readme.md +++ /dev/null @@ -1,32 +0,0 @@ -# MDN CSS data - -This folder contains data about the different features of the [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS) language. - -## Different types of CSS data - -The CSS data is split into these parts: - -* **at-rules**: -[data](https://github.com/mdn/data/blob/master/css/at-rules.json) | -[schema](https://github.com/mdn/data/blob/master/css/at-rules.schema.json) | -[docs](https://github.com/mdn/data/blob/master/css/at-rules.md) -* **properties**: -[data](https://github.com/mdn/data/blob/master/css/properties.json) | -[schema](https://github.com/mdn/data/blob/master/css/properties.schema.json) | -[docs](https://github.com/mdn/data/blob/master/css/properties.md) -* **selectors**: -[data](https://github.com/mdn/data/blob/master/css/selectors.json) | -[schema](https://github.com/mdn/data/blob/master/css/selectors.schema.json) | -[docs](https://github.com/mdn/data/blob/master/css/selectors.md) -* **syntaxes**: -[data](https://github.com/mdn/data/blob/master/css/syntaxes.json) | -[schema](https://github.com/mdn/data/blob/master/css/syntaxes.schema.json) | -[docs](https://github.com/mdn/data/blob/master/css/syntaxes.md) -* **types**: -[data](https://github.com/mdn/data/blob/master/css/types.json) | -[schema](https://github.com/mdn/data/blob/master/css/types.schema.json) | -[docs](https://github.com/mdn/data/blob/master/css/types.md) -* **units**: -[data](https://github.com/mdn/data/blob/master/css/units.json) | -[schema](https://github.com/mdn/data/blob/master/css/units.schema.json) | -[docs](https://github.com/mdn/data/blob/master/css/units.md) diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/selectors.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/selectors.json deleted file mode 100644 index e4486fe2..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/selectors.json +++ /dev/null @@ -1,1044 +0,0 @@ -{ - "Type selectors": { - "syntax": "element", - "groups": [ - "Basic Selectors", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Type_selectors" - }, - "Class selectors": { - "syntax": ".class", - "groups": [ - "Basic Selectors", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Class_selectors" - }, - "ID selectors": { - "syntax": "#id", - "groups": [ - "Basic Selectors", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/ID_selectors" - }, - "Universal selectors": { - "syntax": "*", - "groups": [ - "Basic Selectors", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Universal_selectors" - }, - "Attribute selectors": { - "syntax": "[attr=value]", - "groups": [ - "Basic Selectors", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Attribute_selectors" - }, - "Selector list": { - "syntax": ",", - "groups": [ - "Grouping Selectors", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Selector_list" - }, - "Adjacent sibling combinator": { - "syntax": "A + B", - "groups": [ - "Combinators", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Adjacent_sibling_combinator" - }, - "General sibling combinator": { - "syntax": "A ~ B", - "groups": [ - "Combinators", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/General_sibling_combinator" - }, - "Child combinator": { - "syntax": "A > B", - "groups": [ - "Combinators", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Child_combinator" - }, - "Descendant combinator": { - "syntax": "A B", - "groups": [ - "Combinators", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Descendant_combinator" - }, - "Column combinator": { - "syntax": "A || B", - "groups": [ - "Combinators", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Column_combinator" - }, - "Pseudo-classes": { - "syntax": ":", - "groups": [ - "Pseudo", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Pseudo-classes" - }, - "Pseudo-elements": { - "syntax": "::", - "groups": [ - "Pseudo", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/Pseudo-elements" - }, - ":active": { - "syntax": ":active", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:active" - }, - ":any-link": { - "syntax": ":any-link", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:any-link" - }, - ":checked": { - "syntax": ":checked", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:checked" - }, - ":current": { - "syntax": ":current", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:current" - }, - ":blank": { - "syntax": ":blank", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:blank" - }, - ":default": { - "syntax": ":default", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:default" - }, - ":defined": { - "syntax": ":defined", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:defined" - }, - ":dir": { - "syntax": ":dir( [ ltr | rtl ] )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:dir" - }, - ":disabled": { - "syntax": ":disabled", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:disabled" - }, - ":empty": { - "syntax": ":empty", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:empty" - }, - ":enabled": { - "syntax": ":enabled", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:enabled" - }, - ":first": { - "syntax": ":first", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:first" - }, - ":first-child": { - "syntax": ":first-child", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:first-child" - }, - ":first-of-type": { - "syntax": ":first-of-type", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:first-of-type" - }, - ":fullscreen": { - "syntax": ":fullscreen", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:fullscreen" - }, - ":future": { - "syntax": ":future", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:future" - }, - ":focus": { - "syntax": ":focus", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:focus" - }, - ":focus-visible": { - "syntax": ":focus-visible", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:focus-visible" - }, - ":focus-within": { - "syntax": ":focus-within", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:focus-within" - }, - ":has": { - "syntax": ":has( <forgiving-relative-selector-list> )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:has" - }, - ":host()": { - "syntax": ":host( <compound-selector> )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:host()" - }, - ":host-context()": { - "syntax": ":host-context( <compound-selector> )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:host-context()" - }, - ":hover": { - "syntax": ":hover", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:hover" - }, - ":indeterminate": { - "syntax": ":indeterminate", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:indeterminate" - }, - ":in-range": { - "syntax": ":in-range", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:in-range" - }, - ":invalid": { - "syntax": ":invalid", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:invalid" - }, - ":is": { - "syntax": ":is( <forgiving-selector-list> )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:is" - }, - ":lang": { - "syntax": ":lang( <language-code> )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:lang" - }, - ":last-child": { - "syntax": ":last-child", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:last-child" - }, - ":last-of-type": { - "syntax": ":last-of-type", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:last-of-type" - }, - ":left": { - "syntax": ":left", - "groups": [ - "Pseudo-classes", - "Selectors", - "CSS Pages" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:left" - }, - ":link": { - "syntax": ":link", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:link" - }, - ":local-link": { - "syntax": ":local-link", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:local-link" - }, - ":not": { - "syntax": ":not( <complex-selector-list> )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:not" - }, - ":nth-child": { - "syntax": ":nth-child( <nth> [ of <complex-selector-list> ]? )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:nth-child" - }, - ":nth-col": { - "syntax": ":nth-col", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:nth-col" - }, - ":nth-last-child": { - "syntax": ":nth-last-child( <nth> [ of <complex-selector-list> ]? )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:nth-last-child" - }, - ":nth-last-col": { - "syntax": ":nth-last-col", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:nth-last-col" - }, - ":nth-last-of-type": { - "syntax": ":nth-last-of-type( <nth> )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:nth-last-of-type" - }, - ":nth-of-type": { - "syntax": ":nth-of-type( <nth> )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:nth-of-type" - }, - ":only-child": { - "syntax": ":only-child", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:only-child" - }, - ":only-of-type": { - "syntax": ":only-of-type", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:only-of-type" - }, - ":optional": { - "syntax": ":optional", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:optional" - }, - ":out-of-range": { - "syntax": ":out-of-range", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:out-of-range" - }, - ":past": { - "syntax": ":past", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:past" - }, - ":paused": { - "syntax": ":paused", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:paused" - }, - ":placeholder-shown": { - "syntax": ":placeholder-shown", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:placeholder-shown" - }, - ":playing": { - "syntax": ":playing", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:playing" - }, - ":read-only": { - "syntax": ":read-only", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:read-only" - }, - ":read-write": { - "syntax": ":read-write", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:read-write" - }, - ":required": { - "syntax": ":required", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:required" - }, - ":right": { - "syntax": ":right", - "groups": [ - "Pseudo-classes", - "Selectors", - "CSS Pages" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:right" - }, - ":root": { - "syntax": ":root", - "groups": [ - "Pseudo-classes", - "Selectors", - "CSS Pages" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:root" - }, - ":scope": { - "syntax": ":scope", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:scope" - }, - ":target": { - "syntax": ":target", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:target" - }, - "::target-text": { - "syntax": "::target-text", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::target-text" - }, - ":target-within": { - "syntax": ":target-within", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:target-within" - }, - ":user-invalid": { - "syntax": ":user-invalid", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:user-invalid" - }, - ":user-valid": { - "syntax": ":user-valid", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:user-valid" - }, - ":valid": { - "syntax": ":valid", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:valid" - }, - ":visited": { - "syntax": ":visited", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:visited" - }, - ":where": { - "syntax": ":where( <complex-selector-list> )", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:where" - }, - "::-moz-progress-bar": { - "syntax": "::-moz-progress-bar", - "groups": [ - "Pseudo-elements", - "Selectors", - "Mozilla Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-moz-progress-bar" - }, - "::-moz-range-progress": { - "syntax": "::-moz-range-progress", - "groups": [ - "Pseudo-elements", - "Selectors", - "Mozilla Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-moz-range-progress" - }, - "::-moz-range-thumb": { - "syntax": "::-moz-range-thumb", - "groups": [ - "Pseudo-elements", - "Selectors", - "Mozilla Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-moz-range-thumb" - }, - "::-moz-range-track": { - "syntax": "::-moz-range-track", - "groups": [ - "Pseudo-elements", - "Selectors", - "Mozilla Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-moz-range-track" - }, - "::-ms-browse": { - "syntax": "::-ms-browse", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-browse" - }, - "::-ms-check": { - "syntax": "::-ms-check", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-check" - }, - "::-ms-clear": { - "syntax": "::-ms-clear", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-clear" - }, - "::-ms-expand": { - "syntax": "::-ms-expand", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-expand" - }, - "::-ms-fill": { - "syntax": "::-ms-fill", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-fill" - }, - "::-ms-fill-lower": { - "syntax": "::-ms-fill-lower", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-fill-lower" - }, - "::-ms-fill-upper": { - "syntax": "::-ms-fill-upper", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-fill-upper" - }, - "::-ms-reveal": { - "syntax": "::-ms-reveal", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-reveal" - }, - "::-ms-thumb": { - "syntax": "::-ms-thumb", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-thumb" - }, - "::-ms-ticks-after": { - "syntax": "::-ms-ticks-after", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-ticks-after" - }, - "::-ms-ticks-before": { - "syntax": "::-ms-ticks-before", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-ticks-before" - }, - "::-ms-tooltip": { - "syntax": "::-ms-tooltip", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-tooltip" - }, - "::-ms-track": { - "syntax": "::-ms-track", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-track" - }, - "::-ms-value": { - "syntax": "::-ms-value", - "groups": [ - "Pseudo-elements", - "Selectors", - "Microsoft Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-ms-value" - }, - "::-webkit-progress-bar": { - "syntax": "::-webkit-progress-bar", - "groups": [ - "Pseudo-elements", - "Selectors", - "WebKit Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-bar" - }, - "::-webkit-progress-inner-value": { - "syntax": "::-webkit-progress-inner-value", - "groups": [ - "Pseudo-elements", - "Selectors", - "WebKit Extensions" - ], - "status": "nonstandard" - }, - "::-webkit-progress-value": { - "syntax": "::-webkit-progress-value", - "groups": [ - "Pseudo-elements", - "Selectors", - "WebKit Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-value" - }, - "::-webkit-slider-runnable-track": { - "syntax": "::-webkit-slider-runnable-track", - "groups": [ - "Pseudo-elements", - "Selectors", - "WebKit Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-slider-runnable-track" - }, - "::-webkit-slider-thumb": { - "syntax": "::-webkit-slider-thumb", - "groups": [ - "Pseudo-elements", - "Selectors", - "WebKit Extensions" - ], - "status": "nonstandard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-slider-thumb" - }, - "::after": { - "syntax": "/* CSS3 syntax */\n::after\n\n/* CSS2 syntax */\n:after", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::after" - }, - "::backdrop": { - "syntax": "::backdrop", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::backdrop" - }, - "::before": { - "syntax": "/* CSS3 syntax */\n::before\n\n/* CSS2 syntax */\n:before", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::before" - }, - "::cue": { - "syntax": "::cue | ::cue( <selector> )", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::cue" - }, - "::cue-region": { - "syntax": "::cue-region | ::cue-region( <selector> )", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::cue-region" - }, - "::first-letter": { - "syntax": "/* CSS3 syntax */\n::first-letter\n\n/* CSS2 syntax */\n:first-letter", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::first-letter" - }, - "::first-line": { - "syntax": "/* CSS3 syntax */\n::first-line\n\n/* CSS2 syntax */\n:first-line", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::first-line" - }, - "::grammar-error": { - "syntax": "::grammar-error", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::grammar-error" - }, - "::marker": { - "syntax": "::marker", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::marker" - }, - "::part": { - "syntax": "::part( <ident>+ )", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::part" - }, - ":picture-in-picture": { - "syntax": ":picture-in-picture", - "groups": [ - "Pseudo-classes", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/:picture-in-picture" - }, - "::placeholder": { - "syntax": "::placeholder", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::placeholder" - }, - "::selection": { - "syntax": "::selection", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::selection" - }, - "::slotted": { - "syntax": "::slotted( <compound-selector> )", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::slotted" - }, - "::spelling-error": { - "syntax": "::spelling-error", - "groups": [ - "Pseudo-elements", - "Selectors" - ], - "status": "experimental", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/::spelling-error" - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/selectors.schema.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/selectors.schema.json deleted file mode 100644 index 67978ce2..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/selectors.schema.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "syntax": { - "type": "string" - }, - "groups": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "$ref": "definitions.json#/groupList" - } - }, - "status": { - "enum": [ - "standard", - "nonstandard", - "experimental" - ] - }, - "mdn_url": { - "type": "string", - "pattern": "^https://developer.mozilla.org/docs/Web/CSS/" - } - }, - "required": [ - "syntax", - "groups", - "status" - ] - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/syntaxes.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/syntaxes.json deleted file mode 100644 index 88fa658e..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/syntaxes.json +++ /dev/null @@ -1,794 +0,0 @@ -{ - "absolute-size": { - "syntax": "xx-small | x-small | small | medium | large | x-large | xx-large | xxx-large" - }, - "alpha-value": { - "syntax": "<number> | <percentage>" - }, - "angle-percentage": { - "syntax": "<angle> | <percentage>" - }, - "angular-color-hint": { - "syntax": "<angle-percentage>" - }, - "angular-color-stop": { - "syntax": "<color> && <color-stop-angle>?" - }, - "angular-color-stop-list": { - "syntax": "[ <angular-color-stop> [, <angular-color-hint>]? ]# , <angular-color-stop>" - }, - "animateable-feature": { - "syntax": "scroll-position | contents | <custom-ident>" - }, - "attachment": { - "syntax": "scroll | fixed | local" - }, - "attr()": { - "syntax": "attr( <attr-name> <type-or-unit>? [, <attr-fallback> ]? )" - }, - "attr-matcher": { - "syntax": "[ '~' | '|' | '^' | '$' | '*' ]? '='" - }, - "attr-modifier": { - "syntax": "i | s" - }, - "attribute-selector": { - "syntax": "'[' <wq-name> ']' | '[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']'" - }, - "auto-repeat": { - "syntax": "repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )" - }, - "auto-track-list": { - "syntax": "[ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>? <auto-repeat>\n[ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?" - }, - "baseline-position": { - "syntax": "[ first | last ]? baseline" - }, - "basic-shape": { - "syntax": "<inset()> | <circle()> | <ellipse()> | <polygon()> | <path()>" - }, - "bg-image": { - "syntax": "none | <image>" - }, - "bg-layer": { - "syntax": "<bg-image> || <bg-position> [ / <bg-size> ]? || <repeat-style> || <attachment> || <box> || <box>" - }, - "bg-position": { - "syntax": "[ [ left | center | right | top | bottom | <length-percentage> ] | [ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ] | [ center | [ left | right ] <length-percentage>? ] && [ center | [ top | bottom ] <length-percentage>? ] ]" - }, - "bg-size": { - "syntax": "[ <length-percentage> | auto ]{1,2} | cover | contain" - }, - "blur()": { - "syntax": "blur( <length> )" - }, - "blend-mode": { - "syntax": "normal | multiply | screen | overlay | darken | lighten | color-dodge | color-burn | hard-light | soft-light | difference | exclusion | hue | saturation | color | luminosity" - }, - "box": { - "syntax": "border-box | padding-box | content-box" - }, - "brightness()": { - "syntax": "brightness( <number-percentage> )" - }, - "calc()": { - "syntax": "calc( <calc-sum> )" - }, - "calc-sum": { - "syntax": "<calc-product> [ [ '+' | '-' ] <calc-product> ]*" - }, - "calc-product": { - "syntax": "<calc-value> [ '*' <calc-value> | '/' <number> ]*" - }, - "calc-value": { - "syntax": "<number> | <dimension> | <percentage> | ( <calc-sum> )" - }, - "cf-final-image": { - "syntax": "<image> | <color>" - }, - "cf-mixing-image": { - "syntax": "<percentage>? && <image>" - }, - "circle()": { - "syntax": "circle( [ <shape-radius> ]? [ at <position> ]? )" - }, - "clamp()": { - "syntax": "clamp( <calc-sum>#{3} )" - }, - "class-selector": { - "syntax": "'.' <ident-token>" - }, - "clip-source": { - "syntax": "<url>" - }, - "color": { - "syntax": "<rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <hex-color> | <named-color> | currentcolor | <deprecated-system-color>" - }, - "color-stop": { - "syntax": "<color-stop-length> | <color-stop-angle>" - }, - "color-stop-angle": { - "syntax": "<angle-percentage>{1,2}" - }, - "color-stop-length": { - "syntax": "<length-percentage>{1,2}" - }, - "color-stop-list": { - "syntax": "[ <linear-color-stop> [, <linear-color-hint>]? ]# , <linear-color-stop>" - }, - "combinator": { - "syntax": "'>' | '+' | '~' | [ '||' ]" - }, - "common-lig-values": { - "syntax": "[ common-ligatures | no-common-ligatures ]" - }, - "compat-auto": { - "syntax": "searchfield | textarea | push-button | slider-horizontal | checkbox | radio | square-button | menulist | listbox | meter | progress-bar | button" - }, - "composite-style": { - "syntax": "clear | copy | source-over | source-in | source-out | source-atop | destination-over | destination-in | destination-out | destination-atop | xor" - }, - "compositing-operator": { - "syntax": "add | subtract | intersect | exclude" - }, - "compound-selector": { - "syntax": "[ <type-selector>? <subclass-selector>* [ <pseudo-element-selector> <pseudo-class-selector>* ]* ]!" - }, - "compound-selector-list": { - "syntax": "<compound-selector>#" - }, - "complex-selector": { - "syntax": "<compound-selector> [ <combinator>? <compound-selector> ]*" - }, - "complex-selector-list": { - "syntax": "<complex-selector>#" - }, - "conic-gradient()": { - "syntax": "conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )" - }, - "contextual-alt-values": { - "syntax": "[ contextual | no-contextual ]" - }, - "content-distribution": { - "syntax": "space-between | space-around | space-evenly | stretch" - }, - "content-list": { - "syntax": "[ <string> | contents | <image> | <counter> | <quote> | <target> | <leader()> ]+" - }, - "content-position": { - "syntax": "center | start | end | flex-start | flex-end" - }, - "content-replacement": { - "syntax": "<image>" - }, - "contrast()": { - "syntax": "contrast( [ <number-percentage> ] )" - }, - "counter": { - "syntax": "<counter()> | <counters()>" - }, - "counter()": { - "syntax": "counter( <counter-name>, <counter-style>? )" - }, - "counter-name": { - "syntax": "<custom-ident>" - }, - "counter-style": { - "syntax": "<counter-style-name> | symbols()" - }, - "counter-style-name": { - "syntax": "<custom-ident>" - }, - "counters()": { - "syntax": "counters( <counter-name>, <string>, <counter-style>? )" - }, - "cross-fade()": { - "syntax": "cross-fade( <cf-mixing-image> , <cf-final-image>? )" - }, - "cubic-bezier-timing-function": { - "syntax": "ease | ease-in | ease-out | ease-in-out | cubic-bezier(<number [0,1]>, <number>, <number [0,1]>, <number>)" - }, - "deprecated-system-color": { - "syntax": "ActiveBorder | ActiveCaption | AppWorkspace | Background | ButtonFace | ButtonHighlight | ButtonShadow | ButtonText | CaptionText | GrayText | Highlight | HighlightText | InactiveBorder | InactiveCaption | InactiveCaptionText | InfoBackground | InfoText | Menu | MenuText | Scrollbar | ThreeDDarkShadow | ThreeDFace | ThreeDHighlight | ThreeDLightShadow | ThreeDShadow | Window | WindowFrame | WindowText" - }, - "discretionary-lig-values": { - "syntax": "[ discretionary-ligatures | no-discretionary-ligatures ]" - }, - "display-box": { - "syntax": "contents | none" - }, - "display-inside": { - "syntax": "flow | flow-root | table | flex | grid | ruby" - }, - "display-internal": { - "syntax": "table-row-group | table-header-group | table-footer-group | table-row | table-cell | table-column-group | table-column | table-caption | ruby-base | ruby-text | ruby-base-container | ruby-text-container" - }, - "display-legacy": { - "syntax": "inline-block | inline-list-item | inline-table | inline-flex | inline-grid" - }, - "display-listitem": { - "syntax": "<display-outside>? && [ flow | flow-root ]? && list-item" - }, - "display-outside": { - "syntax": "block | inline | run-in" - }, - "drop-shadow()": { - "syntax": "drop-shadow( <length>{2,3} <color>? )" - }, - "east-asian-variant-values": { - "syntax": "[ jis78 | jis83 | jis90 | jis04 | simplified | traditional ]" - }, - "east-asian-width-values": { - "syntax": "[ full-width | proportional-width ]" - }, - "element()": { - "syntax": "element( <id-selector> )" - }, - "ellipse()": { - "syntax": "ellipse( [ <shape-radius>{2} ]? [ at <position> ]? )" - }, - "ending-shape": { - "syntax": "circle | ellipse" - }, - "env()": { - "syntax": "env( <custom-ident> , <declaration-value>? )" - }, - "explicit-track-list": { - "syntax": "[ <line-names>? <track-size> ]+ <line-names>?" - }, - "family-name": { - "syntax": "<string> | <custom-ident>+" - }, - "feature-tag-value": { - "syntax": "<string> [ <integer> | on | off ]?" - }, - "feature-type": { - "syntax": "@stylistic | @historical-forms | @styleset | @character-variant | @swash | @ornaments | @annotation" - }, - "feature-value-block": { - "syntax": "<feature-type> '{' <feature-value-declaration-list> '}'" - }, - "feature-value-block-list": { - "syntax": "<feature-value-block>+" - }, - "feature-value-declaration": { - "syntax": "<custom-ident>: <integer>+;" - }, - "feature-value-declaration-list": { - "syntax": "<feature-value-declaration>" - }, - "feature-value-name": { - "syntax": "<custom-ident>" - }, - "fill-rule": { - "syntax": "nonzero | evenodd" - }, - "filter-function": { - "syntax": "<blur()> | <brightness()> | <contrast()> | <drop-shadow()> | <grayscale()> | <hue-rotate()> | <invert()> | <opacity()> | <saturate()> | <sepia()>" - }, - "filter-function-list": { - "syntax": "[ <filter-function> | <url> ]+" - }, - "final-bg-layer": { - "syntax": "<'background-color'> || <bg-image> || <bg-position> [ / <bg-size> ]? || <repeat-style> || <attachment> || <box> || <box>" - }, - "fit-content()": { - "syntax": "fit-content( [ <length> | <percentage> ] )" - }, - "fixed-breadth": { - "syntax": "<length-percentage>" - }, - "fixed-repeat": { - "syntax": "repeat( [ <integer [1,∞]> ] , [ <line-names>? <fixed-size> ]+ <line-names>? )" - }, - "fixed-size": { - "syntax": "<fixed-breadth> | minmax( <fixed-breadth> , <track-breadth> ) | minmax( <inflexible-breadth> , <fixed-breadth> )" - }, - "font-stretch-absolute": { - "syntax": "normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | <percentage>" - }, - "font-variant-css21": { - "syntax": "[ normal | small-caps ]" - }, - "font-weight-absolute": { - "syntax": "normal | bold | <number [1,1000]>" - }, - "frequency-percentage": { - "syntax": "<frequency> | <percentage>" - }, - "general-enclosed": { - "syntax": "[ <function-token> <any-value> ) ] | ( <ident> <any-value> )" - }, - "generic-family": { - "syntax": "serif | sans-serif | cursive | fantasy | monospace" - }, - "generic-name": { - "syntax": "serif | sans-serif | cursive | fantasy | monospace" - }, - "geometry-box": { - "syntax": "<shape-box> | fill-box | stroke-box | view-box" - }, - "gradient": { - "syntax": "<linear-gradient()> | <repeating-linear-gradient()> | <radial-gradient()> | <repeating-radial-gradient()> | <conic-gradient()> | <repeating-conic-gradient()>" - }, - "grayscale()": { - "syntax": "grayscale( <number-percentage> )" - }, - "grid-line": { - "syntax": "auto | <custom-ident> | [ <integer> && <custom-ident>? ] | [ span && [ <integer> || <custom-ident> ] ]" - }, - "historical-lig-values": { - "syntax": "[ historical-ligatures | no-historical-ligatures ]" - }, - "hsl()": { - "syntax": "hsl( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsl( <hue>, <percentage>, <percentage>, <alpha-value>? )" - }, - "hsla()": { - "syntax": "hsla( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsla( <hue>, <percentage>, <percentage>, <alpha-value>? )" - }, - "hue": { - "syntax": "<number> | <angle>" - }, - "hue-rotate()": { - "syntax": "hue-rotate( <angle> )" - }, - "hwb()": { - "syntax": "hwb( [<hue> | none] [<percentage> | none] [<percentage> | none] [ / [<alpha-value> | none] ]? )" - }, - "id-selector": { - "syntax": "<hash-token>" - }, - "image": { - "syntax": "<url> | <image()> | <image-set()> | <element()> | <paint()> | <cross-fade()> | <gradient>" - }, - "image()": { - "syntax": "image( <image-tags>? [ <image-src>? , <color>? ]! )" - }, - "image-set()": { - "syntax": "image-set( <image-set-option># )" - }, - "image-set-option": { - "syntax": "[ <image> | <string> ] [ <resolution> || type(<string>) ]" - }, - "image-src": { - "syntax": "<url> | <string>" - }, - "image-tags": { - "syntax": "ltr | rtl" - }, - "inflexible-breadth": { - "syntax": "<length> | <percentage> | min-content | max-content | auto" - }, - "inset()": { - "syntax": "inset( <length-percentage>{1,4} [ round <'border-radius'> ]? )" - }, - "invert()": { - "syntax": "invert( <number-percentage> )" - }, - "keyframes-name": { - "syntax": "<custom-ident> | <string>" - }, - "keyframe-block": { - "syntax": "<keyframe-selector># {\n <declaration-list>\n}" - }, - "keyframe-block-list": { - "syntax": "<keyframe-block>+" - }, - "keyframe-selector": { - "syntax": "from | to | <percentage>" - }, - "layer()": { - "syntax": "layer( <layer-name> )" - }, - "layer-name": { - "syntax": "<ident> [ '.' <ident> ]*" - }, - "leader()": { - "syntax": "leader( <leader-type> )" - }, - "leader-type": { - "syntax": "dotted | solid | space | <string>" - }, - "length-percentage": { - "syntax": "<length> | <percentage>" - }, - "line-names": { - "syntax": "'[' <custom-ident>* ']'" - }, - "line-name-list": { - "syntax": "[ <line-names> | <name-repeat> ]+" - }, - "line-style": { - "syntax": "none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset" - }, - "line-width": { - "syntax": "<length> | thin | medium | thick" - }, - "linear-color-hint": { - "syntax": "<length-percentage>" - }, - "linear-color-stop": { - "syntax": "<color> <color-stop-length>?" - }, - "linear-gradient()": { - "syntax": "linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )" - }, - "mask-layer": { - "syntax": "<mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || <geometry-box> || [ <geometry-box> | no-clip ] || <compositing-operator> || <masking-mode>" - }, - "mask-position": { - "syntax": "[ <length-percentage> | left | center | right ] [ <length-percentage> | top | center | bottom ]?" - }, - "mask-reference": { - "syntax": "none | <image> | <mask-source>" - }, - "mask-source": { - "syntax": "<url>" - }, - "masking-mode": { - "syntax": "alpha | luminance | match-source" - }, - "matrix()": { - "syntax": "matrix( <number>#{6} )" - }, - "matrix3d()": { - "syntax": "matrix3d( <number>#{16} )" - }, - "max()": { - "syntax": "max( <calc-sum># )" - }, - "media-and": { - "syntax": "<media-in-parens> [ and <media-in-parens> ]+" - }, - "media-condition": { - "syntax": "<media-not> | <media-and> | <media-or> | <media-in-parens>" - }, - "media-condition-without-or": { - "syntax": "<media-not> | <media-and> | <media-in-parens>" - }, - "media-feature": { - "syntax": "( [ <mf-plain> | <mf-boolean> | <mf-range> ] )" - }, - "media-in-parens": { - "syntax": "( <media-condition> ) | <media-feature> | <general-enclosed>" - }, - "media-not": { - "syntax": "not <media-in-parens>" - }, - "media-or": { - "syntax": "<media-in-parens> [ or <media-in-parens> ]+" - }, - "media-query": { - "syntax": "<media-condition> | [ not | only ]? <media-type> [ and <media-condition-without-or> ]?" - }, - "media-query-list": { - "syntax": "<media-query>#" - }, - "media-type": { - "syntax": "<ident>" - }, - "mf-boolean": { - "syntax": "<mf-name>" - }, - "mf-name": { - "syntax": "<ident>" - }, - "mf-plain": { - "syntax": "<mf-name> : <mf-value>" - }, - "mf-range": { - "syntax": "<mf-name> [ '<' | '>' ]? '='? <mf-value>\n| <mf-value> [ '<' | '>' ]? '='? <mf-name>\n| <mf-value> '<' '='? <mf-name> '<' '='? <mf-value>\n| <mf-value> '>' '='? <mf-name> '>' '='? <mf-value>" - }, - "mf-value": { - "syntax": "<number> | <dimension> | <ident> | <ratio>" - }, - "min()": { - "syntax": "min( <calc-sum># )" - }, - "minmax()": { - "syntax": "minmax( [ <length> | <percentage> | min-content | max-content | auto ] , [ <length> | <percentage> | <flex> | min-content | max-content | auto ] )" - }, - "name-repeat": { - "syntax": "repeat( [ <integer [1,∞]> | auto-fill ], <line-names>+ )" - }, - "named-color": { - "syntax": "transparent | aliceblue | antiquewhite | aqua | aquamarine | azure | beige | bisque | black | blanchedalmond | blue | blueviolet | brown | burlywood | cadetblue | chartreuse | chocolate | coral | cornflowerblue | cornsilk | crimson | cyan | darkblue | darkcyan | darkgoldenrod | darkgray | darkgreen | darkgrey | darkkhaki | darkmagenta | darkolivegreen | darkorange | darkorchid | darkred | darksalmon | darkseagreen | darkslateblue | darkslategray | darkslategrey | darkturquoise | darkviolet | deeppink | deepskyblue | dimgray | dimgrey | dodgerblue | firebrick | floralwhite | forestgreen | fuchsia | gainsboro | ghostwhite | gold | goldenrod | gray | green | greenyellow | grey | honeydew | hotpink | indianred | indigo | ivory | khaki | lavender | lavenderblush | lawngreen | lemonchiffon | lightblue | lightcoral | lightcyan | lightgoldenrodyellow | lightgray | lightgreen | lightgrey | lightpink | lightsalmon | lightseagreen | lightskyblue | lightslategray | lightslategrey | lightsteelblue | lightyellow | lime | limegreen | linen | magenta | maroon | mediumaquamarine | mediumblue | mediumorchid | mediumpurple | mediumseagreen | mediumslateblue | mediumspringgreen | mediumturquoise | mediumvioletred | midnightblue | mintcream | mistyrose | moccasin | navajowhite | navy | oldlace | olive | olivedrab | orange | orangered | orchid | palegoldenrod | palegreen | paleturquoise | palevioletred | papayawhip | peachpuff | peru | pink | plum | powderblue | purple | rebeccapurple | red | rosybrown | royalblue | saddlebrown | salmon | sandybrown | seagreen | seashell | sienna | silver | skyblue | slateblue | slategray | slategrey | snow | springgreen | steelblue | tan | teal | thistle | tomato | turquoise | violet | wheat | white | whitesmoke | yellow | yellowgreen" - }, - "namespace-prefix": { - "syntax": "<ident>" - }, - "ns-prefix": { - "syntax": "[ <ident-token> | '*' ]? '|'" - }, - "number-percentage": { - "syntax": "<number> | <percentage>" - }, - "numeric-figure-values": { - "syntax": "[ lining-nums | oldstyle-nums ]" - }, - "numeric-fraction-values": { - "syntax": "[ diagonal-fractions | stacked-fractions ]" - }, - "numeric-spacing-values": { - "syntax": "[ proportional-nums | tabular-nums ]" - }, - "nth": { - "syntax": "<an-plus-b> | even | odd" - }, - "opacity()": { - "syntax": "opacity( [ <number-percentage> ] )" - }, - "overflow-position": { - "syntax": "unsafe | safe" - }, - "outline-radius": { - "syntax": "<length> | <percentage>" - }, - "page-body": { - "syntax": "<declaration>? [ ; <page-body> ]? | <page-margin-box> <page-body>" - }, - "page-margin-box": { - "syntax": "<page-margin-box-type> '{' <declaration-list> '}'" - }, - "page-margin-box-type": { - "syntax": "@top-left-corner | @top-left | @top-center | @top-right | @top-right-corner | @bottom-left-corner | @bottom-left | @bottom-center | @bottom-right | @bottom-right-corner | @left-top | @left-middle | @left-bottom | @right-top | @right-middle | @right-bottom" - }, - "page-selector-list": { - "syntax": "[ <page-selector># ]?" - }, - "page-selector": { - "syntax": "<pseudo-page>+ | <ident> <pseudo-page>*" - }, - "page-size": { - "syntax": "A5 | A4 | A3 | B5 | B4 | JIS-B5 | JIS-B4 | letter | legal | ledger" - }, - "path()": { - "syntax": "path( [ <fill-rule>, ]? <string> )" - }, - "paint()": { - "syntax": "paint( <ident>, <declaration-value>? )" - }, - "perspective()": { - "syntax": "perspective( <length> )" - }, - "polygon()": { - "syntax": "polygon( <fill-rule>? , [ <length-percentage> <length-percentage> ]# )" - }, - "position": { - "syntax": "[ [ left | center | right ] || [ top | center | bottom ] | [ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ]? | [ [ left | right ] <length-percentage> ] && [ [ top | bottom ] <length-percentage> ] ]" - }, - "pseudo-class-selector": { - "syntax": "':' <ident-token> | ':' <function-token> <any-value> ')'" - }, - "pseudo-element-selector": { - "syntax": "':' <pseudo-class-selector>" - }, - "pseudo-page": { - "syntax": ": [ left | right | first | blank ]" - }, - "quote": { - "syntax": "open-quote | close-quote | no-open-quote | no-close-quote" - }, - "radial-gradient()": { - "syntax": "radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )" - }, - "relative-selector": { - "syntax": "<combinator>? <complex-selector>" - }, - "relative-selector-list": { - "syntax": "<relative-selector>#" - }, - "relative-size": { - "syntax": "larger | smaller" - }, - "repeat-style": { - "syntax": "repeat-x | repeat-y | [ repeat | space | round | no-repeat ]{1,2}" - }, - "repeating-conic-gradient()": { - "syntax": "repeating-conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )" - }, - "repeating-linear-gradient()": { - "syntax": "repeating-linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )" - }, - "repeating-radial-gradient()": { - "syntax": "repeating-radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )" - }, - "rgb()": { - "syntax": "rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) | rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )" - }, - "rgba()": { - "syntax": "rgba( <percentage>{3} [ / <alpha-value> ]? ) | rgba( <number>{3} [ / <alpha-value> ]? ) | rgba( <percentage>#{3} , <alpha-value>? ) | rgba( <number>#{3} , <alpha-value>? )" - }, - "rotate()": { - "syntax": "rotate( [ <angle> | <zero> ] )" - }, - "rotate3d()": { - "syntax": "rotate3d( <number> , <number> , <number> , [ <angle> | <zero> ] )" - }, - "rotateX()": { - "syntax": "rotateX( [ <angle> | <zero> ] )" - }, - "rotateY()": { - "syntax": "rotateY( [ <angle> | <zero> ] )" - }, - "rotateZ()": { - "syntax": "rotateZ( [ <angle> | <zero> ] )" - }, - "saturate()": { - "syntax": "saturate( <number-percentage> )" - }, - "scale()": { - "syntax": "scale( <number> , <number>? )" - }, - "scale3d()": { - "syntax": "scale3d( <number> , <number> , <number> )" - }, - "scaleX()": { - "syntax": "scaleX( <number> )" - }, - "scaleY()": { - "syntax": "scaleY( <number> )" - }, - "scaleZ()": { - "syntax": "scaleZ( <number> )" - }, - "self-position": { - "syntax": "center | start | end | self-start | self-end | flex-start | flex-end" - }, - "shape-radius": { - "syntax": "<length-percentage> | closest-side | farthest-side" - }, - "skew()": { - "syntax": "skew( [ <angle> | <zero> ] , [ <angle> | <zero> ]? )" - }, - "skewX()": { - "syntax": "skewX( [ <angle> | <zero> ] )" - }, - "skewY()": { - "syntax": "skewY( [ <angle> | <zero> ] )" - }, - "sepia()": { - "syntax": "sepia( <number-percentage> )" - }, - "shadow": { - "syntax": "inset? && <length>{2,4} && <color>?" - }, - "shadow-t": { - "syntax": "[ <length>{2,3} && <color>? ]" - }, - "shape": { - "syntax": "rect(<top>, <right>, <bottom>, <left>)" - }, - "shape-box": { - "syntax": "<box> | margin-box" - }, - "side-or-corner": { - "syntax": "[ left | right ] || [ top | bottom ]" - }, - "single-animation": { - "syntax": "<time> || <easing-function> || <time> || <single-animation-iteration-count> || <single-animation-direction> || <single-animation-fill-mode> || <single-animation-play-state> || [ none | <keyframes-name> ]" - }, - "single-animation-direction": { - "syntax": "normal | reverse | alternate | alternate-reverse" - }, - "single-animation-fill-mode": { - "syntax": "none | forwards | backwards | both" - }, - "single-animation-iteration-count": { - "syntax": "infinite | <number>" - }, - "single-animation-play-state": { - "syntax": "running | paused" - }, - "single-animation-timeline": { - "syntax": "auto | none | <timeline-name>" - }, - "single-transition": { - "syntax": "[ none | <single-transition-property> ] || <time> || <easing-function> || <time>" - }, - "single-transition-property": { - "syntax": "all | <custom-ident>" - }, - "size": { - "syntax": "closest-side | farthest-side | closest-corner | farthest-corner | <length> | <length-percentage>{2}" - }, - "step-position": { - "syntax": "jump-start | jump-end | jump-none | jump-both | start | end" - }, - "step-timing-function": { - "syntax": "step-start | step-end | steps(<integer>[, <step-position>]?)" - }, - "subclass-selector": { - "syntax": "<id-selector> | <class-selector> | <attribute-selector> | <pseudo-class-selector>" - }, - "supports-condition": { - "syntax": "not <supports-in-parens> | <supports-in-parens> [ and <supports-in-parens> ]* | <supports-in-parens> [ or <supports-in-parens> ]*" - }, - "supports-in-parens": { - "syntax": "( <supports-condition> ) | <supports-feature> | <general-enclosed>" - }, - "supports-feature": { - "syntax": "<supports-decl> | <supports-selector-fn>" - }, - "supports-decl": { - "syntax": "( <declaration> )" - }, - "supports-selector-fn": { - "syntax": "selector( <complex-selector> )" - }, - "symbol": { - "syntax": "<string> | <image> | <custom-ident>" - }, - "target": { - "syntax": "<target-counter()> | <target-counters()> | <target-text()>" - }, - "target-counter()": { - "syntax": "target-counter( [ <string> | <url> ] , <custom-ident> , <counter-style>? )" - }, - "target-counters()": { - "syntax": "target-counters( [ <string> | <url> ] , <custom-ident> , <string> , <counter-style>? )" - }, - "target-text()": { - "syntax": "target-text( [ <string> | <url> ] , [ content | before | after | first-letter ]? )" - }, - "time-percentage": { - "syntax": "<time> | <percentage>" - }, - "timeline-name": { - "syntax": "<custom-ident> | <string>" - }, - "easing-function": { - "syntax": "linear | <cubic-bezier-timing-function> | <step-timing-function>" - }, - "track-breadth": { - "syntax": "<length-percentage> | <flex> | min-content | max-content | auto" - }, - "track-list": { - "syntax": "[ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?" - }, - "track-repeat": { - "syntax": "repeat( [ <integer [1,∞]> ] , [ <line-names>? <track-size> ]+ <line-names>? )" - }, - "track-size": { - "syntax": "<track-breadth> | minmax( <inflexible-breadth> , <track-breadth> ) | fit-content( [ <length> | <percentage> ] )" - }, - "transform-function": { - "syntax": "<matrix()> | <translate()> | <translateX()> | <translateY()> | <scale()> | <scaleX()> | <scaleY()> | <rotate()> | <skew()> | <skewX()> | <skewY()> | <matrix3d()> | <translate3d()> | <translateZ()> | <scale3d()> | <scaleZ()> | <rotate3d()> | <rotateX()> | <rotateY()> | <rotateZ()> | <perspective()>" - }, - "transform-list": { - "syntax": "<transform-function>+" - }, - "translate()": { - "syntax": "translate( <length-percentage> , <length-percentage>? )" - }, - "translate3d()": { - "syntax": "translate3d( <length-percentage> , <length-percentage> , <length> )" - }, - "translateX()": { - "syntax": "translateX( <length-percentage> )" - }, - "translateY()": { - "syntax": "translateY( <length-percentage> )" - }, - "translateZ()": { - "syntax": "translateZ( <length> )" - }, - "type-or-unit": { - "syntax": "string | color | url | integer | number | length | angle | time | frequency | cap | ch | em | ex | ic | lh | rlh | rem | vb | vi | vw | vh | vmin | vmax | mm | Q | cm | in | pt | pc | px | deg | grad | rad | turn | ms | s | Hz | kHz | %" - }, - "type-selector": { - "syntax": "<wq-name> | <ns-prefix>? '*'" - }, - "var()": { - "syntax": "var( <custom-property-name> , <declaration-value>? )" - }, - "viewport-length": { - "syntax": "auto | <length-percentage>" - }, - "visual-box": { - "syntax": "content-box | padding-box | border-box" - }, - "wq-name": { - "syntax": "<ns-prefix>? <ident-token>" - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/syntaxes.schema.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/syntaxes.schema.json deleted file mode 100644 index 45632c4f..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/syntaxes.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "required": [ - "syntax" - ], - "properties": { - "syntax": { - "type": "string" - } - } - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/types.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/types.json deleted file mode 100644 index 944e371e..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/types.json +++ /dev/null @@ -1,265 +0,0 @@ -{ - "an-plus-b": { - "groups": [ - "Selectors" - ], - "status": "standard" - }, - "angle": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/angle" - }, - "angle-percentage": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/angle-percentage" - }, - "basic-shape": { - "groups": [ - "CSS Shapes", - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/basic-shape" - }, - "blend-mode": { - "groups": [ - "Compositing and Blending", - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/blend-mode" - }, - "color": { - "groups": [ - "CSS Color", - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value" - }, - "custom-ident": { - "groups": [ - "CSS Will Change", - "CSS Counter Styles", - "CSS Lists and Counters", - "CSS Animations", - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/custom-ident" - }, - "dimension": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/dimension" - }, - "display-outside": { - "groups": [ - "CSS Display" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/display-outside" - }, - "display-inside": { - "groups": [ - "CSS Display" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/display-inside" - }, - "display-listitem": { - "groups": [ - "CSS Display" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/display-listitem" - }, - "display-internal": { - "groups": [ - "CSS Display" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/display-internal" - }, - "display-box": { - "groups": [ - "CSS Display" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/display-box" - }, - "display-legacy": { - "groups": [ - "CSS Display" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/display-legacy" - }, - "filter-function": { - "groups": [ - "Filter Effects" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter-function" - }, - "flex": { - "groups": [ - "CSS Grid Layout", - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/flex_value" - }, - "frequency": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/frequency" - }, - "frequency-percentage": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/frequency-percentage" - }, - "gradient": { - "groups": [ - "CSS Images", - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/gradient" - }, - "ident": { - "groups": [ - "CSS Types" - ], - "status": "standard" - }, - "image": { - "groups": [ - "CSS Images", - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/image" - }, - "integer": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/integer" - }, - "length": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/length" - }, - "length-percentage": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/length-percentage" - }, - "number": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/number" - }, - "percentage": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/percentage" - }, - "position": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/position_value" - }, - "ratio": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/ratio" - }, - "resolution": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/resolution" - }, - "shape": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/shape" - }, - "string": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/string" - }, - "time": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/time" - }, - "time-percentage": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/time-percentage" - }, - "timing-function": { - "groups": [ - "CSS Animations", - "CSS Transitions", - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/timing-function" - }, - "transform-function": { - "groups": [ - "CSS Transforms", - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transform-function" - }, - "url": { - "groups": [ - "CSS Types" - ], - "status": "standard", - "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/url" - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/types.schema.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/types.schema.json deleted file mode 100644 index 22007732..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/types.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "groups": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "$ref": "definitions.json#/groupList" - } - }, - "status": { - "enum": [ - "standard", - "nonstandard", - "experimental" - ] - }, - "mdn_url": { - "type": "string", - "pattern": "^https://developer.mozilla.org/docs/Web/CSS/" - } - }, - "required": [ - "groups", - "status" - ] - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/units.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/units.json deleted file mode 100644 index 8a5b5c4b..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/units.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "cap": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "ch": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "cm": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "deg": { - "groups": [ - "CSS Units", - "CSS Angles" - ], - "status": "standard" - }, - "dpcm": { - "groups": [ - "CSS Units", - "CSS Resolutions" - ], - "status": "standard" - }, - "dpi": { - "groups": [ - "CSS Units", - "CSS Resolutions" - ], - "status": "standard" - }, - "dppx": { - "groups": [ - "CSS Units", - "CSS Resolutions" - ], - "status": "standard" - }, - "em": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "ex": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "fr": { - "groups": [ - "CSS Units", - "CSS Flexible Lengths", - "CSS Grid Layout" - ], - "status": "standard" - }, - "grad": { - "groups": [ - "CSS Units", - "CSS Angles" - ], - "status": "standard" - }, - "Hz": { - "groups": [ - "CSS Units", - "CSS Frequencies" - ], - "status": "standard" - }, - "ic": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "in": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "kHz": { - "groups": [ - "CSS Units", - "CSS Frequencies" - ], - "status": "standard" - }, - "mm": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "ms": { - "groups": [ - "CSS Units", - "CSS Times" - ], - "status": "standard" - }, - "pc": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "pt": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "px": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "Q": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "rad": { - "groups": [ - "CSS Units", - "CSS Angles" - ], - "status": "standard" - }, - "rem": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "s": { - "groups": [ - "CSS Units", - "CSS Times" - ], - "status": "standard" - }, - "turn": { - "groups": [ - "CSS Units", - "CSS Angles" - ], - "status": "standard" - }, - "vh": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "vmax": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "vmin": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "vw": { - "groups": [ - "CSS Units", - "CSS Lengths" - ], - "status": "standard" - }, - "x": { - "groups": [ - "CSS Units", - "CSS Resolutions" - ], - "status": "standard" - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/units.schema.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/units.schema.json deleted file mode 100644 index b60b4614..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/css/units.schema.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "groups": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "$ref": "definitions.json#/groupList" - } - }, - "status": { - "enum": [ - "standard", - "nonstandard", - "experimental" - ] - } - }, - "required": [ - "groups", - "status" - ] - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/index.js b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/index.js deleted file mode 100644 index 3b0f09ff..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - api: require('./api'), - css: require('./css'), - l10n: require('./l10n'), -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/l10n/css.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/l10n/css.json deleted file mode 100644 index abd00cfc..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/l10n/css.json +++ /dev/null @@ -1,1715 +0,0 @@ -{ - "absoluteLength": { - "de": "absolute {{cssxref(\"length\")}}", - "en-US": "absolute {{cssxref(\"length\")}}", - "fr": "une longueur (type {{cssxref(\"length\")}}) absolue", - "ja": "絶対的な{{cssxref(\"length\", \"長さ\")}}", - "ru": "абсолютная {{cssxref(\"length\")}}" - }, - "absoluteLength0ForNone": { - "de": "eine absolute Länge; falls das Schlüsselwort <code>none</code> angegeben wurde, ist der berechnete Wert <code>0</code>", - "en-US": "an absolute length; if the keyword <code>none</code> is specified, the computed value is <code>0</code>", - "fr": "une longueur absolue ; si le mot-clé <code>none</code> est spécifié, la valeur calculée sera <code>0</code>", - "ja": "絶対的な長さ、キーワード <code>none</code> が指定されると計算値は <code>0</code> になる", - "ru": "абсолютная длина; если указано ключевое слово <code>none</code>, вычисленное значение - <code>0</code>" - }, - "absoluteLength0IfColumnRuleStyleNoneOrHidden": { - "de": "die absolute Länge; <code>0</code> falls {{cssxref(\"column-rule-style\")}} <code>none</code> oder <code>hidden</code> ist", - "en-US": "the absolute length; <code>0</code> if the {{cssxref(\"column-rule-style\")}} is <code>none</code> or <code>hidden</code>", - "fr": "une longueur absolue ou <code>0</code> si {{cssxref(\"column-rule-style\")}} vaut <code>none</code> ou <code>hidden</code>", - "ja": "絶対的な長さ、列の罫線のスタイルが <code>none</code> か <code>hidden</code> なら <code>0</code>", - "ru": "абсолютная длина; <code>0</code>, если {{cssxref(\"column-rule-style\")}} - <code>none</code> или <code>hidden</code>" - }, - "absoluteLengthOr0IfBorderBottomStyleNoneOrHidden": { - "de": "die absolute Länge; <code>0</code> falls {{cssxref(\"border-bottom-style\")}} <code>none</code> oder <code>hidden</code> ist", - "en-US": "the absolute length or <code>0</code> if {{cssxref(\"border-bottom-style\")}} is <code>none</code> or <code>hidden</code>", - "fr": "la longueur absolue ou <code>0</code> si {{cssxref(\"border-bottom-style\")}} vaut <code>none</code> ou <code>hidden</code>", - "ja": "絶対的な長さ、または {{cssxref(\"border-bottom-style\")}} が <code>none</code> または <code>hidden</code> の場合は <code>0</code>", - "ru": "абсолютная длина или <code>0</code>, если {{cssxref(\"border-bottom-style\")}} - <code>none</code> или <code>hidden</code>" - }, - "absoluteLengthOr0IfBorderLeftStyleNoneOrHidden": { - "de": "die absolute Länge; <code>0</code> falls {{cssxref(\"border-left-style\")}} <code>none</code> oder <code>hidden</code> ist", - "en-US": "the absolute length or <code>0</code> if {{cssxref(\"border-left-style\")}} is <code>none</code> or <code>hidden</code>", - "fr": "la longueur absolue ou <code>0</code> si {{cssxref(\"border-left-style\")}} vaut <code>none</code> ou <code>hidden</code>", - "ja": "絶対的な長さ、または {{cssxref(\"border-left-style\")}} が <code>none</code> または <code>hidden</code> の場合は <code>0</code>", - "ru": "абсолютная длина или <code>0</code>, если {{cssxref(\"border-left-style\")}} - <code>none</code> или <code>hidden</code>" - }, - "absoluteLengthOr0IfBorderRightStyleNoneOrHidden": { - "de": "die absolute Länge; <code>0</code> falls {{cssxref(\"border-right-style\")}} <code>none</code> oder <code>hidden</code> ist", - "en-US": "the absolute length or <code>0</code> if {{cssxref(\"border-right-style\")}} is <code>none</code> or <code>hidden</code>", - "fr": "la longueur absolue ou <code>0</code> si {{cssxref(\"border-right-style\")}} vaut <code>none</code> ou <code>hidden</code>", - "ja": "絶対的な長さ、または {{cssxref(\"border-right-style\")}} が <code>none</code> または <code>hidden</code> の場合は <code>0</code>", - "ru": "абсолютная длина или <code>0</code>, если {{cssxref(\"border-right-style\")}} - <code>none</code> или <code>hidden</code>" - }, - "absoluteLengthOr0IfBorderTopStyleNoneOrHidden": { - "de": "die absolute Länge; <code>0</code> falls {{cssxref(\"border-top-style\")}} <code>none</code> oder <code>hidden</code> ist", - "en-US": "the absolute length or <code>0</code> if {{cssxref(\"border-top-style\")}} is <code>none</code> or <code>hidden</code>", - "fr": "la longueur absolue ou <code>0</code> si {{cssxref(\"border-top-style\")}} vaut <code>none</code> ou <code>hidden</code>", - "ja": "絶対的な長さ、または {{cssxref(\"border-top-style\")}} が <code>none</code> または <code>hidden</code> の場合は <code>0</code>", - "ru": "абсолютная длина или <code>0</code>, если {{cssxref(\"border-top-style\")}} - <code>none</code> или <code>hidden</code>" - }, - "absoluteLengthOrAsSpecified": { - "de": "für Prozent- und Längenwerte die absolute Länge, ansonsten wie angegeben", - "en-US": "for percentage and length values, the absolute length, otherwise as specified", - "fr": "pour les valeurs en pourcentages ou en longueur, la longueur absolue, sinon, comme spécifié", - "ja": "パーセンテージか length を指定すると絶対的な値、それ以外は指定通り", - "ru": "для процентов и значений длин, абсолютной длины, если другое не указано" - }, - "absoluteLengthOrKeyword": { - "de": "für Prozentwerte und Längenwerte die absolute Länge, ansonsten das Schlüsselwort wie angegeben", - "en-US": "for percentage and length values, the absolute length, otherwise the keyword as specified", - "fr": "pour les valeurs exprimées en pourcentages ou en longueur, la longueur absolue, sinon, le mot-clé comme spécifié", - "ja": "パーセンテージか長さを指定すると絶対的な値、それ以外は指定されたキーワード", - "ru": "для процентов и значений длин, абсолютных длин или ключевых слов, если указаны" - }, - "absoluteLengthOrNone": { - "de": "die absolute Länge oder <code>none</code>", - "en-US": "the absolute length or <code>none</code>", - "fr": "la longueur absolue ou le mot-clé <code>none</code>", - "ja": "絶対的な長さまたは <code>none</code>", - "ru": "абсолютная длина или <code>none</code>" - }, - "absoluteLengthOrNormal": { - "de": "die absolute Länge oder das Schlüsselwort <code>normal</code>", - "en-US": "the absolute length or the keyword <code>normal</code>", - "fr": "la longueur absolue ou le mot-clé <code>normal</code>", - "ja": "絶対的な長さまたはキーワード <code>normal</code>", - "ru": "абсолютная длина или ключевое слово <code>normal</code>" - }, - "absoluteLengthOrPercentage": { - "de": "für {{cssxref(\"length\")}} der absolute Wert, ansonsten ein Prozentwert", - "en-US": "for {{cssxref(\"length\")}} the absolute value, otherwise a percentage", - "fr": "pour {{cssxref(\"length\")}}, la valeur absolue, sinon un pourcentage", - "ja": "{{cssxref(\"length\")}} の場合は絶対的な値、それ以外はパーセント値", - "ru": "для {{cssxref(\"length\")}} абсолютного значения, иначе процент" - }, - "absoluteLengthsSpecifiedColorAsSpecified": { - "de": "Längen absolut gemacht; angegebene Farben berechnet; ansonsten wie angegeben", - "en-US": "any length made absolute; any specified color computed; otherwise as specified", - "fr": "toute longueur sous forme absolue; toute couleur sous forme calculée; sinon comme spécifié", - "ja": "指定値(length は全て絶対値となり、color については計算値となる)", - "ru": "любая абсолютная длина; работает любой указанный цвет; если другое не указано" - }, - "absoluteLengthZeroIfBorderStyleNoneOrHidden": { - "de": "absolute Länge; <code>0</code>, falls der Rahmenstil <code>none</code> oder <code>hidden</code> ist", - "en-US": "absolute length; <code>0</code> if the border style is <code>none</code> or <code>hidden</code>", - "fr": "une longueur absolue ; <code>0</code> si le style de la bordure vaut <code>none</code> ou <code>hidden</code>", - "ja": "絶対的な長さ、境界スタイルが <code>none</code> または <code>hidden</code> であれば <code>0</code>", - "ru": "абсолютная длина; <code>0</code>, если стиль рамки <code>none</code> или <code>hidden</code>" - }, - "absoluteLengthZeroOrLarger": { - "de": "the absolute length, zero oder larger", - "en-US": "the absolute length, zero or larger", - "fr": "la valeur absolue valant zéro ou plus", - "ja": "ゼロ以上の絶対的な長さ", - "ru": "абсолютная длина, ноль или больше" - }, - "absolutelyPositionedElements": { - "de": "absolut positionierte Elemente", - "en-US": "absolutely positioned elements", - "fr": "éléments positionnés de manière absolue", - "ja": "絶対位置指定された要素", - "ru": "абсолютно позиционированные элементы" - }, - "absoluteURIOrNone": { - "de": "absolute URI oder <code>none</code>", - "en-US": "absolute URI or <code>none</code>", - "fr": "une URI absolue ou <code>none</code>", - "ja": "絶対 URI または <code>none</code>", - "ru": "абсолютный URI или <code>none</code>" - }, - "all": { - "de": "alle", - "en-US": "all", - "fr": "tous", - "ja": "すべて", - "ru": "всё" - }, - "allElements": { - "de": "alle Elemente", - "en-US": "all elements", - "fr": "tous les éléments", - "ja": "すべての要素", - "pl": "wszystkich elementów", - "ru": "все элементы" - }, - "allElementsAcceptingWidthOrHeight": { - "de": "alle Elemente, die Breite oder Höhe akzeptieren", - "en-US": "all elements that accept width or height", - "fr": "tous les éléments acceptant une largeur ou une hauteur", - "ja": "width および height を受け付ける全ての要素", - "ru": "все элементы, которые могут иметь ширину и высоту" - }, - "allElementsAndPseudos": { - "de": "alle Elemente, {{cssxref(\"::before\")}} und {{cssxref(\"::after\")}} <a href=\"/de/docs/Web/CSS/Pseudo-elements\">Pseudoelemente</a>", - "en-US": "all elements, {{cssxref(\"::before\")}} and {{cssxref(\"::after\")}} <a href=\"/en-US/docs/Web/CSS/Pseudo-elements\">pseudo-elements</a>", - "es": "todos los elementos y los <a href=\"/es/docs/Web/CSS/Pseudoelementos\">pseudoelementos</a> {{cssxref(\"::before\")}} y {{cssxref(\"::after\")}}", - "fr": "tous les éléments, ainsi que les <a href=\"/fr/docs/Web/CSS/Pseudo-elements\">pseudo-elements</a> {{cssxref(\"::before\")}} et {{cssxref(\"::after\")}}", - "ja": "すべての要素、{{cssxref(\"::before\")}} / {{cssxref(\"::after\")}} <a href=\"/ja/docs/Web/CSS/Pseudo-elements\">擬似要素</a>", - "ru": "все элементы, {{cssxref(\"::before\")}} и {{cssxref(\"::after\")}} <a href=\"/ru/docs/Web/CSS/Pseudo-elements\">псевдоэлементы</a>" - }, - "allElementsAndText": { - "en-US": "all elements and text", - "ja": "すべての要素とテキスト" - }, - "allElementsButNonReplacedAndTableColumns": { - "de": "alle Elemente außer nicht ersetzte Inlineelemente, Tabellenspalten und Spaltengruppen", - "en-US": "all elements but non-replaced inline elements, table columns, and column groups", - "es": "elementos de bloque o remplazados", - "fr": "tous les éléments sauf les éléments en ligne non remplacés, les colonnes de tableaux et les groupes de colonnes", - "ja": "非置換インライン要素、テーブルの列、列グループを除くすべての要素", - "ru": "все элементы, кроме незаменяемых строчных элементов, табличных колонок и групп колонок" - }, - "allElementsButNonReplacedAndTableRows": { - "de": "alle Elemente außer nicht ersetzte Inlineelemente, Tabellenzeilen und Zeilengruppen", - "en-US": "all elements but non-replaced inline elements, table rows, and row groups", - "fr": "tous les éléments sauf les éléments en ligne non remplacés, les lignes de tableaux et les groupes de lignes", - "ja": "置換要素でないインライン要素、テーブルの行、行グループを除くすべての要素", - "ru": "все элементы, кроме незаменяемых строчных элементов, табличных строк и групп строк" - }, - "allElementsCreatingNativeWindows": { - "de": "alle Elemente, die native Fenster erstellen, z. B. <window>, <panel>", - "en-US": "all elements that create native windows, e.g. <window>, <panel>", - "fr": "tous les éléments qui créent des fenêtres natives, par exemple <window>, <panel>", - "ja": "ネイティブウィンドウを生成するすべての要素、たとえば <window>, <panel>", - "ru": "все элементы, создающие нативные окна, например, <window>, <panel>" - }, - "allElementsExceptGeneratedContentOrPseudoElements": { - "de": "alle Elemente außer generierte Inhalte oder Pseudoelemente", - "en-US": "all elements except generated content or pseudo-elements", - "fr": "tous les éléments sauf le contenu généré ou les pseudo-éléments", - "ja": "生成コンテンツや擬似要素を除くすべての要素", - "ru": "все элементы, кроме сгенерированного контента и псевдоэлементов" - }, - "allElementsExceptInlineBoxesAndInternalRubyOrTableBoxes": { - "de": "all elements except inline boxes and internal ruby or table boxes", - "en-US": "all elements except inline boxes and internal ruby or table boxes", - "fr": "all elements except inline boxes and internal ruby or table boxes", - "ja": "インラインボックスおよび内部のルビまたは表ボックスを除くすべての要素", - "ru": "all elements except inline boxes and internal ruby or table boxes" - }, - "allElementsExceptInternalTableDisplayTypes": { - "de": "alle Elemente außer <code>table-row-group</code>, <code>table-header-group</code>, <code>table-footer-group</code>, <code>table-row</code>, <code>table-column-group</code> und <code>table-column</code>", - "en-US": "all elements, except <code>table-row-group</code>, <code>table-header-group</code>, <code>table-footer-group</code>, <code>table-row</code>, <code>table-column-group</code> and <code>table-column</code>", - "fr": "tous les éléments exceptés <code>table-row-group</code>, <code>table-header-group</code>, <code>table-footer-group</code>, <code>table-row</code>, <code>table-column-group</code> et <code>table-column</code>", - "ja": "<code>table-row-group</code>, <code>table-header-group</code>, <code>table-footer-group</code>, <code>table-row</code>, <code>table-column-group</code>, <code>table-column</code> を除くすべての要素", - "ru": "все элементы, кроме <code>table-row-group</code>, <code>table-header-group</code>, <code>table-footer-group</code>, <code>table-row</code>, <code>table-column-group</code> и <code>table-column</code>" - }, - "allElementsExceptNonReplacedInlineElementsTableRowsColumnsRowColumnGroups": { - "de": "alle Elemente außer: nicht ersetzte Inlineelemente, Tabellenzeilen, Zeilengruppen, Tabellenspalten und Spaltengruppen", - "en-US": "all elements except: non-replaced inline elements, table rows, row groups, table columns, and column groups", - "fr": "tous les éléments sauf : les éléments en ligne non remplacés, les lignes, les groupes de lignes, les colonnes et les groupes de colonnes pour les tableaux", - "ja": "非置換インライン要素、表の行、行グループ、表の列、列グループを除くすべての要素", - "ru": "все элементы, кроме: незаменяемых строчных элементов, строк и колонок таблиц" - }, - "allElementsExceptTableDisplayTypes": { - "de": "alle Elemente außer Elemente mit Tabellen-{{cssxref(\"display\")}}-Typen, die nicht <code>table-caption</code>, <code>table</code> und <code>inline-table</code> entsprechen", - "en-US": "all elements, except elements with table {{cssxref(\"display\")}} types other than <code>table-caption</code>, <code>table</code> and <code>inline-table</code>", - "fr": "tous les éléments exceptés ceux dont les types {{cssxref(\"display\")}} pour les tableaux ne sont pas <code>table-caption</code>, <code>table</code> et <code>inline-table</code>", - "ja": "<code>table-caption</code>, <code>table</code>, <code>inline-table</code> 以外の表の {{cssxref(\"display\")}} 種別を除くすべての要素", - "ru": "все элементы, кроме элементов с табличным типом {{cssxref(\"display\")}}, отличным от <code>table-caption</code>, <code>table</code> и <code>inline-table</code>" - }, - "allElementsExceptTableElementsWhenCollapse": { - "de": "Alle Elemente, außer interne Tabellenelemente, falls {{cssxref(\"border-collapse\")}} <code>collapse</code> ist", - "en-US": "all elements, except internal table elements when {{cssxref(\"border-collapse\")}} is <code>collapse</code>", - "fr": "tous les éléments sauf les éléments de table internes lorsque {{cssxref(\"border-collapse\")}} vaut <code>collapse</code>", - "ja": "すべての要素。ただし {{cssxref(\"border-collapse\")}} が <code>collapse</code> のときはテーブル要素内部にあるものを除く", - "ru": "все элементы, кроме внутренних табличных элементов, когда {{cssxref(\"border-collapse\")}}:<code>collapse</code>" - }, - "allElementsExceptTableRowColumnGroupsTableRowsColumns": { - "de": "alle Elemente außer Tabellenzeilengruppen, Tabellenspaltengruppen, Tabellenzeilen und Tabellenspalten", - "en-US": "all elements except table row groups, table column groups, table rows, and table columns", - "fr": "tous les éléments exceptés les groupes de lignes, les groupes de colonnes des tableaux et les colonnes de tableaux", - "ja": "表の行グループ、表の列グループ、表の行、表の列を除くすべての要素", - "ru": "все элементы, кроме групп табличных строк, групп табличных столбцов, табличных строк и табличных колонок" - }, - "allElementsExceptTableRowGroupsRowsColumnGroupsAndColumns": { - "de": "alle Elemente außer Tabellenzeilengruppen, Zeilen, Spaltengruppen und Spalten", - "en-US": "all elements, except table row groups, rows, column groups, and columns", - "fr": "tous les éléments exceptés les groupes de lignes, les lignes, les groupes de colonnes et les colonnes de tableaux", - "ja": "表の行グループ、列グループ、行、列を除くすべての要素", - "ru": "все элементы, кроме групп табличных строк, столбцов, групп столбцов и столбцов" - }, - "allElementsNoEffectIfDisplayNone": { - "de": "alle Elemente, hat jedoch keinen Effekt, falls der Wert von {{cssxref(\"display\")}} <code>none</code> ist", - "en-US": "all elements, but has no effect if the value of {{cssxref(\"display\")}} is <code>none</code>.", - "fr": "tous les éléments mais n'a aucun effet si la valeur de <code>display</code> est <code>none</code>.", - "ja": "すべての要素。ただし {{cssxref(\"display\")}} が <code>none</code> なら効果を持ちません。", - "ru": "все элементы, но не будет эффекта, если <code>display: none</code>" - }, - "allElementsSomeValuesNoEffectOnNonInlineElements": { - "de": "Alle Elemente, einige Werte haben keine Wirkung bei non-inline Elementen", - "en-US": "all elements, though some values have no effect on non-inline elements", - "fr": "tous les éléments bien que certaines valeurs n'aient pas d'effet sur les éléments qui ne sont pas en ligne", - "ja": "すべての要素。ただし一部の値はインラインでない要素には効果がありません", - "ru": "все элементы, хотя некоторые значения не работают на не строчных элементах" - }, - "allElementsTreeAbidingPseudoElementsPageMarginBoxes": { - "ja": "すべての要素、ツリーに現れる擬似要素、ページのマージンボックス", - "en-US": "All elements, tree-abiding pseudo-elements, and page margin boxes" - }, - "allElementsSVGContainerElements": { - "de": "alle Elemente; In SVG gilt betrifft dies Containerelemente mit Ausnahme des {{SVGElement(\"defs\")}} Elements und allen Grafikelementen", - "en-US": "all elements; In SVG, it applies to container elements excluding the {{SVGElement(\"defs\")}} element and all graphics elements", - "fr": "tous les éléments ; en SVG, cela s'applique aux éléments conteneurs à l'exception des éléments {{SVGElement(\"defs\")}} et des éléments graphiques", - "ja": "すべての要素。 SVG の場合は {{SVGElement(\"defs\")}} 要素やすべてのグラフィック要素を除いたコンテナー要素に適用される", - "ru": "все элементы; в SVG, это применяется к контейнерам, исключая элемент {{SVGElement(\"defs\")}} и все графические элементы" - }, - "allElementsSVGContainerGraphicsAndGraphicsReferencingElements": { - "de": "Alle Elemente. In SVG wird er auf Containerelemente, Grafikelemente und Grafiken referenzierende Elemente angewandt.", - "en-US": "All elements. In SVG, it applies to container elements, graphics elements, and graphics referencing elements.", - "fr": "Tous les éléments. En SVG, cela s'applique aux éléments de conteneurs, aux éléments graphiques et aux éléments faisant référence à des éléments graphiques.", - "ja": "すべての要素。 SVG では、コンテナー要素、グラフィック要素、グラフィック参照要素に適用されます。", - "ru": "Все элементы. В SVG это применяется к контейнерам, графическим элементам и элементам графической отсылки." - }, - "allElementsThatCanReferenceImages": { - "en-US": "Any element that can have an image applied to it, for example as a {{cssxref(\"background-image\")}}, {{cssxref(\"border-image\")}}, or {{cssxref(\"list-style-image\")}}.", - "ja": "{{cssxref(\"background-image\")}}, {{cssxref(\"border-image\")}}, {{cssxref(\"list-style-image\")}} などで適用される画像を持つすべての要素。" - }, - "allElementsUAsNotRequiredWhenCollapse": { - "de": "alle Elemente; aber User Agents sind nicht gezwungen dies auf <code>table</code> und <code>inline-table</code> Elemente anzuwenden, falls {{cssxref(\"border-collapse\")}} <code>collapse</code> ist. Das Verhalten bei internen Tabellenelementen ist momentan undefiniert.", - "en-US": "all elements; but User Agents are not required to apply to <code>table</code> and <code>inline-table</code> elements when {{cssxref(\"border-collapse\")}} is <code>collapse</code>. The behavior on internal table elements is undefined for the moment.", - "fr": "tous les éléments, mais les agents utilisateurs ne sont pas tenus de l'appliquer aux éléments de type <code>table</code> ou <code>inline-table</code> lorsque {{cssxref(\"border-collapse\")}} vaut <code>collapse</code>. Le comportement sur les éléments de type table interne est pour l'instant indéfini.", - "ja": "すべての要素。ただし、ユーザーエージェントは {{cssxref(\"border-collapse\")}} が <code>collapse</code> である場合に<code>table</code> および <code>inline-table</code> 要素に適用する必要はない。内部表要素での動作は、今のところ未定義。", - "ru": "все элементы, но браузеры не применяют к элементам <code>table</code> и <code>inline-table</code>, когда {{cssxref(\"border-collapse\")}}:<code>collapse</code>. Поведение на внутритабличных элементах не определено." - }, - "allHTMLElements": { - "de": "alle HTML-Elemente", - "en-US": "all HTML elements", - "fr": "tous les éléments HTML", - "ja": "すべての HTML 要素", - "ru": "все HTML элементы" - }, - "andInEnumeration": { - "de": " und ", - "en-US": " and ", - "fr": " et ", - "ja": "および", - "ru": " и " - }, - "angle": { - "de": "Winkel", - "en-US": "angle", - "fr": "angle", - "ja": "角度", - "ru": "угол" - }, - "angleBasicShapeOrPath": { - "de": "{{cssxref(\"<angle>\"}}, {{cssxref(\"<basic-shape>\"}} oder {{cssxref(\"<path()>\"}}", - "en-US": "{{cssxref(\"<angle>\"}}, {{cssxref(\"<basic-shape>\"}} or {{cssxref(\"<path()>\"}}", - "fr": "{{cssxref(\"<angle>\"}}, {{cssxref(\"<basic-shape>\"}} ou {{cssxref(\"<path()>\"}}", - "ja": "{{cssxref(\"<angle>\"}}, {{cssxref(\"<basic-shape>\"}}, {{cssxref(\"<path()>\"}} のいずれか" - }, - "angleOrBasicShapeOrPath": { - "de": "als <angle>, <basic-shape> oder <path()>", - "en-US": "as <angle>, <basic-shape> or <path()>", - "fr": "comme <angle>, <basic-shape> ou <path()>", - "ja": "<angle>, <basic-shape>, <path()> の何れかとして", - "ru": "как <angle>, <basic-shape> или <path()>" - }, - "angleRoundedToNextQuarter": { - "de": "ein {{xref_cssangle}}, auf den nächsten Viertel von <code>0deg</code> gerundet (üblicherweise <code>1turn)</code>", - "en-US": "an {{xref_cssangle}}, rounded to the next quarter turn from <code>0deg</code> and normalized, that is moduloing the value by <code>1turn</code>", - "fr": "un {{xref_cssangle}}, arrondi au quart de tour supérieur (à partir de <code>0deg</code>) puis normalisé (modulo) pour obtenir l'angle relatif à un tour", - "ja": "<code>0deg</code> から次の 4 分の 1 回転に丸めて正規化した {{xref_cssangle}} を <code>1turn</code> で割った余り", - "ru": "{{xref_cssangle}}, с округлением до следующей четверти оборота от <code>0deg</code> и нормализованный так, что значение - <code>1 поворот</code>" - }, - "animationType": { - "de": "Animationstyp", - "en-US": "Animation type", - "fr": "Type d'animation", - "ja": "アニメーションの種類" - }, - "anyElementEffectOnProgressAndMeter": { - "de": "beliebige Elemente; es hat eine Auswirkung auf {{HTMLElement(\"progress\")}} und {{HTMLElement(\"meter\")}}, aber nicht auf <input type=\"range\"> oder andere Elemente", - "en-US": "any element; it has an effect on {{HTMLElement(\"progress\")}} and {{HTMLElement(\"meter\")}}, but not on <input type=\"range\"> or other elements", - "fr": "n'importe quel élément, aura un effet sur {{HTMLElement(\"progress\")}} et {{HTMLElement(\"meter\")}}, mais pas sur <input type=\"range\"> ou les autres éléments", - "ja": "任意の要素。これは {{HTMLElement(\"progress\")}} および {{HTMLElement(\"meter\")}} には効果がありますが、 <input type=\"range\"> やその他の要素には効果がありません", - "ru": "любой элемент; имеет эффект на {{HTMLElement(\"progress\")}} и {{HTMLElement(\"meter\")}}, но не на <input type=\"range\"> или других элементах" - }, - "appliesTo": { - "de": "Anwendbar auf", - "en-US": "Applies to", - "fr": "Applicabilité", - "ja": "適用対象", - "ko": "적용대상", - "pl": "Stosowana do", - "pt-BR": "Aplica-se a", - "ru": "Применяется к", - "zh-CN": "适用元素" - }, - "applyingToMultiple": { - "de": "$1$. Auch anwendbar auf $2$.", - "en-US": "$1$. It also applies to $2$.", - "fr": "$1$. S'applique aussi à $2$.", - "ja": "$1$。 $2$ にも適用されます。", - "ru": "$1$. Это также применяется к $2$." - }, - "asAutoOrColor": { - "en-US": "<code>auto</code> is computed as specified and <code><color></code> values are computed as defined for the {{cssxref(\"color\")}} property.", - "de": "<code>auto</code> wird wie angegeben berechnet und <code><color></code> Werte werden wie für die {{cssxref(\"color\")}} Eigenschaft berechnet.", - "ja": "<code>auto</code> は仕様通りに計算され、 <code><color></code> 値は {{cssxref(\"color\")}} プロパティで定義されたように計算される。" - }, - "asDefinedForBasicShapeWithAbsoluteURIOtherwiseAsSpecified": { - "de": "wie definiert für {{cssxref(\"basic-shape\")}} (gefolgt von {{cssxref(\"shape-box\")}}, falls angegeben), dem {{cssxref(\"image\")}}, dessen URI absolut gemacht wurde, ansonsten wie angegeben.", - "en-US": "as defined for {{cssxref(\"basic-shape\")}} (with {{cssxref(\"shape-box\")}} following, if supplied), the {{cssxref(\"image\")}} with its URI made absolute, otherwise as specified.", - "fr": "comme défini pour {{cssxref(\"basic-shape\")}} (avec {{cssxref(\"shape-box\")}} qui suit s'il est utilisé), l'{{cssxref(\"image\")}} avec son URI rendue absolue, sinon, comme spécifié.", - "ja": "{{cssxref(\"basic-shape\")}} で定義された通り (与えられている場合は {{cssxref(\"shape-box\")}} が続く)、 URI を絶対化した {{cssxref(\"image\")}}、それ以外は指定通り。", - "ru": "как определено для {{cssxref(\"basic-shape\")}} (c {{cssxref(\"shape-box\")}} последующим, если передается), {{cssxref(\"image\")}} с его абсолютным URI, если другое не указано" - }, - "asLength": { - "de": "als {{cssxref(\"length\")}}", - "en-US": "as {{cssxref(\"length\")}}", - "fr": "comme {{cssxref(\"length\")}}", - "ja": "{{cssxref(\"length\")}} 通り", - "ru": "как {{cssxref(\"length\")}}" - }, - "asLonghands": { - "de": "wie die jeweiligen Kurzschreibweisen:", - "en-US": "as each of the properties of the shorthand:", - "fr": "pour chaque propriété individuelle de la propriété raccourcie :", - "ja": "一括指定の次の各プロパティとして", - "ru": "как и у каждого из подсвойств этого свойства:" - }, - "asSpecified": { - "de": "wie angegeben", - "en-US": "as specified", - "es": "como se especifica", - "ca": "com s'especifica", - "fr": "comme spécifié", - "ja": "指定通り", - "pl": "jako określone", - "ru": "как указано" - }, - "asSpecifiedAppliesToEachProperty": { - "de": "wie der angegebene Wert wird er auf alle Eigenschaften angewandt, für die dies eine Kurzschreibweise ist.", - "en-US": "as the specified value applies to each property this is a shorthand for.", - "fr": "comme la valeur spécifiée s'applique sur chaque propriété englobée par le raccourci", - "ja": "この一括指定が対象とする各プロパティに適用する指定された値のまま。", - "ru": "как указанное значение, применяется к каждому свойству этой короткой записи." - }, - "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent": { - "en-US": "as specified, except with <code>visible</code>/<code>clip</code> computing to <code>auto</code>/<code>hidden</code> respectively if one of {{cssxref(\"overflow-x\")}} or {{cssxref(\"overflow-y\")}} is neither <code>visible</code> nor </code>clip</code>", - "es": "como se especifica, excepto que si {{cssxref(\"overflow-x\")}} o bien {{cssxref(\"overflow-y\")}} es distinto de <code>visible</code> o <code>clip</code>, estos dos valores computan a <code>auto</code> o <code>hidden</code> respectivamente", - "ca": "com s'especifica, excepte que si {{cssxref(\"overflow-x\")}} o bé {{cssxref(\"overflow-y\")}} són diferents de <code>visible</code> o <code>clip</code>, aquests dos valors computen a <code>auto</code> o <code>hidden</code> respectivament", - "ja": "指定通り、ただし {{cssxref(\"overflow-x\")}} と {{cssxref(\"overflow-y\")}} のどちらかが <code>visible</code> でも </code>clip</code> でもない場合は、 <code>visible</code>/<code>clip</code> はそれぞれ <code>auto</code>/<code>hidden</code> と計算される" - }, - "asSpecifiedExceptMatchParent": { - "de": "wie angegeben, außer für den <code>match-parent</code> Wert, welcher in Bezug auf den <code>direction</code> Wert des Elternelements berechnet wird und einen berechneten Wert von <code>left</code> oder <code>right</code> ergibt", - "en-US": "as specified, except for the <code>match-parent</code> value which is calculated against its parent's <code>direction</code> value and results in a computed value of either <code>left</code> or <code>right</code>", - "fr": "comme spécifié, sauf pour la valeur <code>match-parent</code> qui est calculée en fonction de la <code>direction</code> du parent et qui vaut soit <code>left</code>, soit <code>right</code>", - "ja": "指定値。ただし <code>match-parent</code> 値を除く。この値は親要素の <code>direction</code> の値に基いて計算され、計算値が <code>left</code> または <code>right</code> のどちらかになる", - "ru": "как указано, кроме значения <code>match-parent</code>, которое вычисляется вместо значения его родителя <code>direction</code>, а результаты в вычисленном значении <code>left</code> или <code>right</code>" - }, - "asSpecifiedExceptPositionedFloatingAndRootElementsKeywordMaybeDifferent": { - "de": "wie der angegebene Wert, außer für positionierte und umfließende Elemente und das Wurzelelement. In beiden Fällen kann der berechnete Wert ein Schlüsselwort sein, das nicht dem angegebenen entspricht.", - "en-US": "as the specified value, except for positioned and floating elements and the root element. In both cases the computed value may be a keyword other than the one specified.", - "fr": "comme la valeur spécifiée, excepté pour les éléments positionnés et flottants, ainsi que pour l'élément racine. Dans les deux cas, la valeur calculée peut être un mot clé différent de celui spécifié.", - "ja": "指定通り。ただし位置指定された要素とフロート、ルート要素を除く。これらは計算値が指定したものと違うキーワードになる可能性があります", - "ru": "как указанное значение, кроме как для позиционированных и плавающих элементов и корневого элемента. В обоих случаях вычисляемое значение может быть ключевым словом, отличным от указанного." - }, - "asSpecifiedRelativeToAbsoluteLengths": { - "de": "relativ zur gleichen Achse der Innenabstandsbox des Scrollcontainers", - "en-US": "as specified, but with relative lengths converted into absolute lengths", - "fr": "comme spécifié, mais avec les longueurs relatives converties en longueurs absolues", - "ja": "指定通り。ただし相対的な長さはは絶対的な長さに変換される", - "ru": "как указано, но с относительной длиной, конвертируемой в абсолютные длины" - }, - "asSpecifiedURLsAbsolute": { - "de": "wie angegeben, aber mit absoluten {{cssxref(\"url\")}} Werten", - "en-US": "as specified, but with {{cssxref(\"url\")}} values made absolute", - "fr": "comme spécifié mais avec les valeurs {{cssxref(\"url\")}} rendues absolues", - "ja": "指定通り、ただし {{cssxref(\"url\")}} の値は絶対パスになる", - "ru": "как указано, но с абсолютными значениями {{cssxref(\"url\")}}" - }, - "asSpecifiedWithExceptionOfResolution": { - "de": "wie angegeben mit Ausnahme von <resolution>, das möglicherweise durch den berechneten Wert für 'snap' geändert wird", - "en-US": "as specified, except with <resolution> possibly altered by computed for 'snap' value", - "fr": "telle que spécifiée, sauf avec <resolution> éventuellement modifiée lors du calcul par la valeur 'snap'", - "ja": "指定通り、ただし <resolution> は 'snap' の値に変更されることがある", - "ru": "как указано, за исключением <resolution> может изменить значением 'snap'" - }, - "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn": { - "en-US": "as specified, with <length>s made absolute, and normal computing to zero except on multi-column elements", - "ja": "指定通りで、 <length> は絶対長になり、 normal の計算値は段組み要素を除き 0 になる" - }, - "asSpecifiedWithVarsSubstituted": { - "de": "wie angegeben, wobei Variablen ersetzt werden", - "en-US": "as specified with variables substituted", - "fr": "tel que spécifié avec les variables échangées", - "ja": "変数を代入して指定した通り" - }, - "autoForSmartphoneBrowsersSupportingInflation": { - "de": "<code>auto</code> für Smartphone Browser, die Befüllung unterstützen, <code>none</code> andererseits (und dann unveränderbar).", - "en-US": "<code>auto</code> for smartphone browsers supporting inflation, <code>none</code> in other cases (and then not modifiable).", - "fr": "<code>auto</code> pour les navigateurs de smartphones qui supportent l'expansion, <code>none</code> in dans les autres cas (non modifiable alors).", - "ja": "文字拡大に対応しているスマートフォンブラウザーならば <code>auto</code>、それ以外の場合は <code>none</code> (そして変更不可)。", - "ru": "<code>auto</code> для браузеров в смартфонах поддерживается увеличение, <code>none</code> в других случаях (и позже не изменяется)." - }, - "autoNonNegativeOrPercentage": { - "de": "<code>auto</code>, eine nicht negative Zahl oder ein Prozentwert wie angegeben", - "en-US": "<code>auto</code>, or a non-negative number or percentage as specified", - "fr": "<code>auto</code> ou un nombre positif ou nul ou un pourcentage, comme spécifié", - "ja": "<code>auto</code>、負ではない数、パーセント値の何れかで指定通り", - "ru": "<code>auto</code>, или задаётся неотрицательное число или процент, как указан" - }, - "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent": { - "de": "<code>auto</code> berechnet sich zu sich selbst bei absolut positionierten Elementen und zum berechneten Wert von {{cssxref(\"align-items\")}} des Elternelements (abzüglich veralteter Schlüsselwörter) bei allen anderen Boxen oder <code>start</code>, falls die Box kein Elternelement hat. Sein Verhalten hängt vom Layoutmodell ab, wie für {{cssxref(\"justify-self\")}} beschrieben. Ansonsten der angegebene Wert.", - "en-US": "<code>auto</code> computes to itself on absolutely-positioned elements, and to the computed value of {{cssxref(\"align-items\")}} on the parent (minus any legacy keywords) on all other boxes, or <code>start</code> if the box has no parent. Its behavior depends on the layout model, as described for {{cssxref(\"justify-self\")}}. Otherwise the specified value.", - "fr": "<code>auto</code> sera calculé comme <code>auto</code> pour les éléments positionnés de façon absolue, sera calculé comme {{cssxref(\"align-items\")}} sur le parent (excepté les mots-clés historiques utilisés) de toutes les autres boîtes ou comme <code>start</code> si la boîte n'a pas de parent. Son comportement dépend du modèle de disposition, décrit dans {{cssxref(\"justify-self\")}}, sinon ce sera la valeur spécifiée.", - "ja": "絶対位置指定要素に対しては <code>auto</code> は自分自身に対して計算し、それ以外のすべてのボックスに対しては親の {{cssxref(\"align-items\")}} の計算値 (から古いキーワードを引いた値) に計算し、親が無ければ <code>start</code> になる。この動作は {{cssxref(\"justify-self\")}} で説明したとおり、レイアウトモデルの依存する。それ以外の場合は指定された値となる。", - "ru": "при <code>auto</code> абсолютно позиционированные элементы вычисляют сами и вычисленное значение {{cssxref(\"align-items\")}} для родителя (кроме ключевых слов) на остальных блоках, или <code>start</code>, если у блока нет родителя. Его поведение зависит от модели макета, описываемой {{cssxref(\"justify-self\")}}. Иначе указанное значение." - }, - "autoOrRectangle": { - "de": "<code>auto</code>, falls als <code>auto</code> angegeben, ansonsten ein Rechteck mit vier Werten, von denen jeder <code>auto</code> ist, falls als <code>auto</code> angegeben, ansonsten die berechnete Länge", - "en-US": "<code>auto</code> if specified as <code>auto</code>, otherwise a rectangle with four values, each of which is <code>auto</code> if specified as <code>auto</code> or the computed length otherwise", - "fr": "<code>auto</code> si spécifié comme <code>auto</code>, sinon un rectangle avec quatre valeurs dont chacune vaut <code>auto</code> si elles sont spécifiées comme <code>auto</code> sinon, la longueur calculée", - "ja": "<code>auto</code> が指定されていれば <code>auto</code>、それ以外は 4 つの値をともなう矩形。矩形の場合、各値は <code>auto</code> が指定されていれば <code>auto</code>、それ以外では長さの計算値", - "ru": "<code>auto</code>, если указано как <code>auto</code>, иначе прямоугольник с четырьмя значениями, каждое из которых <code>auto</code>, если указаны как <code>auto</code> или вычисленная длина в противном случае" - }, - "basicShape": { - "de": "eine <a href=\"/de/docs/Web/CSS/shape-outside#Interpolation\" title=\"Werte des <basic-shape> CSS Datentyps interpolieren als einfache Liste. Die Listenwerte interpolieren als Länge, Prozentwert oder calc, wo möglich. Falls Listenwerte nicht einem dieser Typen entsprechen, aber identisch sind, werden diese Werte interpoliert.\">einfache Form</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/shape-outside#Interpolation\" title=\"Values of the <basic-shape> CSS data type interpolate as a simple list. The list values interpolate as length, percentage, or calc where possible. If list values are not one of those types but are identical, those values do interpolate.\">basic shape</a>", - "fr": "une <a href=\"/fr/docs/Web/CSS/shape-outside#Interpolation\" title=\"Les valeurs de type CSS <forme-basique> sont interpolées comme une liste simple. La liste de valeurs interpole la longueur, le pourcentage ou la valeur calculée. Si les valeurs de la liste ne sont pas de ces types mais sont identiques, les valeurs seront interpolées.\">forme basique (<code>basic-shape</code>)</a>", - "ja": "<a href=\"/ja/docs/Web/CSS/shape-outside#Interpolation\" title=\"CSS データ型 <basic-shape> の値は単純なリストとして補間されます。リストの値は、可能であれば長さ、パーセント値、または calc() として補間されます。リストの値がこれらの型のいずれかではなく、同じ値である場合、それらの値は補間されます。\">基本シェイプ</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/shape-outside#Interpolation\" title=\"Значения типа <базовая фигура> интерполируются как простой список. Список значений интерполируется как длина, проценты, или расчёт, где возможен. Если список значений не одинакового типа, эти значения интерполируются.\">базовая фигура</a>" - }, - "basicShapeOtherwiseNo": { - "de": "ja, wie angegeben für {{cssxref(\"basic-shape\")}}, ansonsten nein", - "en-US": "yes, as specified for {{cssxref(\"basic-shape\")}}, otherwise no", - "fr": "oui, comme spécifié pour {{cssxref(\"basic-shape\")}}, sinon, non", - "ja": "{{cssxref(\"basic-shape\")}} で指定された場合はあり、それ以外の場合はなし", - "ru": "да, как указано для {{cssxref(\"basic-shape\")}}, иначе нет" - }, - "beforeAndAfterPseudos": { - "de": "{{cssxref(\"::before\")}} und{{cssxref(\"::after\")}} <a href=\"/de/docs/Web/CSS/Pseudo-elements\">Pseudoelemente</a>", - "en-US": "{{cssxref(\"::before\")}} and {{cssxref(\"::after\")}} <a href=\"/en-US/docs/Web/CSS/Pseudo-elements\">pseudo-elements</a>", - "es": "los <a href=\"/es/docs/Web/CSS/Pseudoelementos\">pseudoelementos</a> {{cssxref(\"::before\")}} y {{cssxref(\"::after\")}}", - "fr": "<a href=\"/fr/docs/Web/CSS/Pseudo-éléments\">pseudo-éléments</a> {{cssxref(\"::before\")}} et {{cssxref(\"::after\")}} ", - "ja": "{{cssxref(\"::before\")}} / {{cssxref(\"::after\")}} <a href=\"/ja/docs/Web/CSS/Pseudo-elements\">擬似要素</a>", - "ru": "{{cssxref(\"::before\")}} и {{cssxref(\"::after\")}} <a href=\"/ru/docs/Web/CSS/Pseudo-elements\">псевдоэлементы</a>" - }, - "blockContainerElements": { - "de": "Blockcontainerelemente", - "en-US": "block container elements", - "fr": "les éléments conteneurs de blocs", - "ja": "ブロックコンテナー要素", - "ru": "блочные контейнеры" - }, - "blockContainers": { - "de": "Blockcontainer", - "en-US": "block containers", - "fr": "conteneurs de type bloc", - "ja": "ブロックコンテナー", - "ru": "блочные контейнеры" - }, - "blockContainersAndMultiColumnContainers": { - "de": "Blockcontainer und mehrspaltige Container", - "en-US": "Block containers and multi-column containers", - "ja": "ブロックコンテナーと段組みコンテナー" - }, - "blockContainersExceptMultiColumnContainers": { - "de": "Blockcontainer außer mehrspaltige Container", - "en-US": "Block containers except multi-column containers", - "ja": "段組みコンテナーを除くブロックコンテナー" - }, - "blockContainersExceptTableWrappers": { - "de": "Blockcontainer außer Tabellen umgebende Boxen", - "en-US": "Block containers except table wrapper boxes", - "ja": "表ラッパーボックスを除くブロックコンテナー" - }, - "blockContainersFlexContainersGridContainers": { - "en-US": "Block-containers, flex containers, and grid containers", - "ja": "ブロックコンテナー, フレックスコンテナー, グリッドコンテナー" - }, - "blockElementsInNormalFlow": { - "de": "Blocklevelelemente in normalem Fluss des Wurzelelements. User Agents können es auch auf andere Elemente wie <code>table-row</code>-Elemente anwenden.", - "en-US": "block-level elements in the normal flow of the root element. User agents may also apply it to other elements like <code>table-row</code> elements.", - "fr": "les éléments de bloc dans le flux normal de l'élément racine. Les agents utilisateurs peuvent également l'appliquer sur d'autres éléments comme <code>table-row</code>.", - "ja": "ルート要素の通常フロー内におけるブロックレベル要素。ユーザーエージェントは他の要素に <code>table-row</code> 要素のように適用することがあります。", - "ru": "блочные элементы в нормальном потоке родительского элемента. Браузеры могут также применять это к другим элементам типа <code>table-row</code>." - }, - "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems": { - "en-US": "block-level boxes, absolutely-positioned boxes, and grid items" - }, - "blockLevelElements": { - "de": "Blocklevel Elemente", - "en-US": "block-level elements", - "fr": "éléments de type bloc", - "ja": "ブロックレベル要素", - "ru": "блочные элементы" - }, - "blockSizeOfContainingBlock": { - "de": "Blockgröße des beinhaltenden Blocks", - "en-US": "block-size of containing block", - "fr": "la taille de bloc du bloc englobant", - "ja": "包含ブロックの block-size", - "ru": "размер блока, содержащего элемент" - }, - "boxElements": { - "de": "Boxelemente", - "en-US": "box elements", - "fr": "éléments de boîte", - "ja": "ボックス要素", - "ru": "блочные элементы" - }, - "byComputedValueType": { - "en-US": "by computed value type", - "ja": "計算値の型による" - }, - "canonicalOrder": { - "de": "Kanonische Reihenfolge", - "en-US": "Canonical order", - "fr": "Ordre canonique", - "ja": "正規順序", - "ru": "Канонический порядок", - "zh-CN": "正规顺序" - }, - "childrenOfBoxElements": { - "de": "Kindelemente von Boxelementen", - "en-US": "children of box elements", - "fr": "les éléments fils des éléments de boîte", - "ja": "ボックス要素の子", - "ru": "потомки блочных элементов" - }, - "color": { - "de": "<a href=\"/de/docs/Web/CSS/color_value#Interpolation\">Farbe</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/color_value#Interpolation\" title=\"Values of the <color> CSS data type are interpolated on each of their red, green, blue components, each handled as a real, floating-point number. Note that interpolation of colors happens in the alpha-premultiplied sRGBA color space to prevent unexpected grey colors to appear.\">color</a>", - "fr": "une <a href=\"/fr/docs/Web/CSS/color_value#Interpolation\" title=\"Les valeurs de type <couleur> sont interpolées sur chacune des composantes rouge, bleue et verte, considérées chacunes comme un nombre réel à virgule flottante. Notez que l'interpolation des couleurs a lieu dans l'espace couleur sRGBA pré-multiplié pour éviter l'apparition de teintes grises non désirées.\">couleur</a>", - "ja": "<a href=\"/ja/docs/Web/CSS/color_value#Interpolation\" title=\"CSS の <color> データ型の値は、赤、緑、青のそれぞれの値ごとに、浮動小数点の実数として扱われて補間されます。なお、アルファ事前混合 sRGBA 色空間で色の補間を行うと、予期せずに灰色が現れることがあります。\">色</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/color_value#Interpolation\" title=\"Значения типа данных CSS <цвет> интерполируются по каждой компоненте - красной, зелёной и голубой - как вещественные числа с плавающей запятой. Обратите внимание, что интерполяция цветов происходит в цветовом пространстве sRGBA, учитывающем прозрачность, для предотвращения появления неожиданных серых цветов.\">цвет</a>" - }, - "colorPlusThreeAbsoluteLengths": { - "de": "eine Farbe plus drei absolute Längen", - "en-US": "a color plus three absolute lengths", - "fr": "une couleur et trois longueurs absolues", - "ja": "色に続いて絶対的な長さ 3 つ", - "ru": "цвет плюс три абсолютных длины" - }, - "computedColor": { - "de": "berechnete Farbe", - "en-US": "computed color", - "fr": "couleur calculée", - "ja": "色の計算値", - "ru": "вычисленный цвет" - }, - "consistsOfTwoDimensionKeywords": { - "de": "Besteht aus zwei Schlüsselwörtern, einem pro Richtung", - "en-US": "Consists of two keywords, one per dimension", - "fr": "Deux mots-clés, chacun décrivant une dimension", - "ja": "2 つのキーワードから成り、方向ごとに 1 つずつ", - "ru": "Состоит из двух ключевых слов, по одному на размер" - }, - "consistsOfTwoKeywordsForOriginAndOffsets": { - "de": "Besteht aus zwei Schlüsselwörtern, die den Ursprung und die beiden Versätze vom Ursprung repräsentieren, wobei beide als absolute Länge angegeben werden (falls eine <length> angegeben wurde), ansonsten einen Prozentwert.", - "en-US": "Consists of two keywords representing the origin and two offsets from that origin, each given as an absolute length (if given a <length>), otherwise as a percentage.", - "fr": "Deux mots-clés décrivant l'origine et deux représentant les décalages par rapport à cette origine. Chaque valeur est fournie comme une longueur absolue ou comme un pourcentage.", - "ja": "原点を表す 2 つのキーワードと、その原点からの 2 つのオフセットで、それぞれが絶対的な長さ (<length> が指定された場合) またはパーセント値で指定される。", - "ru": "Состоит из двух ключевых слов, представляющих начало координат и два смещения от этого начала, каждое из которых задаётся как абсолютная длина (если задана <length>), иначе как процент" - }, - "continuous": { - "de": "fortlaufend", - "en-US": "continuous", - "fr": "continu", - "ja": "連続メディア", - "ru": "продолжительный" - }, - "createsStackingContext": { - "de": "Erstellt <a href=\"/de/docs/Web/CSS/CSS_Positioning/z_index_verstehen/Der_Stackingkontext\">Stapelkontext</a>", - "en-US": "Creates <a href=\"/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\">stacking context</a>", - "fr": "Crée un <a href=\"/fr/docs/Web/CSS/Comprendre_z-index/L'empilement_de_couches\">contexte d'empilement</a>", - "ja": "<a href=\"/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\">重ね合わせコンテキスト</a>の生成", - "ru": "Создаёт <a href=\"/ru/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\">контекст наложения</a>" - }, - "dependsOnLayoutModel": { - "de": "hängt vom Layoutmodell ab", - "en-US": "depends on layout model", - "fr": "dépend du modèle en couches", - "ja": "レイアウトモデルに依存", - "ru": "зависит от модели макета" - }, - "dependsOnUserAgent": { - "de": "hängt vom User Agent ab", - "en-US": "depends on user agent", - "fr": "dépend de l'agent utilisateur", - "ja": "ユーザエージェントに依存", - "ru": "зависит от браузера" - }, - "directChildrenOfElementsWithDisplayMozBoxMozInlineBox": { - "de": "Elemente, die direkte Kinder eines Elements mit einem CSS {{cssxref(\"display\")}} Wert von {{cssxref(\"-moz-box\")}} oder {{cssxref(\"-moz-inline-box\")}} oder {{cssxref(\"-webkit-box\")}} oder {{cssxref(\"-webkit-inline-box\")}} sind", - "en-US": "elements that are direct children of an element with a CSS {{cssxref(\"display\")}} value of {{cssxref(\"-moz-box\")}} or {{cssxref(\"-moz-inline-box\")}} or {{cssxref(\"-webkit-box\")}} or {{cssxref(\"-webkit-inline-box\")}}", - "fr": "éléments qui sont des fils direct d'un élément avec {{cssxref(\"display\")}} qui vaut {{cssxref(\"-moz-box\")}} ou {{cssxref(\"-moz-inline-box\")}} ou {{cssxref(\"-webkit-box\")}} ou {{cssxref(\"-webkit-inline-box\")}}", - "ja": "CSS の {{cssxref(\"display\")}} の値が {{cssxref(\"-moz-box\")}}, {{cssxref(\"-moz-inline-box\")}}, {{cssxref(\"-webkit-box\")}}, {{cssxref(\"-webkit-inline-box\")}} のいずれかである要素の直接の子要素", - "ru": "элементы, являющиеся прямыми потомками элемента со свойством {cssxref(\"display\")}} равным {{cssxref(\"-moz-box\")}}, {{cssxref(\"-moz-inline-box\")}}, {{cssxref(\"-webkit-box\")}} или {{cssxref(\"-webkit-inline-box\")}}" - }, - "discrete": { - "de": "diskret", - "en-US": "discrete", - "fr": "discrète", - "ja": "離散値" - }, - "eachOfShorthandPropertiesExceptUnicodeBiDiAndDirection": { - "de": "wie jede der Kurzschreibweisen Eigenschaften (alle Eigenschaften außer {{cssxref(\"unicode-bidi\")}} und {{cssxref(\"direction\")}})", - "en-US": "as each of the properties of the shorthand (all properties but {{cssxref(\"unicode-bidi\")}} and {{cssxref(\"direction\")}})", - "fr": "comme pour chaque propriété de la propriété raccourcie (toutes les propriétés sauf {{cssxref(\"unicode-bidi\")}} et {{cssxref(\"direction\")}})", - "ja": "この一括指定のそれぞれのプロパティとして ({{cssxref(\"unicode-bidi\")}} と {{cssxref(\"direction\")}}) を除いたすべてのプロパティ", - "ru": "как у каждого из подсвойств этого свойства (все свойства, кроме {{cssxref(\"unicode-bidi\")}} и {{cssxref(\"direction\")}})" - }, - "elementsWithDisplayBoxOrInlineBox": { - "de": "Elemente mit einem CSS {{cssxref(\"display\")}} Wert von <code>box</code> oder <code>inline-box</code>", - "en-US": "elements with a CSS {{cssxref(\"display\")}} value of <code>box</code> or <code>inline-box</code>", - "fr": "éléments avec {{cssxref(\"display\")}} qui vaut <code>box</code> ou <code>inline-box</code>", - "ja": "CSS の {{cssxref(\"display\")}} の値が <code>box</code> または <code>inline-box</code> である要素", - "ru": "элементы с значением свойства {{cssxref(\"display\")}} <code>box</code> или <code>inline-box</code>" - }, - "elementsWithDisplayMarker": { - "de": "Elemente mit <code>{{cssxref(\"display\")}}: marker;</code>", - "en-US": "elements with <code>{{cssxref(\"display\")}}: marker;</code>", - "fr": "éléments avec <code>{{cssxref(\"display\")}}: marker;</code>", - "ja": "<code>{{cssxref(\"display\")}}: marker;</code> の要素", - "ru": "элементы с <code>{{cssxref(\"display\")}}: marker;</code>" - }, - "elementsWithDisplayMozBoxMozInlineBox": { - "de": "Elemente mit einem CSS {{cssxref(\"display\")}} Wert von <code>-moz-box</code>, <code>-moz-inline-box</code>, <code>-webkit-box</code> oder <code>-webkit-inline-box</code>", - "en-US": "elements with a CSS {{cssxref(\"display\")}} value of <code>-moz-box</code>, <code>-moz-inline-box</code>, <code>-webkit-box</code> or <code>-webkit-inline-box</code>", - "fr": "éléments dont CSS {{cssxref(\"display\")}} vaut <code>-moz-box</code>, <code>-moz-inline-box</code>, <code>-webkit-box</code> ou <code>-webkit-inline-box</code>", - "ja": "CSS の {{cssxref(\"display\")}} の値が <code>-moz-box</code>, <code>-moz-inline-box</code>, <code>-webkit-box</code>, <code>-webkit-inline-box</code> のいずれかである要素", - "ru": "элементы со значением {{cssxref(\"display\")}}: <code>-moz-box</code>, <code>-moz-inline-box</code>, <code>-webkit-box</code> или <code>-webkit-inline-box</code>" - }, - "elementsWithOverflowNotVisibleAndReplacedElements": { - "de": "Elemente, deren {{cssxref(\"overflow\")}} nicht <code>visible</code> ist, und optional ersetzte Elemente, die Bilder oder Videos repräsentieren, und iframes", - "en-US": "elements with {{cssxref(\"overflow\")}} other than <code>visible</code>, and optionally replaced elements representing images or videos, and iframes", - "fr": "éléments dont {{cssxref(\"overflow\")}} ne vaut pas <code>visible</code> et éventuellement les éléments remplacés qui représentent des images, des vidéos ou des iframes", - "ja": "{{cssxref(\"overflow\")}} が <code>visible</code> 以外である要素、任意で画像、動画、iframe を表す置換要素", - "ru": "элементы с {{cssxref(\"overflow\")}} отличным от <code>visible</code>, и опционально заменяемые элементы представляющие собой картинки, видео и iframe" - }, - "exclusionElements": { - "en-US": "exclusion elements", - "ja": "除外要素" - }, - "filterList": { - "de": "eine <a href=\"/de/docs/Web/CSS/filter#Interpolation\" title=\"Falls beide Filter Funktionslisten gleicher Länge ohne URLs haben, wird jede der Filterfunktionen nach ihren spezifischen Regeln interpoliert. Falls sie unterschiedliche Längen haben, werden die fehlenden äquivalenten Filterfunktionen der längeren Liste unter Verwendung der Standardwerte an das Ende der kürzeren Liste angehängt, anschließend werden alle Filterfunktionen entsprechend ihrer spezifischen Regeln interpoliert. Falls ein Filter 'none' ist, wird er durch die Filterfunktionsliste der anderen unter Verwendung der Standardwerte ersetzt, anschließend werden alle Filterfunktionen entsprechend ihrer spezifischen Regeln interpoliert. Ansonsten wird diskrete Interpolation verwendet.\">Filterfunktionsliste</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/filter#Interpolation\" title=\"If both filters have a function list of same length without URL, each of their filters functions is interpolated according to its specific rules. If they have different lengths, the missing equivalent filter functions from the longer list are added to the end of the shorter list using their default values, then all filter functions are interpolated according to their specific rules. If one filter is 'none', it is replaced with the filter functions list of the other one using the filter function default values, then all filter functions are interpolated according to their specific rules. Otherwise discrete interpolation is used.\">filter function list</a>", - "fr": "une <a href=\"/fr/docs/Web/CSS/filter#Interpolation\" title=\"Si les deux filtres ont une liste de fonctions de même longueur sans URL, chaque fonction de filtre est interpolée selon les règles qui lui sont propres. Si elles sont de longueur différente, les dernières fonctions de filtre de la liste la plus longue sont ajoutées à la liste la plus courte avec leurs valeurs par défaut et ensuite, toutes les fonctions de filtre sont interpolées entre elles selon leurs règles spécifiques. Dans les autres cas, c'est une interpolation discrète qui est utilisée.\">liste de fonctions de filtre</a>", - "ja": "<a href=\"/en-US/docs/Web/CSS/filter#Interpolation\" title=\"両方のフィルターが同じ長さの関数リストを URL なしで持っている場合、 それぞれのフィルター関数はその固有の規則に従って補間されます。両者の長さが異なる場合は、 長い方のリストから欠けている等価なフィルター関数が既定値を使って短い方のリストの最後に追加され、 すべてのフィルター関数がそれぞれの規則に従って補間されます。一方のフィルターが 'none' の場合は,フィルター関数の既定値を用いてもう一方のフィルター関数のリストに置き換えられ,すべてのフィルター関数がその固有の規則に従って補間されます.それ以外の場合は,離散補間が用いられます。\">フィルター関数のリスト</a>" - }, - "firstLetterPseudoElementsAndInlineLevelFirstChildren": { - "de": "{{cssxref(\"::first-letter\")}} Pseudoelemente und Inline-Level-Elemente, die die ersten Kinder eines Blockcontainers sind", - "en-US": "{{cssxref(\"::first-letter\")}} pseudo-elements and inline-level first child of a block container", - "fr": "pseudo-éléments {{cssxref(\"::first-letter\")}} et le premier fils, en ligne (<i>inline</i>) d'un conteneur de bloc", - "ja": "{{cssxref(\"::first-letter\")}} 擬似要素と、ブロックコンテナーの最初のインラインレベルの子", - "ru": "{{cssxref(\"::first-letter\")}} псевдоэлементы и первые строчные потомки блока" - }, - "flexContainers": { - "de": "flexible Container", - "en-US": "flex containers", - "fr": "conteneurs flexibles", - "ja": "フレックスコンテナー", - "ru": "flex-контейнеры" - }, - "flexItemsAndAbsolutelyPositionedFlexContainerChildren": { - "de": "flexible Elemente und absolut positionierte Flexcontainerkinder", - "en-US": "flex items and absolutely-positioned flex container children", - "fr": "éléments flexibles, ainsi que les enfants absolument positionnés de conteneurs flexibles", - "ja": "フレックスアイテムおよび絶対位置指定されたフレックスコンテナーの子", - "ru": "flex-элементы и абсолютно-позицированые потомки flex-контейнера" - }, - "flexItemsAndInFlowPseudos": { - "de": "flexible Elemente einschließlich In-Flow-Pseudo-Elemente", - "en-US": "flex items, including in-flow pseudo-elements", - "fr": "éléments flexibles, y compris les pseudo-éléments intégrés dans le flux", - "ja": "フロー内の擬似要素を含むフレックスアイテム", - "ru": "flex-элементы, в том числе в потоке псевдоэлементов" - }, - "flexItemsGridItemsAbsolutelyPositionedContainerChildren": { - "en-US": "Flex items, grid items, and absolutely-positioned flex and grid container children", - "ja": "フレックスアイテム、グリッドアイテム、フレックスおよびグリッドコンテナーの絶対位置指定の子", - "ru": "flex-элементы, grid-элементы и абсолютно спозиционированные потомки flex- и grid-контейнеров" - }, - "flexItemsGridItemsAndAbsolutelyPositionedBoxes": { - "en-US": "flex items, grid items, and absolutely-positioned boxes", - "ja": "フレックスアイテム、グリッドアイテム、絶対位置指定のボックス" - }, - "floats": { - "de": "Flusselemente", - "en-US": "floats", - "fr": "flottants", - "ja": "浮動要素", - "ru": "плавает" - }, - "fontStretch": { - "de": "<a href=\"/de/docs/Web/CSS/font-stretch#Interpolation\">Schriftbreite</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/font-stretch#Interpolation\" title=\"Font stretch values are interpolated in discrete steps. The interpolation happens as though the ordered values are equally spaced real numbers; the result is rounded to the nearest value, with values exactly halfway between two values rounded towards the later value, that is the most expanded one.\">font stretch</a>", - "fr": "une <a href=\"/fr/docs/Web/CSS/font-stretch#Interpolation\" title=\"Les valeurs de font stretch sont interpolées de façon discrète. L'interpolation s'effectue comme si les valeurs, dans l'ordre, étaient des nombres également distribués : le résultat est arrondi à la valeur la plus proche, les valeurs situées exactement entre deux valeurs sont arrondies à la valeur supérieure.\"><code>font stretch</code></a>", - "ja": "<a href=\"/ja/docs/Web/CSS/font-stretch#Interpolation\" title=\"フォントの伸張値は、離散的な段階で補間されます。補間は、順序づけられた値が等間隔の実数であるかのように行われます。結果は、最も近い値に丸められ、 2 つの値のちょうど中間の値は、最も拡張された値である後の値に向かって丸められます。\">フォントの伸長値</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/font-stretch#Interpolation\" title=\"Значения ширины начертания шрифта интерполируются по дискретным шагам. Интерполяция происходит по упорядоченно расположенным значениям в пространстве действительных чисел; результат округляется к ближайшему значению, точно между двумя соседними значениями, округляется в сторону большего значения, которое является наиболее широким.\">ширина начертания шрифта</a>" - }, - "fontWeight": { - "de": "<a href=\"/de/docs/Web/CSS/font-weight#Interpolation\">Schriftgewichtung</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/font-weight#Interpolation\" title=\"Font weight values are interpolated via discrete steps (multiples of 100). The interpolation happens in real number space and is converted to an integer by rounding to the nearest multiple of 100, with values halfway between multiples of 100 rounded towards positive infinity.\">font weight</a>", - "fr": "une <a href=\"/fr/docs/Web/CSS/font-weight#Interpolation\" title=\"Les valeurs de graisse de police sont interpolées via des étapes discrètes (multiple de 100). L'interpolation a lieu dans un espace de nombres réels et est convertis en un entier arroundi au plus proche multiple de 100, avec les valeurs à mis chemin entre les multiples de 100, arrondies vers l'infini positif.\">graisse de police</a>", - "ja": "<a href=\"/ja/docs/Web/CSS/font-weight#Interpolation\" title=\"フォントの太さは、離散的な段階 (100 の倍数) で補間されます。補間は実数空間で行われ、 100 の倍数に最も近い倍数に丸めて整数に変換され、 100 の倍数の中間の値は正の無限大に向けて丸められます。\">フォントの太さ</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/font-weight#Interpolation\" title=\"Значения жирности шрифта интерполируются через целое число дискретных шагов (умноженных на 100). Интерполяция происходит в пространстве действительных чисел, а получившееся значение преобразуется в целое путём округления до ближайшей сотни, со значениями точно между соседними множителями, округляемыми в сторону положительной бесконечности.\">жирность шрифта</a>" - }, - "forLengthAbsoluteValueOtherwisePercentage": { - "de": "for {{xref_csslength}} the absolute value, otherwise a percentage", - "en-US": "for {{xref_csslength}} the absolute value, otherwise a percentage", - "fr": "pour une valeur de type {{xref_csslength}} sa valeur absolue, sinon un pourcentage", - "ja": "{{xref_csslength}} の場合は絶対的な値、それ以外の場合はパーセント値", - "ru": "для {{xref_csslength}} абсолютное значение, иначе процент" - }, - "gridContainers": { - "de": "Gridcontainer", - "en-US": "grid containers", - "fr": "conteneurs de grille", - "ja": "グリッドコンテナー", - "ru": "сеточные контейнеры" - }, - "gridContainersWithMasonryLayout": { - "en-US": "Grid containers with masonry layout", - "ja": "マソンリーレイアウトのグリッドコンテナー" - }, - "gridContainersWithMasonryLayoutInTheirBlockAxis": { - "en-US": "Grid containers with masonry layout in their block axis", - "ja": "ブロック軸がマソンリーレイアウトのグリッドコンテナー" - }, - "gridContainersWithMasonryLayoutInTheirInlineAxis": { - "en-US": "Grid containers with masonry layout in their inline axis", - "ja": "インライン軸がマソンリーレイアウトのグリッドコンテナー" - }, - "gridItemsAndBoxesWithinGridContainer": { - "de": "Gridelemente und absolut positionierte Boxen, deren beinhaltender Block ein Gridcontainer ist", - "en-US": "grid items and absolutely-positioned boxes whose containing block is a grid container", - "fr": "éléments de grilles et boîtes positionnées de façon absolue dont le bloc englobant est un conteneur de grille", - "ja": "包含ブロックがグリッドコンテナーであるグリッドアイテムまたは絶対位置指定のボックス", - "ru": "элементы сетки и абсолютно-позиционированные блоки, находящиеся в сеточном контейнере" - }, - "iframeElements": { - "en-US": "iframe elements", - "ja": "iframe 要素" - }, - "images": { - "de": "Bilder", - "en-US": "images", - "fr": "images", - "ja": "画像", - "ru": "изображения" - }, - "inFlowBlockLevelElements": { - "de": "in-flow block-level Elemente", - "en-US": "in-flow block-level elements", - "fr": "éléments de type bloc participant au flux", - "ja": "フロー内のブロックレベル要素", - "ru": "блочные элементы в потоке" - }, - "inFlowChildrenOfBoxElements": { - "de": "Flusskindelemente von Boxelementen", - "en-US": "in-flow children of box elements", - "fr": "les éléments fils dans le flux des éléments de boîte", - "ja": "フロー内のボックス要素の子", - "ru": "потомки блочных элементов в потоке" - }, - "inlineAxisHorizontalInXUL": { - "de": "<code>inline-axis</code> (<code>horizontal</code> in <a href=\"/de/docs/Mozilla/Tech/XUL\">XUL</a>)", - "en-US": "<code>inline-axis</code> (<code>horizontal</code> in <a href=\"/en-US/docs/Mozilla/Tech/XUL\">XUL</a>)", - "fr": "<code>inline-axis</code> (<code>horizontal</code> en <a href=\"/fr/docs/Mozilla/Tech/XUL\">XUL</a>)", - "ja": "<code>inline-axis</code> (<a href=\"/ja/docs/Mozilla/Tech/XUL\">XUL</a> における <code>horizontal</code>)", - "ru": "<code>inline-axis</code> (<code>horizontal</code> в <a href=\"/ru/docs/Mozilla/Tech/XUL\">XUL</a>)" - }, - "inlineLevelAndTableCellElements": { - "de": "Inline- und table-cell Elemente", - "en-US": "inline-level and table-cell elements", - "fr": "éléments en ligne et à ceux qui sont des cellules de tableau", - "ja": "インラインレベルおよびテーブルセル要素", - "ru": "строчным элементам и ячейкам таблиц" - }, - "inlineSizeOfContainingBlock": { - "de": "Inlinegröße des beinhaltenden Blocks", - "en-US": "inline-size of containing block", - "fr": "la taille en ligne du bloc englobant", - "ja": "包含ブロックの inline-size", - "ru": "встроенный размер содержащего блока" - }, - "integer": { - "de": "<a href=\"/de/docs/Web/CSS/integer#Interpolation\">Integer</a>", - "en-US": "an <a href=\"/en-US/docs/Web/CSS/integer#Interpolation\" title=\"Values of the <integer> CSS data type are interpolated via integer discrete steps. The calculation is done as if they were real, floating-point numbers and the discrete value is obtained using the floor function.\">integer</a>", - "fr": "un <a href=\"/fr/docs/Web/CSS/integer#Interpolation\" title=\"Les valeurs du type <entier> sont interpolées par incrémentation discrète. Le calcul est réalisé comme si les valeurs étaient des nombres réels, en virgule flottante et la valeur discrète est obtenue en utilisant la fonction partie entière.\">entier</a>", - "ja": "<a href=\"/ja/docs/Web/CSS/integer#Interpolation\" title=\"CSS のデータ型 <integer> の値は整数の離散ステップで補間される。実数の浮動小数点数であるかのように計算され、 floor 関数を用いて離散値が取得される。\">integer</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/integer#Interpolation\" title=\"Значения типа данных CSS <целое число> интерполируются через целое число дискретных шагов. Вычисления производятся словно над вещественными числами с плавающей запятой, а дискретные значения получаются с использованием функции floor.\">целое число</a>" - }, - "interactive": { - "de": "interaktiv", - "en-US": "interactive", - "fr": "interactif", - "ja": "対話的", - "ru": "интерактивный" - }, - "invertForTranslucentColorRGBAOtherwiseRGB": { - "de": "Für das Schlüsselwort <code>invert</code> ist der berechnete Wert <code>invert</code>. Für den Farbwert, falls der Wert durchscheinend ist, ist der berechnete Wert der entsprechende <code>rgba()</code> Wert. Falls nicht, ist er der entsprechende <code>rgb()</code> Wert. Das Schlüsselwort <code>transparent</code> wird zu <code>rgba(0,0,0,0)</code>.", - "en-US": "For the keyword <code>invert</code>, the computed value is <code>invert</code>. For the color value, if the value is translucent, the computed value will be the <code>rgba()</code> corresponding one. If it isn't, it will be the <code>rgb()</code> corresponding one. The <code>transparent</code> keyword maps to <code>rgba(0,0,0,0)</code>.", - "fr": "Pour le mot-clé <code>invert</code>, la valeur calculée est <code>invert</code>. Pour la valeur de la couleur, si la valeur est transparente, la valeur calculée sera la valeur <code>rgba()</code> correspondante. S'il n'y en a pas, ce sera la valeur <code>rgb()</code> correspondante. Le mot-clé <code>transparent</code> correspondra à <code>rgba(0,0,0,0)</code>.", - "ja": "キーワード <code>invert</code> の場合は、計算値も <code>invert</code>。色の場合は、半透明であれば、計算値はそれに一致する <code>rbga()</code> で、不透明であれば、それに一致する <code>rgb()</code>。キーワード <code>transparent</code> は <code>rgba(0,0,0,0)</code> に対応付けられる。", - "ru": "Для ключевого слова <code>invert</code>, значение - <code>invert</code>. Для значения цвета, если значение имеет прозрачность, соответственно, значение будет через <code>rgba()</code>. Если это не так, это будет <code>rgb()</code>. Ключевое слово <code>transparent</code> отображается, как <code>rgba(0,0,0,0)</code>." - }, - "invertOrCurrentColor": { - "de": "<code>invert</code> für Browser, die es unterstützen, <code>currentColor</code> für die anderen", - "en-US": "<code>invert</code>, for browsers supporting it, <code>currentColor</code> for the other", - "fr": "<code>invert</code>, pour les navigateurs le supportant, <code>currentColor</code> pour les autres", - "ja": "ブラウザーが対応していれば <code>invert</code>、そうでなければ <code>currentColor</code>", - "ru": "<code>invert</code> для браузеров поддерживающих это, <code>currentColor</code> для остальных" - }, - "keywordOrNumericalValueBolderLighterTransformedToRealValue": { - "de": "das Schlüsselwort oder der numerische Wert wie angegeben, wobei <code>bolder</code> und <code>lighter</code> in einen realen Wert umgewandelt werden", - "en-US": "the keyword or the numerical value as specified, with <code>bolder</code> and <code>lighter</code> transformed to the real value", - "fr": "le mot-clé ou la valeur numérique, comme spécifié, transformé en la valeur réelle avec <code>bolder</code> et <code>lighter</code>", - "ja": "指定された通りのキーワードまたは数値であり、 <code>bolder</code> および <code>lighter</code> は実数に変換される", - "ru": "ключевое слово или числовое значение, с <code>bolder</code> и <code>lighter</code>, трансформируемися в действительное значение" - }, - "keywordPlusIntegerIfDigits": { - "de": "angegebenes Schlüsselwort plus Ganzzahl, falls 'digits'", - "en-US": "specified keyword, plus integer if 'digits'", - "fr": "le mot-clé spécifié suivi d'un entier si 'digits'", - "ja": "指定されたキーワード、'digits' の場合は続けて整数", - "ru": "указанное ключевое слово, плюс целые числа, если цифры" - }, - "length": { - "de": "<a href=\"/de/docs/Web/CSS/length#Interpolation\">Längenangabe</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/length#Interpolation\" title=\"Values of the <length> CSS data type are interpolated as real, floating-point numbers.\">length</a>", - "fr": "une <a href=\"/fr/docs/Web/CSS/longueur#Interpolation\" title=\"Les valeurs du type <longueur> sont interpolées comme des nombres réels à virgule flottante.\">longueur</a>", - "ja": "<a href=\"/ja/docs/Web/CSS/length#Interpolation\" title=\"CSS の <length> データ型の値は、実数すなわち浮動小数点数として補間されます。\">length</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/length#Interpolation\" title=\"Значения типа данных CSS <длина> интерполируются как вещественные числа с плавающей запятой.\">длина</a>" - }, - "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto": { - "de": "falls als Länge angegeben, die zugehörige absolute Länge; falls als Prozentwert angegeben, der angegebene Wert; ansonsten <code>auto</code>", - "en-US": "if specified as a length, the corresponding absolute length; if specified as a percentage, the specified value; otherwise, <code>auto</code>", - "fr": "si spécifié par une longueur, la valeur absolue correspondante; si spécifié par un pourcentage, la valeur telle que spécifiée; sinon, <code>auto</code>", - "ja": "長さで指定されると相当する絶対的な長さ、パーセント値として指定されると指定値、それ以外では <code>auto</code>", - "ru": "если указано как длина - абсолютная длина; если указано как проценты - заданное значение; в противном случае <code>auto</code>" - }, - "lengthOrPercentageBeforeKeywordIfBothPresent": { - "de": "die Länge oder der Prozentwert vor dem Schlüsselwort, falls beide vorhanden sind", - "en-US": "the length or percentage before the keyword, if both are present", - "fr": "la longueur ou le pourcentage avant le mot-clé si les deux sont présents", - "ja": "両方がある場合は、キーワードの前に長さまたはパーセント値", - "ru": "длина или проценты перед ключевым словом, если присутствуют оба" - }, - "lengthOrPercentageBeforeKeywords": { - "de": "Die Länge oder der Prozentwert vor den Schlüsselwörtern, falls beide angegeben wurden. Falls mehrere Schlüsselwörter angegeben wurden, erscheinen sie in derselben Reihenfolge, wie in der formellen Grammatik angegeben.", - "en-US": "The length or percentage before the keywords, if both are present. If several keywords are present, they appear in the same order as their appearance in the formal grammar.", - "fr": "La longueur ou le pourcentage avant les mots-clés, si les deux sont présents. Si plusieurs mots-clés sont présents, ils apparaissent dans le même ordre que dans la grammaire formelle.", - "ja": "両方がある場合は、キーワードの前に長さまたはパーセント値。複数のキーワードがある場合は、形式文法での出現順と同じ順序で現れる。", - "ru": "Длина или процент до ключевых слов, если присутствуют оба. Если присутствуют несколько ключевых слов, они появляются в том же порядке, как и в формальной грамматике." - }, - "lengthsAsPercentages": { - "en-US": "The lengths may be specified as percentages" - }, - "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin": { - "de": "Eine Liste, bei der jeder Eintrag aus einem Versatz besteht, der durch eine Kombination aus absoluter Länge und einem Prozentsatz plus einem Ursprungsschlüsselwort definiert wird", - "en-US": "A list, each item consisting of: an offset given as a combination of an absolute length and a percentage, plus an origin keyword", - "fr": "Une liste dont chaque élément se compose d'un décalage (exprimé comme la combinaison d'une longueur absolue et d'un pourcentage) et d'un mot-clé pour l'origine", - "ja": "絶対長とパーセント値の組み合わせで与えられるオフセットと原点のキーワードを、各項目として構成されるリスト。", - "ru": "Список, каждый элемент которого состоит из: смещения, данного комбинацией абсолютной длины и процентов плюс ключевое слово" - }, - "listEachItemHasTwoKeywordsOnePerDimension": { - "de": "eine Liste, wobei jedes Element aus zwei Schlüsselwörtern besteht, eins pro Dimension", - "en-US": "a list, each item consisting of two keywords, one per dimension", - "fr": "une liste dont chaque élément consiste en deux mots-clé, un par dimension", - "ja": "1 つの方向につき 2 つのキーワードで構成される項目のリスト", - "ru": "список, каждый элемент которого содержит 2 ключевых слова, по одному на размер" - }, - "listEachItemTwoKeywordsOriginOffsets": { - "de": "a list, each item consisting of two keywords representing the origin undtwo offsets from that origin, each given as an absolute length (if given a {{xref_csslength}}), otherwise as a percentage", - "en-US": "a list, each item consisting of two keywords representing the origin and two offsets from that origin, each given as an absolute length (if given a {{xref_csslength}}), otherwise as a percentage", - "fr": "une liste dont chaque élément consiste en deux mots-clé représentant l'origine et deux offsets depuis cette origine, chacun étant une longueur absolue (si spécifié comme une {{xref_csslength}}), ou un pourcentage", - "ja": "それぞれの項目が原点を表す 2 つのキーワードおよびその原点からの 2 つのオフセット値であるリストであり、それぞれが絶対的な長さ ({{xref_csslength}} が与えられた場合) またはパーセント値で与えられる", - "ru": "список, каждый элемент которого состоит из двух ключевых слов, представляющих начало координат и два смещения от этого начала, каждое из которых задаётся абсолютной длиной (если дано {{xref_csslength}}), иначе как проценты" - }, - "listItems": { - "de": "Listenelemente", - "en-US": "list items", - "fr": "éléments de liste", - "ja": " リスト項目", - "ru": "список элементов" - }, - "listSeparator": { - "de": ", ", - "en-US": ", ", - "fr": ", ", - "ja": "、", - "ru": ", " - }, - "logicalHeightOfContainingBlock": { - "de": "logische Höhe des beinhaltenden Blocks", - "en-US": "logical-height of containing block", - "fr": "hauteur logique du bloc englobant", - "ja": "包含ブロックの論理的な高さ", - "ru": "логическая высота контейнера" - }, - "logicalWidthOfContainingBlock": { - "de": "logische Breite des beinhaltenden Blocks", - "en-US": "logical-width of containing block", - "fr": "largeur logique du bloc englobant", - "ja": "包含ブロックの論理的な幅", - "ru": "логическая высота содержащего блока" - }, - "logicalHeightOrWidthOfContainingBlock": { - "en-US": "relative to the containing block’s size in the corresponding axis (e.g. width for left or right, height for top or bottom)", - "ru": "относительно размера содержащего блока на соответствующей оси (например, ширина слева или справа, высота сверху и снизу)" - }, - "lpc": { - "de": "$1$, <a href=\"/de/docs/Web/CSS/percentage#Interpolation\">Prozentsatz</a> oder <a href=\"/de/docs/Web/CSS/calc\"><code>calc()</code></a>;", - "en-US": "$1$, <a href=\"/en-US/docs/Web/CSS/percentage#Interpolation\" title=\"Values of the <percentage> CSS data type are interpolated as real, floating-point numbers.\">percentage</a> or calc();", - "fr": "$1$, <a href=\"/fr/docs/Web/CSS/percentage#Interpolation\" title=\"Les valeurs du type <pourcentage> sont interpolées comme des nombres réels à virgule flottante.\">pourcentage</a> ou calc() ;", - "ja": "$1$ または <a href=\"/ja/docs/Web/CSS/percentage#Interpolation\" title=\"CSS データ型の <percentage> の値は、実数の浮動小数点数として補間されます。\">パーセント値</a>, calc();", - "ru": "$1$, <a href=\"/ru/docs/Web/CSS/percentage#Interpolation\" title=\"Значения типа данных CSS <проценты> интерполируются как вещественные числа с плавающей запятой.\">проценты</a> или calc();" - }, - "lpcNote": { - "de": " wenn beides Längenwerte sind, werden sie als Längenwerte gehandhabt. Wenn beides Prozentsätze sind, werden sie als Prozentsätze gehandhabt. Ansonsten werden beide Werte wie in einer <code>calc()</code> Funktion addiert (Wird ggf. zu Null). Und bei diesen <code>calc()</code> Funktionen wird jede Hälfte als Realzahl interpoliert. ", - "en-US": " when both values are lengths, they are interpolated as lengths; when both values are percentages, they are interpolated as percentages; otherwise, both values are converted into a <code>calc()</code> function that is the sum of a length and a percentage (each possibly zero), and these <code>calc()</code> functions have each half interpolated as real numbers. ", - "fr": " quand les deux valeurs sont des longueurs, elles sont interpolées comme des longueurs ; quand les deux valeurs sont des pourcentages, elles sont interpolées comme des pourcentages ; sinon, les deux valeurs sont converties dans une fonction <code>calc()</code> qui est la somme d'une longueur et d'un pourcentage (chaque valeur pouvant être à zéro), et cette fonction <code>calc()</code> interpole chaque moitié comme un nombre réel. ", - "ja": "両方の値が length の場合は、length 値として補完されます。両方の値がパーセント値の場合は、パーセント値として補完されます。それ以外の場合は、両方の値が calc() 関数にコンバートされ、length とパーセント値の合計になります (または各値が 0)。そして、これらの <code>calc()</code> 関数は、それぞれ半分ずつ補完された実数を持ちます", - "ru": " когда оба значения являются длинами, они интерполируются как длины; когда оба значения являются процентами, они интерполируются как проценты; в остальных случаях, оба значения преобразуются функцией <code>calc()</code> в сумму длины и процента (каждый из них может быть равен нулю), а затем эта функция интерполирует каждую половину как вещественные числа." - }, - "mapToRange0To1": { - "en-US": "map to the range <code>[0,1]</code>" - }, - "maskElements": { - "de": "{{SVGElement(\"mask\")}} Elemente", - "en-US": "{{SVGElement(\"mask\")}} elements", - "fr": "les éléments {{SVGElement(\"mask\")}}", - "ja": "{{SVGElement(\"mask\")}} 要素", - "ru": "{{SVGElement(\"mask\")}} элементы" - }, - "maxZoomFactor": { - "en-US": "The largest allowed zoom factor. A zoom factor of 100% corresponds to no zooming. Larger values zoom in. Smaller values zoom out.", - "ja": "許可されている最大の拡大率。拡大率は 100% がズームなしに対応します。より大きな値でズームインします。より小さな値でズームアウトします。" - }, - "media": { - "de": "Medien", - "en-US": "Media", - "fr": "Média", - "ja": "メディア", - "pt-BR": "Midia", - "ru": "Отображение", - "zh-CN": "适用媒体" - }, - "minZoomFactor": { - "en-US": "The smallest allowed zoom factor. A zoom factor of 100% corresponds to no zooming. Larger values zoom in. Smaller values zoom out.", - "ja": "許可されている最小の拡大率。拡大率は 100% がズームなしに対応します。より大きな値でズームインします。より小さな値でズームアウトします。" - }, - "multicolElements": { - "de": "mehrspaltige Elemente", - "en-US": "multicol elements", - "fr": "éléments sur plusieurs colonnes", - "ja": "段組み要素", - "ru": "мультиколоночные элементы" - }, - "multiColumnElementsFlexContainersGridContainers": { - "en-US": "multi-column elements, flex containers, grid containers", - "ja": "段組み要素、フレックスコンテナー、グリッドコンテナー" - }, - "multilineFlexContainers": { - "de": "mehrzeilige flexible Container", - "en-US": "multi-line flex containers", - "fr": "conteneurs flexibles multi-lignes", - "ja": "複数行のフレックスコンテナー", - "ru": "мультистрочные flex-контейнеры" - }, - "no": { - "de": "Nein", - "en-US": "no", - "fr": "non", - "ja": "なし", - "pt-BR": "não", - "ru": "нет", - "zh-CN": "否" - }, - "noneButOverriddenInUserAgentCSS": { - "de": "<code>none</code> (aber dieser Wert wird im User Agent CSS überschrieben)", - "en-US": "<code>none</code> (but this value is overridden in the user agent CSS)", - "fr": "<code>none</code> (cette valeur est surchargée par le CSS de l'agent utilisateur)", - "ja": "<code>none</code> (ただし、この値はユーザーエージェント CSS で上書きされる)", - "ru": "<code>none</code> (но это значение перезаписано в дефолтном CSS браузера)" - }, - "noneOrImageWithAbsoluteURI": { - "de": "<code>none</code> oder das Bild mit absoluter URI", - "en-US": "<code>none</code> or the image with its URI made absolute", - "fr": "<code>none</code> ou l'image avec son URI rendue absolue", - "ja": "<code>none</code> または画像の絶対化した URI", - "ru": "<code>none</code> или изображение с абсолютным URI" - }, - "nonReplacedBlockAndInlineBlockElements": { - "de": "nicht ersetzte Blocklevel Elemente und nicht ersetzte Inlineblock Elemente", - "en-US": "non-replaced block-level elements and non-replaced inline-block elements", - "fr": "les éléments de bloc non remplacés et les éléments en bloc en ligne et en bloc (inline-block)", - "ja": "非置換ブロックレベル要素と非置換インラインブロック要素", - "ru": "не заменяемые блочные и inline-block элементы" - }, - "nonReplacedBlockElements": { - "de": "Nicht ersetzte <code>block</code>-Elemente (außer <code>table</code>-Elemente), <code>table-cell</code>- oder <code>inline-block</code>-Elemente", - "en-US": "non-replaced <code>block</code> elements (except <code>table</code> elements), <code>table-cell</code> or <code>inline-block</code> elements", - "fr": "éléments non-remplacés de type <code>block</code> ou <code>table</code>, ou éléments de type <code>table-cell</code> ou <code>inline-block</code>", - "ja": "非置換ブロック要素 (<code>table</code> 要素を除く)、<code>table-cell</code> 要素、<code>inline-block</code> 要素のいずれか", - "ru": "не заменяемые блочные элементы (кроме элементов <code>table</code>), <code>table-cell</code> или <code>inline-block</code> элементы" - }, - "nonReplacedElements": { - "en-US": "non-replaced elements", - "ja": "置換要素以外" - }, - "nonReplacedInlineElements": { - "de": "nicht ersetzte Inlineelemente", - "en-US": "non-replaced inline elements", - "fr": "les éléments en ligne non remplacés", - "ja": "置換でないインライン要素", - "ru": "не заменяемые строчные элементы" - }, - "noPracticalInitialValue": { - "de": "Es gibt keinen praktischen Initialwert dafür.", - "en-US": "There is no practical initial value for it.", - "fr": "Il n'y a pas de valeur initiale pour cela.", - "ja": "具体的な初期値なし。", - "ru": "На практике начального значения нет" - }, - "noPracticalMedia": { - "de": "Es gibt kein praktisches Medium dafür.", - "en-US": "There is no practical media for it.", - "fr": "Il n'y a pas de média pour cela.", - "ja": "具体的なメディアなし。", - "ru": "Для этого нет практического применения." - }, - "normalizedAngle": { - "de": "normalisierter Winkel", - "en-US": "normalized angle", - "fr": "angle normalisé", - "ja": "正規化された角度", - "ru": "нормализованный угол" - }, - "normalOnElementsForPseudosNoneAbsoluteURIStringOrAsSpecified": { - "de": "Bei Elementen ist der berechnete Wert immer <code>normal</code>. Falls bei {{cssxref(\"::before\")}} und {{cssxref(\"::after\")}} <code>normal</code> angegeben ist, ist der berechnete Wert <code>none</code>. Ansonsten, für URI Werte die absolute URI; für <code>attr()</code> Werte der resultierende String; für andere Schlüsselwörter wie angegeben.", - "en-US": "On elements, always computes to <code>normal</code>. On {{cssxref(\"::before\")}} and {{cssxref(\"::after\")}}, if <code>normal</code> is specified, computes to <code>none</code>. Otherwise, for URI values, the absolute URI; for <code>attr()</code> values, the resulting string; for other keywords, as specified.", - "fr": "Sur les éléments, le résultat du calcul est toujours <code>normal</code>. Sur {{cssxref(\"::before\")}} et {{cssxref(\"::after\")}}, si <code>normal</code> est spécifié, cela donnera <code>none</code>. Sinon, pour les valeurs d'URI, on aura l'URI absolue ; pour les valeurs <code>attr()</code>, on aura la chaine résultante ; pour les autres mots-clé, ce sera comme spécifié.", - "ja": "要素の場合は、常に <code>normal</code> と計算される。 {{cssxref(\"::before\")}} および {{cssxref(\"::after\")}} の場合、 <code>normal</code> が指定されていれば計算値は <code>none</code>。それ以外の場合、 URI 値の場合は絶対 URI、 <code>attr()</code> 値の場合は結果の文字列、その他のキーワードについては指定通り。", - "ru": "На элементах всегда вычисляется как <code>normal</code>. На {{cssxref(\"::before\")}} и {{cssxref(\"::after\")}}, если <code>normal</code> указано, интерпретируется как <code>none</code>. Иначе, для значений URI, абсолютного URI; для значений <code>attr()</code> - результирующая строка; для других ключевых слов, как указано." - }, - "notAnimatable": { - "en-US": "Not animatable", - "ja": "アニメーション不可" - }, - "number": { - "de": "<a href=\"/de/docs/Web/CSS/number#Interpolation\">Nummer</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/number#Interpolation\" title=\"Values of the <number> CSS data type are interpolated as real, floating-point, numbers.\">number</a>", - "fr": "un <a href=\"/fr/docs/Web/CSS/nombre#Interpolation\" title=\"Les valeurs du type <nombre> sont interpolées comme des nombres réels, en virgule flottante.\">nombre</a>", - "ja": "<a href=\"/ja/docs/Web/CSS/number#Interpolation\" title=\"<number> の CSS データ型の値は浮動小数点数の実数として補完されます。\">数値</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/number#Interpolation\" title=\"Значения типа данных CSS <число> интерполируются как вещественные числа с плавающей запятой.\">число</a>" - }, - "numberOrLength": { - "en-US": "either number or length", - "ja": "数値または長さ", - "ru": "число или длина" - }, - "oneOrTwoValuesLengthAbsoluteKeywordsPercentages": { - "de": "Einer oder mehrere Werte, mit absolut gemachten Längen und Schlüsselwörtern zu Prozentwerten umgewandelt", - "en-US": "One or two values, with length made absolute and keywords translated to percentages", - "fr": "Une ou deux valeurs, avec la longueur en absolue et les mots-clés traduits en pourcentage", - "ru": "Одно или два значения, с абсолютной длинной и ключевыми словами, переведёнными в проценты" - }, - "oneToFourPercentagesOrAbsoluteLengthsPlusFill": { - "de": "ein bis vier Prozentwert(e) (wie angegeben) oder absolute Länge(n) plus das Schlüsselwort <code>fill</code>, falls angegeben", - "en-US": "one to four percentage(s) (as specified) or absolute length(s), plus the keyword <code>fill</code> if specified", - "fr": "un à quatre pourcentages, comme spécifiés, ou des longueurs absolues, suivis par le mot-clé <code>fill</code> si spécifié", - "ja": "1 つから 4 つのパーセント値 (指定通り) または絶対的な長さ。指定されていれば続けてキーワード <code>fill</code>", - "ru": "одно к четырём процентам (как указано) или абсолютной длине(ам), плюс ключевое слово <code>fill</code>, если указано" - }, - "optimumMinAndMaxValueOfAbsoluteLengthPercentageOrNormal": { - "de": "ein optimaler, minimaler und maximaler Wert, jeder bestehend aus entweder einer absoluten Länge, einem Prozentwert oder dem Schlüsselwort <code>normal</code>", - "en-US": "an optimum, minimum, and maximum value, each consisting of either an absolute length, a percentage, or the keyword <code>normal</code>", - "fr": "trois valeurs, optimale, minimale et maximale, chacune consitant en une longueur absolue, un pourcentage ou le mot-clé <code>normal</code>", - "ja": "それぞれ絶対指定の length、percentage、キーワード <code>normal</code>のいずれかである、最適値、最小値、最大値", - "ru": "оптимальное, минимальное и максимальное значения, каждое из которых абсолютная длина, проценты или ключевое слово <code>normal</code>" - }, - "optimumValueOfAbsoluteLengthOrNormal": { - "de": "ein optimaler Wert, der entweder aus einer absoluten Länge oder dem Schlüsselwort <code>normal</code> besteht", - "en-US": "an optimum value consisting of either an absolute length or the keyword <code>normal</code>", - "fr": "une valeur optimale consistant en une longueur absolue ou <code>normal</code>", - "ja": "絶対的な長さまたはキーワード <code>normal</code> のどちらかから成る最適値", - "ru": "оптимальное значение состоит из абсолютной длины или ключевого слова <code>normal</code>" - }, - "orderOfAppearance": { - "de": "Reihenfolge des Auftretens in der formalen Grammatik der Werte", - "en-US": "order of appearance in the formal grammar of the values", - "fr": "l'ordre d'apparition dans la grammaire formelle des valeurs", - "ja": "形式文法における値の出現順", - "ru": "порядок появления в формальной грамматике значений" - }, - "percentageAsSpecifiedAbsoluteLengthOrNone": { - "de": "der Prozentwert wie angegeben oder die absolute Länge oder <code>none</code>", - "en-US": "the percentage as specified or the absolute length or <code>none</code>", - "fr": "le pourcentage comme spécifié ou la longueur absolue ou le mot-clé <code>none</code>", - "ja": "指定されたパーセント値または絶対的な長さ、または <code>none</code>", - "ru": "проценты, как указаны, абсолютная длина или <code>none</code>" - }, - "percentageAsSpecifiedOrAbsoluteLength": { - "de": "der Prozentwert wie angegeben oder die absolute Länge", - "en-US": "the percentage as specified or the absolute length", - "fr": "le pourcentage tel que spécifié ou une longueur absolue", - "ja": "指定されたパーセント値または絶対的な長さ", - "ru": "процент, как указан, или абсолютная длина" - }, - "percentageAutoOrAbsoluteLength": { - "de": "ein Prozentwert oder <code>auto</code> oder die absolute Länge", - "en-US": "a percentage or <code>auto</code> or the absolute length", - "fr": "un pourcentage ou <code>auto</code> ou une longueur absolue", - "ja": "パーセント値、 <code>auto</code>、絶対的な長さのいずれか", - "ru": "процент, <code>auto</code> или абсолютная длина" - }, - "percentageOrAbsoluteLengthPlusKeywords": { - "de": "der Prozentwert wie angegeben oder die absolute Länge plus Schlüsselwörter, falls angegeben", - "en-US": "the percentage as specified or the absolute length, plus any keywords as specified", - "fr": "le pourcentage tel que spécifié ou la longueur absolue, ainsi que les mots-clé comme spécifiés", - "ja": "指定されたパーセント値または絶対的な長さ、続けて指定された任意の数のキーワード", - "ru": "процент, как указан или абсолютная длина, а также любые ключевые слова" - }, - "percentages": { - "de": "Prozentwerte", - "en-US": "Percentages", - "fr": "Pourcentages", - "ja": "パーセント値", - "ru": "Проценты" - }, - "percentagesOrLengthsFollowedByFill": { - "de": "die Prozentwerte oder Längen gefolgt vom Schlüsselwort <code>fill</code>", - "en-US": "the percentages or lengths, eventually followed by the keyword <code>fill</code>", - "fr": "les pourcentages ou les longueurs, éventuellement suivis par le mot-clé <code>fill</code>", - "ja": "パーセント値または長さ、最後にキーワード <code>fill</code> が続く", - "ru": "проценты или длины, в конечном счете, следует ключевое слово <code>fill</code>" - }, - "perGrammar": { - "de": "nach Grammatik", - "en-US": "per grammar", - "fr": "selon la grammaire", - "ja": "文法通り" - }, - "position": { - "de": "<a href=\"/de/docs/Web/CSS/number#Interpolation\" title=\"Werte des <position> Datentyps werden unabhängig für Abszisse und Ordinate interpoliert. Da die Geschwindigkeit für beide durch dieselbe <timing-function> bestimmt wird, wird der Punkt einer Linie folgen.\">Position</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/position_value#Interpolation\" title=\"Values of the <position> data type are interpolated independently for the abscissa and ordinate. As the speed is defined by the same <timing-function> for both, the point will move following a line.\">position</a>", - "fr": "une <a href=\"/fr/docs/Web/CSS/position_value#Interpolation\" title=\"Les valeurs de type <position> sont interpolées indépendamment pour les abscisses et pour les ordonnées. La vitesse est définie par la même <timing-function>, le point se déplacera donc suivant une ligne.\">position</a>", - "ja": "<a href=\"/en-US/docs/Web/CSS/position_value#Interpolation\" title=\"<position> データ型の値は、横軸と縦軸に対して個別に補間されます。速度は両方とも同じ <timing-function> で定義されているので、点は線に沿って移動します。\">position</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/position_value#Interpolation\" title=\"Значении типа данных <позиция> интерполизуются независимо как абсцисса или ордината. Скорость определяется по одной <временной функции> для обоих координат, точка будет двигаться следуя линии.\">позиция</a>" - }, - "positionedElements": { - "de": "positionierte Elemente", - "en-US": "positioned elements", - "fr": "éléments positionnés", - "ja": "位置指定要素", - "ru": "позиционированные элементы" - }, - "rectangle": { - "de": "<a href=\"/de/docs/Web/CSS/shape#Interpolation\">Rechteck</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/shape#Interpolation\" title=\"Values of the <shape> CSS data type which are rectangles are interpolated over their top, right, bottom and left component, each treated as a real, floating-point number.\">rectangle</a>", - "fr": "un <a href=\"/fr/docs/Web/CSS/forme#Interpolation\" title=\"Valeurs de type CSS <forme> qui ont des rectangles interpolés sur leurs composantes haute, droite, basse et gauche dont chacune est traitée comme un nombre flottant réel.\">rectangle</a>", - "ja": "<a href=\"/ja/docs/Web/CSS/shape#Interpolation\" title=\"CSS の <shape> データ型が矩形の場合の値は、その上、右、下、左の各部分に補間され、それぞれが浮動小数点数の実数として扱われます。\">rectangle</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/shape#Interpolation\" title=\"Значения типа данных CSS <фигура>, которые являются прямоугольниками, интерполируются по их верхней, правой, нижней и левой компоненте, каждая из которых трактуется как вещественное число или с плавающей запятой.\">прямоугольник</a>" - }, - "referToBorderBox": { - "de": "beziehen sich auf die Rahmenbox des Elements", - "en-US": "refer to the element’s border box", - "fr": "fait référence à l'élément <code>border box</code>", - "ja": "要素の境界ボックスに対する相対値", - "ru": "относятся к границе элемента" - }, - "referToContainingBlockHeight": { - "de": "bezieht sich auf die Höhe des äußeren Elements", - "en-US": "refer to the height of the containing block", - "fr": "se rapporte à la hauteur du bloc contenant", - "ja": "包含ブロックの高さに対する相対値", - "ru": "относятся к высоте содержащего блока" - }, - "referToDimensionOfBorderBox": { - "de": "bezieht sich auf die Größe der Border-Box", - "en-US": "refer to the corresponding dimension of the border box", - "fr": "se rapporte à la dimension correspondance de la boîte de bordure", - "ja": "境界ボックスの対応する寸法に対する相対値", - "ru": "относятся к соответствующему размеру границы элемента" - }, - "referToDimensionOfContentArea": { - "de": "beziehen sich auf die entsprechende Dimension des Inhaltsbereichs", - "en-US": "refer to corresponding dimension of the content area", - "fr": "fait référence à la dimension correspondante de la zone de contenu", - "ja": "コンテンツ領域の対応する寸法に対する相対値", - "ru": "относятся к соответствующему размеру области содержимого" - }, - "referToElementFontSize": { - "de": "bezieht sich auf die Schriftgröße des Elternelements", - "en-US": "refer to the font size of the element itself", - "fr": "se rapporte à la taille de la police de l'élément lui-même", - "ja": "要素自身のフォントサイズに対する相対値", - "ru": "относятся к размеру шрифта самого элемента" - }, - "referToFlexContainersInnerMainSize": { - "de": "bezieht sich auf die Hauptgröße des Flexcontainers", - "en-US": "refer to the flex container's inner main size", - "fr": "se rapporte à la principale taille interne du conteneur flexible", - "ja": "フレックスコンテナーの内部の主要な寸法に対する相対値", - "ru": "относятся к внутреннему размеру главного flex-контейнера" - }, - "referToHeightOfBackgroundPositioningAreaMinusBackgroundImageHeight": { - "de": "bezieht sich auf die Höhe des Hintergrundpositionsbereichs abzüglich der Höhe des Hintergrundbilds", - "en-US": "refer to height of background positioning area minus height of background image", - "fr": "fait référence à la hauteur de la zone de positionnement de l'arrière-plan moins la hauteur de l'image d'arrière-plan", - "ja": "背景配置領域の高さから背景画像の高さを引いた値に対する相対値", - "ru": "относятся к высоте области позиционирования фона минус высота фонового изображения" - }, - "referToHeightOfInitialViewport": { - "de": "beziehen sich auf die Höhe des ursprünglichen Viewports", - "en-US": "refer to the height of the initial viewport", - "fr": "fait référence à la hauteur de la zone d'affichage (<i>viewport</i>) initiale", - "ja": "初期ビューポートの高さに対する相対値", - "ru": "относятся к высоте изначальной области просмотра" - }, - "referToLineBoxWidth": { - "en-US": "calculated with respect to the width of the line box", - "ja": "行ボックスの高さを基準に計算" - }, - "referToLineHeight": { - "de": "bezieht sich auf die {{cssxref(\"line-height\")}} des Elements selbst", - "en-US": "refer to the {{cssxref(\"line-height\")}} of the element itself", - "fr": "se rapporte à la hauteur de ligne de l'élément lui-même", - "ja": "要素自身の {{cssxref(\"line-height\")}} に対する相対値", - "ru": "относятся к {{cssxref(\"line-height\")}} самого элемента" - }, - "referToParentElementsFontSize": { - "de": "bezieht sich auf die Schriftgröße des Elternelements", - "en-US": "refer to the parent element's font size", - "fr": "se rapporte à la taille de la police de l'élément parent", - "ja": " 親要素の font-size に対する相対値", - "ru": "относятся к размеру шрифта родителя" - }, - "referToReferenceBoxWhenSpecifiedOtherwiseBorderBox": { - "en-US": "refer to reference box when specified, otherwise border-box", - "ja": "指定されている場合は参照ボックス、それ以外の場合は境界ボックスに対する相対値" - }, - "referToSizeOfBackgroundPositioningAreaMinusBackgroundImageSize": { - "de": "bezieht sich auf die Größe des Hintergrundpositionsbereichs abzüglich der Größe des Hintergrundbilds; die Größe bezieht sich auf die vertikalen und horizontalen Verschiebungen", - "en-US": "refer to the size of the background positioning area minus size of background image; size refers to the width for horizontal offsets and to the height for vertical offsets", - "fr": "se rapporte à la taille de la zone de positionnement de l'arrière-plan, moins la taille de l'image; la taille se rapporte à la largeur pour les décalages horizontaux et à la hauteur pour les décalages verticaux", - "ja": "背景配置領域の高さから背景画像の高さを引いた値に対する相対値。寸法は水平オフセットの幅と垂直オフセットの高さに対する相対値", - "ru": "относятся к размеру области позиционирования фона минус размер фонового изображения; размер - ширина горизонтальных смещений и высота вертикальных" - }, - "referToSizeOfBorderImage": { - "de": "bezieht sich auf die Größe des Bildes", - "en-US": "refer to the size of the border image", - "fr": "se rapporte à la taille de l'image de bordure", - "ja": "境界画像の大きさに対する相対値", - "ru": "относятся к размеру рамки изображения" - }, - "referToSizeOfBoundingBox": { - "de": "bezieht sich auf die Größe der äußeren Box", - "en-US": "refer to the size of bounding box", - "fr": "se rapporte à la taille de la boîte de l'élément", - "ja": "囲みボックスの寸法に対する相対値", - "ru": "ссылается на размер ограничительной рамки" - }, - "referToSizeOfElement": { - "de": "beziehen sich auf die Größe der Box selbst", - "en-US": "refer to the size of the box itself", - "fr": "fait référence à la taille de la boîte elle-même", - "ja": "ボックス自身の寸法に対する相対値", - "ru": "ссылается на размер самого блока" - }, - "referToSizeOfFont": { - "de": "ja, beziehen sich auf die entsprechende Größe der Schriftart", - "en-US": "yes, refer to the corresponding size of the text font", - "fr": "oui, indique la taille correspondante de la police de texte", - "ja": "可、テキストのフォントの対応する寸法に対する相対値", - "ru": "да, относятся к соответствующему размеру шрифта текста" - }, - "referToSizeOfMaskBorderImage": { - "en-US": "refer to size of the mask border image", - "ja": "境界のマスク画像の寸法に対する相対値" - }, - "referToSizeOfMaskPaintingArea": { - "de": "beziehen sich auf die Größe des Maskenzeichenbereichs minus der Größe des Maskenebenenbildes (siehe den Text zu {{cssxref(\"background-position\")}})", - "en-US": "refer to size of mask painting area minus size of mask layer image (see the text for {{cssxref(\"background-position\")}})", - "fr": "fait référence à la taille du masque pour la zone de pointure moins la taille du masque pour la taille de l'image (voir {{cssxref(\"background-position\")}})", - "ja": "マスク描画領域の寸法からマスクレイヤー画像の寸法を引いたものに対する相対値 ({{cssxref(\"background-position\")}} のテキストを参照)", - "ru": "относятся к размеру маски области рисования минус размер маски слоя изображения (смотрите статью о {{cssxref(\"background-position\")}})" - }, - "referToTotalPathLength": { - "de": "beziehen sich auf die Gesamtlänge des Pfads", - "en-US": "refer to the total path length", - "fr": "se rapporte à la longueur totale du chemin", - "ja": "パスの全長に対する相対値", - "ru": "относятся к общей длине пути" - }, - "referToWidthAndHeightOfElement": { - "de": "beziehen sich auf Breite und Höhe des Elements", - "en-US": "refer to width and height of element itself", - "fr": "se rapporte à la largeur et à la hauteur de l'élément lui-même", - "ja": "要素自身の幅と高さに対する相対値", - "ru": "относятся к ширине и высоте самого элемента" - }, - "referToWidthOfAffectedGlyph": { - "de": "bezieht sich auf die Breite des jeweiligen Zeichens", - "en-US": "refer to the width of the affected glyph", - "fr": "se rapporte à la largeur du glyphe concerné", - "ja": "作用する文字の幅に対する相対値", - "ru": "зависит от ширины символа" - }, - "referToWidthOfBackgroundPositioningAreaMinusBackgroundImageHeight": { - "de": "bezieht sich auf die Breite des Hintergrundpositionsbereichs abzüglich der Höhe des Hintergrundbilds", - "en-US": "refer to width of background positioning area minus height of background image", - "fr": "fait référence à la largeur de la zone de positionement de l'arrière-plan moins la hauteur de l'image d'arrière-plan", - "ja": "背景配置領域の幅から背景画像の高さを引いたものに対する相対値", - "ru": "относятся к ширине области позиционирования фона минус высота фонового изображения" - }, - "referToWidthOfContainingBlock": { - "de": "bezieht sich auf die Breite des äußeren Elements", - "en-US": "refer to the width of the containing block", - "fr": "se rapporte à la largeur du bloc contenant", - "ja": "包含ブロックの幅に対する相対値", - "ru": "ссылается на ширину содержащего блока" - }, - "referToWidthOfInitialViewport": { - "de": "beziehen sich auf die Breite des ursprünglichen Viewports", - "en-US": "refer to the width of the initial viewport", - "fr": "fait référence à la largeur de la zone d'affichage (<i>viewport</i>) initiale", - "ja": "初期ビューポートの幅に対する相対値", - "ru": "относятся к ширине изначальной области просмотра" - }, - "referToWidthOrHeightOfBorderImageArea": { - "de": "bezieht sich auf die Größe des Rahmenbildbereichs", - "en-US": "refer to the width or height of the border image area", - "fr": "se rapporte à la largeur ou la hauteur de la zone de l'image de bordure", - "ja": "境界画像領域の幅または高さに対する相対値", - "ru": "относятся к высоте или ширине области рамки картинки" - }, - "regardingHeightOfGeneratedBoxContainingBlockPercentages0": { - "de": "Der Prozentwert wird unter Berücksichtigung der Höhe des die generierte Box beinhaltenden Blocks berechnet. Falls die Höhe des beinhaltenden Blocks nicht explizit angegeben wurde (d. h. sie hängt von der Höhe des Inhalts ab) und dieses Element nicht absolut positioniert ist, wird der Prozentwert wie <code>0</code> behandelt.", - "en-US": "The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the percentage value is treated as <code>0</code>.", - "es": "Se refiere a la altura del bloque contenedor.", - "fr": "Le pourcentage est exprimé par rapport à la hauteur de la boîte générée par le bloc contenant. Si la hauteur du bloc contenant n'est pas explicitement spécifiée (c'est-à-dire qu'elle dépend de la hauteur du contenu), et si cet élément n'est pas absolument positionné , la valeur du pourcentage est traitée comme si elle valait <code>0</code>.", - "ja": "パーセント値は、生成ボックスの包含ブロックの高さを基準に計算されます。 包含ブロックの高さが明示的に定義されず (この場合コンテンツの高さに依存します) この要素が絶対位置指定されていない場合は、パーセント値は 0 として扱われます。", - "ru": "Процент для генерируемого блока рассчитывается по отношению к высоте содержащего блока. Если высота содержащего блока не задана явно (т.е. зависит от высоты содержимого), и этот этот элемент позиционирован не абсолютно, процентное значение интерпретируется как <code>0</code>." - }, - "regardingHeightOfGeneratedBoxContainingBlockPercentagesNone": { - "de": "Der Prozentwert wird unter Berücksichtigung der Höhe des die generierte Box beinhaltenden Blocks berechnet. Falls die Höhe des beinhaltenden Blocks nicht explizit angegeben wurde (d. h. sie hängt von der Höhe des Inhalts ab) und dieses Element nicht absolut positioniert ist, wird der Prozentwert wie <code>none</code> behandelt.", - "en-US": "The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the percentage value is treated as <code>none</code>.", - "fr": "Le pourcentage est par rapport à la hauteur de la boîte générée par le bloc contenant. Si la hauteur du bloc contenant n'est pas explicitement spécifiée (c'est-à-dire qu'elle dépend de la hauteur du contenu), et si cet élément n'est pas absolument positionné, la valeur du pourcentage est traitée comme si elle valait <code>none</code>.", - "ja": "パーセント値は、生成ボックスの包含ブロックの高さを基準に計算されます。 包含ブロックの高さが明示的に定義されず (すなわち、コンテンツの高さに依存します)、この要素が絶対位置指定されていない場合は、パーセント値は <code>none</code> として扱われます。", - "ru": "Процент для генерируемого блока рассчитывается по отношению к высоте содержащего блока. Если высота содержащего блока не задана явно (т.е. зависит от высоты содержимого), и этот элемент позиционирован не абсолютно, процентное значение интерпретируется как <code>none</code>." - }, - "regardingHeightOfGeneratedBoxContainingBlockPercentagesRelativeToContainingBlock": { - "de": "Der Prozentwert wird unter Berücksichtigung der Höhe des die generierte Box beinhaltenden Blocks berechnet. Falls die Höhe des beinhaltenden Blocks nicht explizit angegeben wurde (d. h. sie hängt von der Höhe des Inhalts ab) und dieses Element nicht absolut positioniert ist, ist der berechnete Wert <code>auto</code>. Eine prozentuale Höhe beim Wurzelelement ist relativ zum ursprünglichen beinhaltenden Block.", - "en-US": "The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the value computes to <code>auto</code>. A percentage height on the root element is relative to the initial containing block.", - "fr": "Le pourcentage est exprimé par rapport à la hauteur de la boîte générée par le bloc contenant. Si la hauteur du bloc contenant n'est pas explicitement spécifiée (c'est-à-dire qu'elle dépend de la hauteur du contenu), et si cet élément n'est pas absolument positionné, la valeur du pourcentage est traitée comme <code>auto</code> et la hauteur du pourcentage sur l'élément racine est relative au bloc contenant initial.", - "ja": "パーセント値は、生成ボックスの包含ブロックの高さを基準に計算されます。 包含ブロックの高さが明示的に定義されず (すなわち、コンテンツの高さに依存します)、この要素が絶対位置指定されていない場合は、値は <code>auto</code> になります。ルート要素で高さをパーセント値で指定すると、初期包含ブロックに対する相対値になります。", - "ru": "Процент для генерируемого блока рассчитывается по отношению к высоте содержащего блока. Если высота содержащего блока не задана явно (т.е. зависит от высоты содержимого), и этот этот элемент позиционирован не абсолютно, значение будет <code>auto</code>. Процентная высота на корневом элементе относительна первоначальному блоку." - }, - "relatedAtRule": { - "de": "Zugehörige <a href=\"/de/docs/Web/CSS/At-Regel\">@-Regel</a>", - "en-US": "Related <a href=\"/en-US/docs/Web/CSS/At-rule\">at-rule</a>", - "fr": "En lien avec les <a href=\"/fr/docs/Web/CSS/Règles_%40\">règles @</a>", - "ja": "関連する<a href=\"/ja/docs/Web/CSS/At-rule\">アット規則</a>", - "ru": "Связано с <a href=\"/ru/docs/Web/CSS/At-rule\">@-правила</a>" - }, - "relativeToBackgroundPositioningArea": { - "de": "bezieht sich auf den jeweiligen Bereich", - "en-US": "relative to the background positioning area", - "fr": "relatifs à la zone de positionnement du fond", - "ja": "背景配置領域に対する相対値", - "ru": "относительно области позиционирования фона" - }, - "relativeToMaskBorderImageArea": { - "en-US": "relative to width/height of the mask border image area", - "ja": "境界マスク画像領域の幅/高さに対する相対値" - }, - "relativeToScrollContainerPaddingBoxAxis": { - "de": "relativ zur gleichen Achse der Innenabstandsbox des Scrollcontainers", - "en-US": "relative to same axis of the padding-box of the scroll container", - "fr": "relatif au même axe de la <code>padding-box</code> du conteneur d'ascenceur", - "ja": "スクロールコンテナーのパディングボックスの同じ軸に対する相対値", - "ru": "относительно той же оси и внутренних отступов прокручиваемого контейнера" - }, - "relativeToTheScrollContainersScrollport": { - "en-US": "relative to the scroll container's scrollport", - "ja": "スクロールコンテナーのスクロールポートに対する相対値" - }, - "repeatableList": { - "de": "mehrfache Werte der folgenden Eigenschaften: ", - "en-US": "a repeatable list of ", - "fr": "une liste répétable de ", - "ja": "反復可能リスト", - "ru": "повторяющийся список из " - }, - "repeatableListOfSimpleListOfLpc": { - "en-US": "repeatable list of simple list of length, percentage, or calc", - "ja": "長さ、パーセント値、 calc の単純なリストの反復可能リスト" - }, - "replacedElements": { - "de": "ersetzte Elemente", - "en-US": "replaced elements", - "fr": "éléments remplacés", - "ja": "置換要素", - "ru": "заменяемые элементы" - }, - "rubyAnnotationsContainers": { - "de": "Ruby-Anmerkungscontainer", - "en-US": "ruby annotations containers", - "fr": "annotations ruby des conteneurs", - "ja": "ルビ注釈コンテナー", - "ru": "контейнеры ruby-аннотаций" - }, - "rubyBasesAnnotationsBaseAnnotationContainers": { - "de": "Ruby-Basiselemente, Ruby-Anmerkungen, Ruby-Basiscontainer, Ruby-Anmerkungscontainer", - "en-US": "ruby bases, ruby annotations, ruby base containers, ruby annotation containers", - "fr": "bases ruby, annotations ruby, conteneurs de bases ruby, conteneurs d'annotations ruby", - "ja": "ルビベース、ルビ注釈、ルビベースコンテナー、ルビ注釈コンテナー", - "ru": "базовые элементы ruby, аннотации к ruby, базовые ruby контейнеры, контейнеры аннотаций к ruby" - }, - "sameAsBoxOffsets": { - "de": "wie die Boxoffsets: {{cssxref(\"top\")}}, {{cssxref(\"right\")}}, {{cssxref(\"bottom\")}}, {{cssxref(\"left\")}} Eigenschaften, mit dem Unterschied, dass die Richtungen logisch sind", - "en-US": "same as box offsets: {{cssxref(\"top\")}}, {{cssxref(\"right\")}}, {{cssxref(\"bottom\")}}, {{cssxref(\"left\")}} properties except that directions are logical", - "fr": "identiques aux propriétés qui décalent les boîtes : {{cssxref(\"top\")}}, {{cssxref(\"right\")}}, {{cssxref(\"bottom\")}}, {{cssxref(\"left\")}} sauf que ces directions sont logiques", - "ja": "方向が論理的である以外はボックスのオフセット、 {{cssxref(\"top\")}}, {{cssxref(\"right\")}}, {{cssxref(\"bottom\")}}, {{cssxref(\"left\")}} と同じ", - "ru": "также как смещение блоков свойствами: {{cssxref(\"top\")}}, {{cssxref(\"right\")}}, {{cssxref(\"bottom\")}}, {{cssxref(\"left\")}}, кроме того направления логичны" - }, - "sameAsMargin": { - "de": "wie bei {{cssxref(\"margin\")}}", - "en-US": "same as {{cssxref(\"margin\")}}", - "fr": "identique à {{cssxref(\"margin\")}}", - "ja": "{{cssxref(\"margin\")}} と同じ", - "ru": "с таким же {{cssxref(\"margin\")}}" - }, - "sameAsMaxWidthAndMaxHeight": { - "de": "wie bei {{cssxref(\"max-width\")}} und {{cssxref(\"max-height\")}}", - "en-US": "same as {{cssxref(\"max-width\")}} and {{cssxref(\"max-height\")}}", - "fr": "identique à {{cssxref(\"max-width\")}} et à {{cssxref(\"max-height\")}}", - "ja": "{{cssxref(\"max-width\")}} および {{cssxref(\"max-height\")}} と同じ", - "ru": "с такими же {{cssxref(\"max-width\")}} и {{cssxref(\"max-height\")}}" - }, - "sameAsMinWidthAndMinHeight": { - "de": "wie bei {{cssxref(\"min-width\")}} und {{cssxref(\"min-height\")}}", - "en-US": "same as {{cssxref(\"min-width\")}} and {{cssxref(\"min-height\")}}", - "fr": "identique à {{cssxref(\"min-width\")}} et à {{cssxref(\"min-height\")}}", - "ja": "{{cssxref(\"min-width\")}} および {{cssxref(\"min-height\")}} と同じ", - "ru": "с такими же {{cssxref(\"min-width\")}} и {{cssxref(\"min-height\")}}" - }, - "sameAsWidthAndHeight": { - "de": "wie bei {{cssxref(\"width\")}} und {{cssxref(\"height\")}}", - "en-US": "same as {{cssxref(\"width\")}} and {{cssxref(\"height\")}}", - "fr": "identique à {{cssxref(\"width\")}} et à {{cssxref(\"height\")}}", - "ja": "{{cssxref(\"width\")}} および {{cssxref(\"height\")}} と同じ", - "ru": "с такими же {{cssxref(\"width\")}} и {{cssxref(\"height\")}}" - }, - "scrollContainers": { - "de": "Scrollcontainer", - "en-US": "scroll containers", - "fr": "conteneurs d'ascenseurs", - "ja": "スクロールコンテナー", - "ru": "прокручиваемые контейнеры" - }, - "scrollingBoxes": { - "de": "scrollende Boxen", - "en-US": "scrolling boxes", - "fr": "boîtes défilantes", - "ja": "スクロールするボックス", - "ru": "прокручиваемые блоки" - }, - "seeProse": { - "de": "siehe Text", - "en-US": "see prose", - "fr": "voir le texte", - "ja": "本文を参照", - "ru": "смотреть текст" - }, - "shadowList": { - "de": "eine <a href=\"/de/docs/Web/CSS/box-shadow#Interpolation\" title=\"Die color, x, y, blur und spread (falls anwendbar) Komponenten einer Schattenliste werden unabhängig voneinander interpoliert. Falls sich der inset-Wert irgendeines Schattenpaares der beiden Listen unterscheidet, gilt die gesamte liste als nicht interpolierbar. Falls eine Liste kürzer ist als die andere, wird die kürzere mit transparenten Schatten aufgefüllt, deren Längen alle auf 0 gesetzt sind und deren inset-Wert der längeren Liste entspricht.\">Liste von Schatten</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/box-shadow#Interpolation\" title=\"The color, x, y, blur and spread (if applicable) components of shadow lists are interpolated independently. If the inset value of any shadow pair differs between both lists, the whole list is uninterpolable. If one list is smaller than the other, it gets padded with transparent shadows with all their lengths set to 0 and its inset value matching the longer list.\">shadow list</a>", - "fr": "une <a href=\"/fr/docs/Web/CSS/box-shadow#Interpolation\" title=\"Les composantes de couleur, coordonnées x, y, de flou et d'étalement (si applicable) des listes d'ombres sont interpolées indépendamment. Si la valeur inset de n'importe quelle ombre différe entre les deux listes, toute la liste ne pourra pas être interpolée. Si une liste est plus petite qu'une autre, elle sera complétée avec des ombres transparentes dont les longueurs sont nulles et dont les valeurs d'inset correspondent à celles de la liste plus longue.\">liste d'ombres</a>", - "ja": "a <a href=\"/ja/docs/Web/CSS/box-shadow#Interpolation\" title=\"影のリストは、色の成分、 x、 y、 ぼかし、 (適切であれば) 広がりの成分で個別に補完されます。両方のリストで影の組の inset の値が異なる場合は、リスト全体は補完されません。一方のリストがもう一方より短い場合は、 transparent の色の影で補完し、すべての長さが 0 であり、 inset (の有無) が一致するものがあれば、より長いリストに一致します。\">影のリスト</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/box-shadow#Interpolation\" title=\"Цвет, абсцисса, ордината, размытие и распространение (если применено) списка теней интерполируются независимо. Если внутреннее значение какой-либо пары теней различается в обоих списках, интерполизуется весь список. Если один список меньше остальных, он дополняется прозрачностью теней со всей их длинной установленной в 0, а его внутреннее значение соответствует длинному списку.\">список теней</a>" - }, - "simpleList": { - "de": "ein einfacher Wert der folgenden Eigenschaften: ", - "en-US": "a simple list of ", - "fr": "une simple liste de ", - "ja": "単純なリスト: ", - "ru": "простой список из " - }, - "simpleListOfLpc": { - "en-US": "simple list of length, percentage, or calc", - "ja": "長さ、パーセント値、 calc の単純なリスト" - }, - "simpleListOfLpcDifferenceLpc": { - "en-US": "simple list of length, percentage, or calc, provided the only differences are in the values of the length, percentage, or calc components in the list", - "ja": "長さ、パーセント値、 calc の単純なリストであり、唯一の違いはリスト内の長さ、パーセント値、 calc の部分の値のみ" - }, - "specifiedIntegerOrAbsoluteLength": { - "de": "die angegebene Ganzzahl oder eine absolute Länge", - "en-US": "the specified integer or an absolute length", - "fr": "l'entier spécifié ou une longueur absolue", - "ja": "指定された整数値または絶対的な長さ", - "ru": "указанное целое число или абсолютная длина" - }, - "specifiedValueClipped0To1": { - "de": "der angegebene Wert, auf den Bereich <code>[0,1]</code> abgeschnitten", - "en-US": "the specified value, clipped in the range <code>[0,1]</code>", - "fr": "la valeur spécifiée, écrêtée à l'intervalle <code>[0,1]</code>", - "ja": "指定値が <code>[0,1]</code> の範囲内にクリップされたもの", - "ru": "указанное значение, обрезается до диапозона <code>[0,1]</code>" - }, - "specifiedValueNumberClipped0To1": { - "de": "Derselbe wie der angegebene Wert nachdem die {{cssxref(\"number\")}} auf den Bereich [0.0, 1.0] zugeschnitten wurde.", - "en-US": "The same as the specified value after clipping the {{cssxref(\"number\")}} to the range [0.0, 1.0].", - "fr": "La même que la valeur spécifiée après avoir écrêté {{cssxref(\"number\")}} dans l'intervalle [0.0, 1.0].", - "ja": "指定値の {{cssxref(\"number\")}} が [0.0, 1.0] の範囲内にクリップされたものと同じ", - "ru": "Тоже, что и указанное значение, после обрезки {{cssxref(\"number\")}} до диапозона [0.0, 1.0]." - }, - "startOrNamelessValueIfLTRRightIfRTL": { - "de": "<code>start</code> oder ein namenloser Wert, der sich wie <code>left</code> verhält, falls {{cssxref(\"direction\")}} den Wert <code>ltr</code> hat, <code>right</code>, falls {{cssxref(\"direction\")}} den Wert <code>rtl</code> hat, falls <code>start</code> nicht vom Browser unterstützt wird.", - "en-US": "<code>start</code>, or a nameless value that acts as <code>left</code> if {{cssxref(\"direction\")}} is <code>ltr</code>, <code>right</code> if {{cssxref(\"direction\")}} is <code>rtl</code> if <code>start</code> is not supported by the browser.", - "fr": "<code>start</code>, ou une valeur non nommée se comportant comme <code>left</code> si {{cssxref(\"direction\")}} est <code>ltr</code>, <code>right</code> si {{cssxref(\"direction\")}} est <code>rtl</code> si <code>start</code> n'est pas supporté par le navigateur", - "ja": "<code>start</code>。<code>start</code> をサポートしないブラウザでは、{{cssxref(\"direction\", \"書字方向\")}}が <code>ltr</code> なら <code>left</code>、<code>rtl</code> なら <code>right</code> として動作する無名の値", - "ru": "<code>start</code>, или неназванное значение, которое действует как <code>left</code>, если {{cssxref(\"direction\")}}: <code>ltr</code> или как <code>right</code>, если {{cssxref(\"direction\")}}: <code>rtl</code>, а если <code>start</code> не поддерживается браузером." - }, - "tableCaptionElements": { - "de": "table-caption Elemente", - "en-US": "table-caption elements", - "fr": "éléments qui sont des légendes de tableaux", - "ja": "表のキャプション要素", - "ru": "заголовки таблиц" - }, - "tableCellElements": { - "de": "table-cell Elemente", - "en-US": "table-cell elements", - "fr": "éléments qui sont des cellules de tableau", - "ja": "表のセル要素", - "ru": "ячейки таблицы" - }, - "tableElements": { - "de": "<code>table</code>- und <code>inline-table</code>-Elemente", - "en-US": "<code>table</code> and <code>inline-table</code> elements", - "fr": "des éléments <code>table</code> and <code>inline-table</code>", - "ja": "<code>table</code> および <code>inline-table</code> 要素", - "ru": "<code>table</code> и <code>inline-table</code> элементы" - }, - "textElements": { - "de": "Textelemente", - "en-US": "text elements", - "fr": "éléments textes", - "ja": "テキスト要素", - "ru": "текстовые элементы" - }, - "textFields": { - "de": "Textfelder", - "en-US": "text fields", - "fr": "champs de texte", - "ja": "テキストフィールド", - "ru": "текстовые поля" - }, - "theComputedLength": { - "en-US": "the computed <length>" - }, - "theKeywordListStyleImageNoneOrComputedValue": { - "en": "The keyword list-style-image/none or the computed <>" - }, - "transform": { - "de": "Transformation", - "en-US": "a transform", - "fr": "une transformation", - "ja": "変形", - "ru": "трансформация" - }, - "transformableElements": { - "de": "transformierbare Elemente", - "en-US": "transformable elements", - "fr": "éléments transformables", - "ja": "変形可能要素", - "pt-BR": "qualquer elemento transformavel", - "ru": "трансформируемые элементы" - }, - "translucentValuesRGBAOtherwiseRGB": { - "de": "Falls der Wert durchscheinend ist, ist der berechnete Wert der entsprechende <code>rgba()</code> Wert. Falls nicht, ist er der entsprechende <code>rgb()</code> Wert. Das <code>transparent</code> Schlüsselwort wird zu <code>rgb(0,0,0)</code>.", - "en-US": "If the value is translucent, the computed value will be the <code>rgba()</code> corresponding one. If it isn't, it will be the <code>rgb()</code> corresponding one. The <code>transparent</code> keyword maps to <code>rgba(0,0,0,0)</code>.", - "fr": "si la valeur est translucide, la valeur calculée est la fonction <code>rgba()</code>correspondante. Sinon, la fonction <code>rgb()</code>correspondante. Le mot-clé <code>transparent</code> devient <code>rgb(0,0,0)</code>.", - "ja": "半透明の値なら、計算値はそれに対応する <code>rgba()</code>。さもなくばその値に対応する <code>rgb()</code>。<code>transparent</code> キーワードは <code>rgba(0,0,0,0)</code> にマップされる。", - "ru": "Если значение полупрозрачно, значение будет соответствовать <code>rgba()</code>. А если не будет полупрозрачным, то будет использоваться <code>rgb()</code>. Ключевое слово <code>transparent</code> интерпретируется в <code>rgba(0,0,0,0)</code>." - }, - "\"\"": { - "en-US": "\"\" (the empty string)", - "ja": "\"\" (空文字列)" - }, - "\". \"": { - "en-US": "\". \" (full stop followed by a space)", - "ja": "\". \" (ピリオドの後に空白)" - }, - "twoAbsoluteLengthOrPercentages": { - "de": "zwei absolute {{cssxref(\"length\")}} oder {{cssxref(\"percentage\")}}", - "en-US": "two absolute {{cssxref(\"length\")}}s or {{cssxref(\"percentage\")}}s", - "fr": "deux {{cssxref(\"length\",\"longueurs\")}} absolues ou deux {{cssxref(\"percentage\",\"pourcentages\")}}", - "ja": "2つの絶対的な {{cssxref(\"length\")}} または {{cssxref(\"percentage\")}} 値", - "ru": "две абсолютных {{cssxref(\"length\")}} или {{cssxref(\"percentage\")}}" - }, - "twoAbsoluteLengths": { - "de": "zwei absolute Längen", - "en-US": "two absolute lengths", - "fr": "deux longueurs absolues", - "ja": "2つの絶対的な長さ", - "ru": "две абсолютные длины" - }, - "uniqueOrder": { - "de": "die eindeutige Reihenfolge definiert durch die formale Grammatik", - "en-US": "the unique non-ambiguous order defined by the formal grammar", - "es": "el orden único no-ambigüo definido por la gramática formal", - "fr": "l'ordre unique et non-ambigu défini par la grammaire formelle", - "ja": "形式文法で定義されている一意のあいまいでない順序", - "ru": "уникальный неоднозначный порядок, определённый формальной грамматикой" - }, - "variesFromBrowserToBrowser": { - "de": "Variiert von einem Browser zum anderen", - "en-US": "Varies from one browser to another", - "fr": "Varie d'un navigateur à l'autre", - "ja": "ブラウザーによって異なる", - "ru": "Варьируется от браузера к браузеру" - }, - "visibility": { - "de": "<a href=\"/de/docs/Web/CSS/visibility#interpolation\">Sichtbarkeit</a>", - "en-US": "a <a href=\"/en-US/docs/Web/CSS/visibility#interpolation\" title=\"Values of the visibility CSS property are interpolable if the start or the end value is visible. In that case all values of the timing function which are equal to 1 map to visible and non-equal to 1 to non-visible.\">visibility</a>", - "fr": "une <a href=\"/fr/docs/Web/CSS/visibility#interpolation\" title=\"Les valeurs de la propriété CSS visibility sont interpolables si une des valeurs de début ou de fin est visible. Dans ce cas, toutes les valeurs de la fonction de temporisation qui sont égales à 1 sont associées à visible, et celles non égales à 1, à non-visible.\">visibilité</a>", - "ja": "<a href=\"/en-US/docs/Web/CSS/visibility#interpolation\" title=\"CSS の visibility プロパティの値は、開始値または終了値が visible の場合に補間可能である。その場合、タイミング関数の 1 に等しい値がすべて可視に、1 に等しくない値が不可視に対応づけられる。\">visibility</a>", - "ru": "<a href=\"/ru/docs/Web/CSS/visibility#interpolation\" title=\"Значения свойства CSS visibility интерполируются, если начальное или конечное значение установлено в visible. В этом случае все значения временной функции, равные 1 отображаются, а не равные 1 не отображаются.\">видимость</a>" - }, - "visual": { - "de": "visuell", - "en-US": "visual", - "fr": "visuel", - "ja": "視覚", - "ru": "визуальный" - }, - "visualInContinuousMediaNoEffectInOverflowColumns": { - "de": "<code>visual</code>, aber in kontinuierlichen Medien hat sie keinen Effekt in überlaufenden Spalten", - "en-US": "<code>visual</code>, but, in continuous media, has no effect in overflow columns", - "fr": "<code>visual</code>, mais n'a pas d'effet sur le débordement des colonnes pour un média continu", - "ja": "<code>visual</code>。ただし連続メディアではオーバーフローした列に効果なし", - "ru": "<code>visual</code>, но в сплошной среде, не имеет никакого эффекта при переполнении колонок" - }, - "xulImageElements": { - "de": "XUL {{XULElem(\"image\")}} Elementen und {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}} und {{cssxref(\":-moz-tree-checkbox\")}} Pseudoelementen. <strong>Hinweis:</strong> <code>-moz-image-region</code> funktioniert nur mit {{XULElem(\"image\")}} Elementen, bei denen das Symbol durch {{cssxref(\"list-style-image\")}} angegeben wird. Es funktioniert nicht mit XUL <code><image src=\"url\" /></code>.", - "en-US": "XUL {{XULElem(\"image\")}} elements and {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}}, and {{cssxref(\":-moz-tree-checkbox\")}} pseudo-elements. <strong>Note:</strong> <code>-moz-image-region</code> only works with {{XULElem(\"image\")}} elements where the icon is specified using {{cssxref(\"list-style-image\")}}. It will not work with XUL <code><image src=\"url\" /></code>.", - "fr": "éléments XUL {{XULElem(\"image\")}} et aux pseudo-éléments {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}} et {{cssxref(\":-moz-tree-checkbox\")}}. <strong>Note :</strong> <code>-moz-image-region</code> ne fonctionnera qu'avec les éléments {{XULElem(\"image\")}} où l'icône est définie avec {{cssxref(\"list-style-image\")}}. Cela ne fonctionnera pas avec l'<code><image src=\"url\" /></code> XUL.", - "ja": "XUL の {{XULElem(\"image\")}} 要素と {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}}, {{cssxref(\":-moz-tree-checkbox\")}} の各擬似要素。 <strong>注:</strong> <code>-moz-image-region</code> はアイコンが {{cssxref(\"list-style-image\")}} を使用して指定された {{XULElem(\"image\")}} 要素でしか機能しません。 XUL の <code><image src=\"url\" /></code> では機能しません。", - "ru": "XUL {{XULElem(\"image\")}} элементы и {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}} и {{cssxref(\":-moz-tree-checkbox\")}} псевдоэлементы. <strong>Заметьте:</strong> <code>-moz-image-region</code> работает только с элементами {{XULElem(\"image\")}}, где иконка определяется использованием {{cssxref(\"list-style-image\")}}. Это не будет работать с XUL <code><image src=\"url\" /></code>." - }, - "yes": { - "de": "Ja", - "en-US": "yes", - "fr": "oui", - "ja": "あり", - "pl": "tak", - "ru": "да" - }, - "zoomForTheTopLevelNoneForTheRest": { - "en-US": "zoom for the top level element, none for all other elements", - "ja": "最上位要素では zoom、その他の要素では none" - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/l10n/index.js b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/l10n/index.js deleted file mode 100644 index e1bea42e..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/l10n/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - css: require('./css'), -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/package.json b/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/package.json deleted file mode 100644 index 0c7930dd..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/mdn-data/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "mdn-data", - "version": "2.0.28", - "description": "Open Web data by the Mozilla Developer Network", - "main": "index.js", - "files": [ - "api/index.js", - "api/*.json", - "css/index.js", - "css/*.json", - "l10n/index.js", - "l10n/*.json" - ], - "repository": { - "type": "git", - "url": "https://github.com/mdn/data.git" - }, - "keywords": [ - "data", - "mdn", - "mozilla", - "css" - ], - "author": "Mozilla Developer Network", - "license": "CC0-1.0", - "bugs": { - "url": "https://github.com/mdn/data/issues" - }, - "homepage": "https://developer.mozilla.org", - "devDependencies": { - "ajv": "^6.12.6", - "better-ajv-errors": "^1.1.2" - }, - "scripts": { - "lint": "node test/lint", - "test": "npm run lint" - } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/LICENSE b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/LICENSE deleted file mode 100644 index ed1b7cf2..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/README.md b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/README.md deleted file mode 100644 index 614962d7..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/README.md +++ /dev/null @@ -1,765 +0,0 @@ -# Source Map JS - -[](https://www.npmjs.com/package/source-map-js) - -Difference between original [source-map](https://github.com/mozilla/source-map): - -> TL,DR: it's fork of original source-map@0.6, but with perfomance optimizations. - -This journey starts from [source-map@0.7.0](https://github.com/mozilla/source-map/blob/master/CHANGELOG.md#070). Some part of it was rewritten to Rust and WASM and API became async. - -It's still a major block for many libraries like PostCSS or Sass for example because they need to migrate the whole API to the async way. This is the reason why 0.6.1 has 2x more downloads than 0.7.3 while it's faster several times. - - - -More important that WASM version has some optimizations in JS code too. This is why [community asked to create branch for 0.6 version](https://github.com/mozilla/source-map/issues/324) and port these optimizations but, sadly, the answer was «no». A bit later I discovered [the issue](https://github.com/mozilla/source-map/issues/370) created by [Ben Rothman (@benthemonkey)](https://github.com/benthemonkey) with no response at all. - -[Roman Dvornov (@lahmatiy)](https://github.com/lahmatiy) wrote a [serveral posts](https://t.me/gorshochekvarit/76) (russian, only, sorry) about source-map library in his own Telegram channel. He mentioned the article [«Maybe you don't need Rust and WASM to speed up your JS»](https://mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html) written by [Vyacheslav Egorov (@mraleph)](https://github.com/mraleph). This article contains optimizations and hacks that lead to almost the same performance compare to WASM implementation. - -I decided to fork the original source-map and port these optimizations from the article and several others PR from the original source-map. - ---------- - -This is a library to generate and consume the source map format -[described here][format]. - -[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit - -## Use with Node - - $ npm install source-map-js - -<!-- ## Use on the Web - - <script src="https://raw.githubusercontent.com/mozilla/source-map/master/dist/source-map.min.js" defer></script> --> - --------------------------------------------------------------------------------- - -<!-- `npm run toc` to regenerate the Table of Contents --> - -<!-- START doctoc generated TOC please keep comment here to allow auto update --> -<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> -## Table of Contents - -- [Examples](#examples) - - [Consuming a source map](#consuming-a-source-map) - - [Generating a source map](#generating-a-source-map) - - [With SourceNode (high level API)](#with-sourcenode-high-level-api) - - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api) -- [API](#api) - - [SourceMapConsumer](#sourcemapconsumer) - - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap) - - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans) - - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition) - - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition) - - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition) - - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources) - - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing) - - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order) - - [SourceMapGenerator](#sourcemapgenerator) - - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap) - - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer) - - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping) - - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent) - - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath) - - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring) - - [SourceNode](#sourcenode) - - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name) - - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath) - - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk) - - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk) - - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent) - - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn) - - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn) - - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep) - - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement) - - [SourceNode.prototype.toString()](#sourcenodeprototypetostring) - - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap) - -<!-- END doctoc generated TOC please keep comment here to allow auto update --> - -## Examples - -### Consuming a source map - -```js -var rawSourceMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: 'http://example.com/www/js/', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' -}; - -var smc = new SourceMapConsumer(rawSourceMap); - -console.log(smc.sources); -// [ 'http://example.com/www/js/one.js', -// 'http://example.com/www/js/two.js' ] - -console.log(smc.originalPositionFor({ - line: 2, - column: 28 -})); -// { source: 'http://example.com/www/js/two.js', -// line: 2, -// column: 10, -// name: 'n' } - -console.log(smc.generatedPositionFor({ - source: 'http://example.com/www/js/two.js', - line: 2, - column: 10 -})); -// { line: 2, column: 28 } - -smc.eachMapping(function (m) { - // ... -}); -``` - -### Generating a source map - -In depth guide: -[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) - -#### With SourceNode (high level API) - -```js -function compile(ast) { - switch (ast.type) { - case 'BinaryExpression': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - [compile(ast.left), " + ", compile(ast.right)] - ); - case 'Literal': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - String(ast.value) - ); - // ... - default: - throw new Error("Bad AST"); - } -} - -var ast = parse("40 + 2", "add.js"); -console.log(compile(ast).toStringWithSourceMap({ - file: 'add.js' -})); -// { code: '40 + 2', -// map: [object SourceMapGenerator] } -``` - -#### With SourceMapGenerator (low level API) - -```js -var map = new SourceMapGenerator({ - file: "source-mapped.js" -}); - -map.addMapping({ - generated: { - line: 10, - column: 35 - }, - source: "foo.js", - original: { - line: 33, - column: 2 - }, - name: "christopher" -}); - -console.log(map.toString()); -// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' -``` - -## API - -Get a reference to the module: - -```js -// Node.js -var sourceMap = require('source-map'); - -// Browser builds -var sourceMap = window.sourceMap; - -// Inside Firefox -const sourceMap = require("devtools/toolkit/sourcemap/source-map.js"); -``` - -### SourceMapConsumer - -A SourceMapConsumer instance represents a parsed source map which we can query -for information about the original file positions by giving it a file position -in the generated source. - -#### new SourceMapConsumer(rawSourceMap) - -The only parameter is the raw source map (either as a string which can be -`JSON.parse`'d, or an object). According to the spec, source maps have the -following attributes: - -* `version`: Which version of the source map spec this map is following. - -* `sources`: An array of URLs to the original source files. - -* `names`: An array of identifiers which can be referenced by individual - mappings. - -* `sourceRoot`: Optional. The URL root from which all sources are relative. - -* `sourcesContent`: Optional. An array of contents of the original source files. - -* `mappings`: A string of base64 VLQs which contain the actual mappings. - -* `file`: Optional. The generated filename this source map is associated with. - -```js -var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData); -``` - -#### SourceMapConsumer.prototype.computeColumnSpans() - -Compute the last column for each generated mapping. The last column is -inclusive. - -```js -// Before: -consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1 }, -// { line: 2, -// column: 10 }, -// { line: 2, -// column: 20 } ] - -consumer.computeColumnSpans(); - -// After: -consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1, -// lastColumn: 9 }, -// { line: 2, -// column: 10, -// lastColumn: 19 }, -// { line: 2, -// column: 20, -// lastColumn: Infinity } ] - -``` - -#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) - -Returns the original source, line, and column information for the generated -source's line and column positions provided. The only argument is an object with -the following properties: - -* `line`: The line number in the generated source. Line numbers in - this library are 1-based (note that the underlying source map - specification uses 0-based line numbers -- this library handles the - translation). - -* `column`: The column number in the generated source. Column numbers - in this library are 0-based. - -* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or - `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest - element that is smaller than or greater than the one we are searching for, - respectively, if the exact element cannot be found. Defaults to - `SourceMapConsumer.GREATEST_LOWER_BOUND`. - -and an object is returned with the following properties: - -* `source`: The original source file, or null if this information is not - available. - -* `line`: The line number in the original source, or null if this information is - not available. The line number is 1-based. - -* `column`: The column number in the original source, or null if this - information is not available. The column number is 0-based. - -* `name`: The original identifier, or null if this information is not available. - -```js -consumer.originalPositionFor({ line: 2, column: 10 }) -// { source: 'foo.coffee', -// line: 2, -// column: 2, -// name: null } - -consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 }) -// { source: null, -// line: null, -// column: null, -// name: null } -``` - -#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) - -Returns the generated line and column information for the original source, -line, and column positions provided. The only argument is an object with -the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. The line number is - 1-based. - -* `column`: The column number in the original source. The column - number is 0-based. - -and an object is returned with the following properties: - -* `line`: The line number in the generated source, or null. The line - number is 1-based. - -* `column`: The column number in the generated source, or null. The - column number is 0-based. - -```js -consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 }) -// { line: 1, -// column: 56 } -``` - -#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition) - -Returns all generated line and column information for the original source, line, -and column provided. If no column is provided, returns all mappings -corresponding to a either the line we are searching for or the next closest line -that has any mappings. Otherwise, returns all mappings corresponding to the -given line and either the column we are searching for or the next closest column -that has any offsets. - -The only argument is an object with the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. The line number is - 1-based. - -* `column`: Optional. The column number in the original source. The - column number is 0-based. - -and an array of objects is returned, each with the following properties: - -* `line`: The line number in the generated source, or null. The line - number is 1-based. - -* `column`: The column number in the generated source, or null. The - column number is 0-based. - -```js -consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" }) -// [ { line: 2, -// column: 1 }, -// { line: 2, -// column: 10 }, -// { line: 2, -// column: 20 } ] -``` - -#### SourceMapConsumer.prototype.hasContentsOfAllSources() - -Return true if we have the embedded source content for every source listed in -the source map, false otherwise. - -In other words, if this method returns `true`, then -`consumer.sourceContentFor(s)` will succeed for every source `s` in -`consumer.sources`. - -```js -// ... -if (consumer.hasContentsOfAllSources()) { - consumerReadyCallback(consumer); -} else { - fetchSources(consumer, consumerReadyCallback); -} -// ... -``` - -#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing]) - -Returns the original source content for the source provided. The only -argument is the URL of the original source file. - -If the source content for the given source is not found, then an error is -thrown. Optionally, pass `true` as the second param to have `null` returned -instead. - -```js -consumer.sources -// [ "my-cool-lib.clj" ] - -consumer.sourceContentFor("my-cool-lib.clj") -// "..." - -consumer.sourceContentFor("this is not in the source map"); -// Error: "this is not in the source map" is not in the source map - -consumer.sourceContentFor("this is not in the source map", true); -// null -``` - -#### SourceMapConsumer.prototype.eachMapping(callback, context, order) - -Iterate over each mapping between an original source/line/column and a -generated line/column in this source map. - -* `callback`: The function that is called with each mapping. Mappings have the - form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, - name }` - -* `context`: Optional. If specified, this object will be the value of `this` - every time that `callback` is called. - -* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or - `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over - the mappings sorted by the generated file's line/column order or the - original's source/line/column order, respectively. Defaults to - `SourceMapConsumer.GENERATED_ORDER`. - -```js -consumer.eachMapping(function (m) { console.log(m); }) -// ... -// { source: 'illmatic.js', -// generatedLine: 1, -// generatedColumn: 0, -// originalLine: 1, -// originalColumn: 0, -// name: null } -// { source: 'illmatic.js', -// generatedLine: 2, -// generatedColumn: 0, -// originalLine: 2, -// originalColumn: 0, -// name: null } -// ... -``` -### SourceMapGenerator - -An instance of the SourceMapGenerator represents a source map which is being -built incrementally. - -#### new SourceMapGenerator([startOfSourceMap]) - -You may pass an object with the following properties: - -* `file`: The filename of the generated source that this source map is - associated with. - -* `sourceRoot`: A root for all relative URLs in this source map. - -* `skipValidation`: Optional. When `true`, disables validation of mappings as - they are added. This can improve performance but should be used with - discretion, as a last resort. Even then, one should avoid using this flag when - running tests, if possible. - -* `ignoreInvalidMapping`: Optional. When `true`, instead of throwing error on - invalid mapping, it will be ignored. - -```js -var generator = new sourceMap.SourceMapGenerator({ - file: "my-generated-javascript-file.js", - sourceRoot: "http://example.com/app/js/" -}); -``` - -#### SourceMapGenerator.fromSourceMap(sourceMapConsumer, sourceMapGeneratorOptions) - -Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance. - -* `sourceMapConsumer` The SourceMap. - -* `sourceMapGeneratorOptions` options that will be passed to the SourceMapGenerator constructor which used under the hood. - -```js -var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer, { - ignoreInvalidMapping: true, -}); -``` - -#### SourceMapGenerator.prototype.addMapping(mapping) - -Add a single mapping from original source line and column to the generated -source's line and column for this source map being created. The mapping object -should have the following properties: - -* `generated`: An object with the generated line and column positions. - -* `original`: An object with the original line and column positions. - -* `source`: The original source file (relative to the sourceRoot). - -* `name`: An optional original token name for this mapping. - -```js -generator.addMapping({ - source: "module-one.scm", - original: { line: 128, column: 0 }, - generated: { line: 3, column: 456 } -}) -``` - -#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for an original source file. - -* `sourceFile` the URL of the original source file. - -* `sourceContent` the content of the source file. - -```js -generator.setSourceContent("module-one.scm", - fs.readFileSync("path/to/module-one.scm")) -``` - -#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]]) - -Applies a SourceMap for a source file to the SourceMap. -Each mapping to the supplied source file is rewritten using the -supplied SourceMap. Note: The resolution for the resulting mappings -is the minimum of this map and the supplied map. - -* `sourceMapConsumer`: The SourceMap to be applied. - -* `sourceFile`: Optional. The filename of the source file. - If omitted, sourceMapConsumer.file will be used, if it exists. - Otherwise an error will be thrown. - -* `sourceMapPath`: Optional. The dirname of the path to the SourceMap - to be applied. If relative, it is relative to the SourceMap. - - This parameter is needed when the two SourceMaps aren't in the same - directory, and the SourceMap to be applied contains relative source - paths. If so, those relative source paths need to be rewritten - relative to the SourceMap. - - If omitted, it is assumed that both SourceMaps are in the same directory, - thus not needing any rewriting. (Supplying `'.'` has the same effect.) - -#### SourceMapGenerator.prototype.toString() - -Renders the source map being generated to a string. - -```js -generator.toString() -// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}' -``` - -### SourceNode - -SourceNodes provide a way to abstract over interpolating and/or concatenating -snippets of generated JavaScript source code, while maintaining the line and -column information associated between those snippets and the original source -code. This is useful as the final intermediate representation a compiler might -use before outputting the generated JS and source map. - -#### new SourceNode([line, column, source[, chunk[, name]]]) - -* `line`: The original line number associated with this source node, or null if - it isn't associated with an original line. The line number is 1-based. - -* `column`: The original column number associated with this source node, or null - if it isn't associated with an original column. The column number - is 0-based. - -* `source`: The original source's filename; null if no filename is provided. - -* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see - below. - -* `name`: Optional. The original identifier. - -```js -var node = new SourceNode(1, 2, "a.cpp", [ - new SourceNode(3, 4, "b.cpp", "extern int status;\n"), - new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"), - new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"), -]); -``` - -#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath]) - -Creates a SourceNode from generated code and a SourceMapConsumer. - -* `code`: The generated code - -* `sourceMapConsumer` The SourceMap for the generated code - -* `relativePath` The optional path that relative sources in `sourceMapConsumer` - should be relative to. - -```js -var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8")); -var node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"), - consumer); -``` - -#### SourceNode.prototype.add(chunk) - -Add a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -```js -node.add(" + "); -node.add(otherNode); -node.add([leftHandOperandNode, " + ", rightHandOperandNode]); -``` - -#### SourceNode.prototype.prepend(chunk) - -Prepend a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -```js -node.prepend("/** Build Id: f783haef86324gf **/\n\n"); -``` - -#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for a source file. This will be added to the -`SourceMap` in the `sourcesContent` field. - -* `sourceFile`: The filename of the source file - -* `sourceContent`: The content of the source file - -```js -node.setSourceContent("module-one.scm", - fs.readFileSync("path/to/module-one.scm")) -``` - -#### SourceNode.prototype.walk(fn) - -Walk over the tree of JS snippets in this node and its children. The walking -function is called once for each snippet of JS and is passed that snippet and -the its original associated source's line/column location. - -* `fn`: The traversal function. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.walk(function (code, loc) { console.log("WALK:", code, loc); }) -// WALK: uno { source: 'b.js', line: 3, column: 4, name: null } -// WALK: dos { source: 'a.js', line: 1, column: 2, name: null } -// WALK: tres { source: 'a.js', line: 1, column: 2, name: null } -// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null } -``` - -#### SourceNode.prototype.walkSourceContents(fn) - -Walk over the tree of SourceNodes. The walking function is called for each -source file content and is passed the filename and source content. - -* `fn`: The traversal function. - -```js -var a = new SourceNode(1, 2, "a.js", "generated from a"); -a.setSourceContent("a.js", "original a"); -var b = new SourceNode(1, 2, "b.js", "generated from b"); -b.setSourceContent("b.js", "original b"); -var c = new SourceNode(1, 2, "c.js", "generated from c"); -c.setSourceContent("c.js", "original c"); - -var node = new SourceNode(null, null, null, [a, b, c]); -node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); }) -// WALK: a.js : original a -// WALK: b.js : original b -// WALK: c.js : original c -``` - -#### SourceNode.prototype.join(sep) - -Like `Array.prototype.join` except for SourceNodes. Inserts the separator -between each of this source node's children. - -* `sep`: The separator. - -```js -var lhs = new SourceNode(1, 2, "a.rs", "my_copy"); -var operand = new SourceNode(3, 4, "a.rs", "="); -var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()"); - -var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]); -var joinedNode = node.join(" "); -``` - -#### SourceNode.prototype.replaceRight(pattern, replacement) - -Call `String.prototype.replace` on the very right-most source snippet. Useful -for trimming white space from the end of a source node, etc. - -* `pattern`: The pattern to replace. - -* `replacement`: The thing to replace the pattern with. - -```js -// Trim trailing white space. -node.replaceRight(/\s*$/, ""); -``` - -#### SourceNode.prototype.toString() - -Return the string representation of this source node. Walks over the tree and -concatenates all the various snippets together to one string. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.toString() -// 'unodostresquatro' -``` - -#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) - -Returns the string representation of this tree of source nodes, plus a -SourceMapGenerator which contains all the mappings between the generated and -original sources. - -The arguments are the same as those to `new SourceMapGenerator`. - -```js -var node = new SourceNode(1, 2, "a.js", [ - new SourceNode(3, 4, "b.js", "uno"), - "dos", - [ - "tres", - new SourceNode(5, 6, "c.js", "quatro") - ] -]); - -node.toStringWithSourceMap({ file: "my-output-file.js" }) -// { code: 'unodostresquatro', -// map: [object SourceMapGenerator] } -``` diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/array-set.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/array-set.js deleted file mode 100644 index fbd5c81c..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/array-set.js +++ /dev/null @@ -1,121 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); -var has = Object.prototype.hasOwnProperty; -var hasNativeMap = typeof Map !== "undefined"; - -/** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ -function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); -} - -/** - * Static method for creating ArraySet instances from an existing array. - */ -ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; -}; - -/** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ -ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; -}; - -/** - * Add the given string to this set. - * - * @param String aStr - */ -ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } -}; - -/** - * Is the given string a member of this set? - * - * @param String aStr - */ -ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } -}; - -/** - * What is the index of the given string in the array? - * - * @param String aStr - */ -ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); -}; - -/** - * What is the element at the given index? - * - * @param Number aIdx - */ -ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); -}; - -/** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ -ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); -}; - -exports.ArraySet = ArraySet; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/base64-vlq.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/base64-vlq.js deleted file mode 100644 index 612b4040..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/base64-vlq.js +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -var base64 = require('./base64'); - -// A single base 64 digit can contain 6 bits of data. For the base 64 variable -// length quantities we use in the source map spec, the first bit is the sign, -// the next four bits are the actual value, and the 6th bit is the -// continuation bit. The continuation bit tells us whether there are more -// digits in this value following this digit. -// -// Continuation -// | Sign -// | | -// V V -// 101011 - -var VLQ_BASE_SHIFT = 5; - -// binary: 100000 -var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - -// binary: 011111 -var VLQ_BASE_MASK = VLQ_BASE - 1; - -// binary: 100000 -var VLQ_CONTINUATION_BIT = VLQ_BASE; - -/** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ -function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; -} - -/** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ -function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; -} - -/** - * Returns the base 64 VLQ encoded value. - */ -exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; -}; - -/** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ -exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; -}; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/base64.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/base64.js deleted file mode 100644 index 8aa86b30..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/base64.js +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - -/** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ -exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); -}; - -/** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ -exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; -}; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/binary-search.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/binary-search.js deleted file mode 100644 index 010ac941..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/binary-search.js +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -exports.GREATEST_LOWER_BOUND = 1; -exports.LEAST_UPPER_BOUND = 2; - -/** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ -function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } -} - -/** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ -exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; -}; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/mapping-list.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/mapping-list.js deleted file mode 100644 index 06d1274a..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/mapping-list.js +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); - -/** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ -function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; -} - -/** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ -function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; -} - -/** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ -MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - -/** - * Add the given source mapping. - * - * @param Object aMapping - */ -MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } -}; - -/** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ -MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; -}; - -exports.MappingList = MappingList; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/quick-sort.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/quick-sort.js deleted file mode 100644 index 23f9eda5..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/quick-sort.js +++ /dev/null @@ -1,132 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -// It turns out that some (most?) JavaScript engines don't self-host -// `Array.prototype.sort`. This makes sense because C++ will likely remain -// faster than JS when doing raw CPU-intensive sorting. However, when using a -// custom comparator function, calling back and forth between the VM's C++ and -// JIT'd JS is rather slow *and* loses JIT type information, resulting in -// worse generated code for the comparator function than would be optimal. In -// fact, when sorting with a comparator, these costs outweigh the benefits of -// sorting in C++. By using our own JS-implemented Quick Sort (below), we get -// a ~3500ms mean speed-up in `bench/bench.html`. - -function SortTemplate(comparator) { - -/** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ -function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; -} - -/** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ -function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); -} - -/** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ -function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot, false) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } -} - - return doQuickSort; -} - -function cloneSort(comparator) { - let template = SortTemplate.toString(); - let templateFn = new Function(`return ${template}`)(); - return templateFn(comparator); -} - -/** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ - -let sortCache = new WeakMap(); -exports.quickSort = function (ary, comparator, start = 0) { - let doQuickSort = sortCache.get(comparator); - if (doQuickSort === void 0) { - doQuickSort = cloneSort(comparator); - sortCache.set(comparator, doQuickSort); - } - doQuickSort(ary, comparator, start, ary.length - 1); -}; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/source-map-consumer.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/source-map-consumer.js deleted file mode 100644 index db0a5324..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/source-map-consumer.js +++ /dev/null @@ -1,1184 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); -var binarySearch = require('./binary-search'); -var ArraySet = require('./array-set').ArraySet; -var base64VLQ = require('./base64-vlq'); -var quickSort = require('./quick-sort').quickSort; - -function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) - : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); -} - -SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); -} - -/** - * The version of the source mapping spec that we are consuming. - */ -SourceMapConsumer.prototype._version = 3; - -// `__generatedMappings` and `__originalMappings` are arrays that hold the -// parsed mapping coordinates from the source map's "mappings" attribute. They -// are lazily instantiated, accessed via the `_generatedMappings` and -// `_originalMappings` getters respectively, and we only parse the mappings -// and create these arrays once queried for a source location. We jump through -// these hoops because there can be many thousands of mappings, and parsing -// them is expensive, so we only want to do it if we must. -// -// Each object in the arrays is of the form: -// -// { -// generatedLine: The line number in the generated code, -// generatedColumn: The column number in the generated code, -// source: The path to the original source file that generated this -// chunk of code, -// originalLine: The line number in the original source that -// corresponds to this chunk of generated code, -// originalColumn: The column number in the original source that -// corresponds to this chunk of generated code, -// name: The name of the original symbol which generated this chunk of -// code. -// } -// -// All properties except for `generatedLine` and `generatedColumn` can be -// `null`. -// -// `_generatedMappings` is ordered by the generated positions. -// -// `_originalMappings` is ordered by the original positions. - -SourceMapConsumer.prototype.__generatedMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } -}); - -SourceMapConsumer.prototype.__originalMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } -}); - -SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - -SourceMapConsumer.GENERATED_ORDER = 1; -SourceMapConsumer.ORIGINAL_ORDER = 2; - -SourceMapConsumer.GREATEST_LOWER_BOUND = 1; -SourceMapConsumer.LEAST_UPPER_BOUND = 2; - -/** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ -SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - var boundCallback = aCallback.bind(context); - var names = this._names; - var sources = this._sources; - var sourceMapURL = this._sourceMapURL; - - for (var i = 0, n = mappings.length; i < n; i++) { - var mapping = mappings[i]; - var source = mapping.source === null ? null : sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, sourceMapURL); - boundCallback({ - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : names.at(mapping.name) - }); - } - }; - -/** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number is 1-based. - * - column: Optional. the column number in the original source. - * The column number is 0-based. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - -exports.SourceMapConsumer = SourceMapConsumer; - -/** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The first parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ -function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this._absoluteSources = this._sources.toArray().map(function (s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; -} - -BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - -/** - * Utility function to find the index of a source. Returns -1 if not - * found. - */ -BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - - // Maybe aSource is an absolute URL as returned by |sources|. In - // this case we can't simply undo the transform. - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - - return -1; -}; - -/** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @param String aSourceMapURL - * The URL at which the source map can be found (optional) - * @returns BasicSourceMapConsumer - */ -BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function (s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - -/** - * The version of the source mapping spec that we are consuming. - */ -BasicSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._absoluteSources.slice(); - } -}); - -/** - * Provide the JIT with a nice shape / hidden class. - */ -function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; -} - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - -const compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine; -function sortGenerated(array, start) { - let l = array.length; - let n = array.length - start; - if (n <= 1) { - return; - } else if (n == 2) { - let a = array[start]; - let b = array[start + 1]; - if (compareGenerated(a, b) > 0) { - array[start] = b; - array[start + 1] = a; - } - } else if (n < 20) { - for (let i = start; i < l; i++) { - for (let j = i; j > start; j--) { - let a = array[j - 1]; - let b = array[j]; - if (compareGenerated(a, b) <= 0) { - break; - } - array[j - 1] = b; - array[j] = a; - } - } - } else { - quickSort(array, compareGenerated, start); - } -} -BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - let subarrayStart = 0; - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - - sortGenerated(generatedMappings, subarrayStart); - subarrayStart = generatedMappings.length; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - let currentSource = mapping.source; - while (originalMappings.length <= currentSource) { - originalMappings.push(null); - } - if (originalMappings[currentSource] === null) { - originalMappings[currentSource] = []; - } - originalMappings[currentSource].push(mapping); - } - } - } - - sortGenerated(generatedMappings, subarrayStart); - this.__generatedMappings = generatedMappings; - - for (var i = 0; i < originalMappings.length; i++) { - if (originalMappings[i] != null) { - quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource); - } - } - this.__originalMappings = [].concat(...originalMappings); - }; - -/** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ -BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - -/** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ -BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ -BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } - - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - -exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - -/** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The first parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ -function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) - } - }); -} - -IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - -/** - * The version of the source mapping spec that we are consuming. - */ -IndexedSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } -}); - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ -IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content || content === '') { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - -exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/source-map-generator.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/source-map-generator.js deleted file mode 100644 index bab04ff8..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/source-map-generator.js +++ /dev/null @@ -1,444 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var base64VLQ = require('./base64-vlq'); -var util = require('./util'); -var ArraySet = require('./array-set').ArraySet; -var MappingList = require('./mapping-list').MappingList; - -/** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ -function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._ignoreInvalidMapping = util.getArg(aArgs, 'ignoreInvalidMapping', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; -} - -SourceMapGenerator.prototype._version = 3; - -/** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ -SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, { - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - })); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - -/** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ -SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - if (this._validateMapping(generated, original, source, name) === false) { - return; - } - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - -/** - * Set the source content for a source file. - */ -SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - -/** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ -SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - -/** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ -SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - var message = 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - - if (this._ignoreInvalidMapping) { - if (typeof console !== 'undefined' && console.warn) { - console.warn(message); - } - return false; - } else { - throw new Error(message); - } - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - var message = 'Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - }); - - if (this._ignoreInvalidMapping) { - if (typeof console !== 'undefined' && console.warn) { - console.warn(message); - } - return false; - } else { - throw new Error(message) - } - } - }; - -/** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ -SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - -SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - -/** - * Externalize the source map. - */ -SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - -/** - * Render the source map being generated to a string. - */ -SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - -exports.SourceMapGenerator = SourceMapGenerator; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/source-node.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/source-node.js deleted file mode 100644 index 8bcdbe38..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/source-node.js +++ /dev/null @@ -1,413 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; -var util = require('./util'); - -// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other -// operating systems these days (capturing the result). -var REGEX_NEWLINE = /(\r?\n)/; - -// Newline character code for charCodeAt() comparisons -var NEWLINE_CODE = 10; - -// Private symbol for identifying `SourceNode`s when multiple versions of -// the source-map library are loaded. This MUST NOT CHANGE across -// versions! -var isSourceNode = "$$$isSourceNode$$$"; - -/** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ -function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); -} - -/** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ -SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex] || ''; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ''; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - -/** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } -}; - -/** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ -SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; -}; - -/** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ -SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; -}; - -/** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ -SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - -/** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - -/** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ -SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; -}; - -/** - * Returns the string representation of this source node along with a source - * map. - */ -SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; -}; - -exports.SourceNode = SourceNode; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/util.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/util.js deleted file mode 100644 index 430e2d0f..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/lib/util.js +++ /dev/null @@ -1,594 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ -function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } -} -exports.getArg = getArg; - -var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; -var dataUrlRegexp = /^data:.+\,.+$/; - -function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; -} -exports.urlParse = urlParse; - -function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; -} -exports.urlGenerate = urlGenerate; - -var MAX_CACHED_INPUTS = 32; - -/** - * Takes some function `f(input) -> result` and returns a memoized version of - * `f`. - * - * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The - * memoization is a dumb-simple, linear least-recently-used cache. - */ -function lruMemoize(f) { - var cache = []; - - return function(input) { - for (var i = 0; i < cache.length; i++) { - if (cache[i].input === input) { - var temp = cache[0]; - cache[0] = cache[i]; - cache[i] = temp; - return cache[0].result; - } - } - - var result = f(input); - - cache.unshift({ - input, - result, - }); - - if (cache.length > MAX_CACHED_INPUTS) { - cache.pop(); - } - - return result; - }; -} - -/** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '<dir>/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ -var normalize = lruMemoize(function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - // Split the path into parts between `/` characters. This is much faster than - // using `.split(/\/+/g)`. - var parts = []; - var start = 0; - var i = 0; - while (true) { - start = i; - i = path.indexOf("/", start); - if (i === -1) { - parts.push(path.slice(start)); - break; - } else { - parts.push(path.slice(start, i)); - while (i < path.length && path[i] === "/") { - i++; - } - } - } - - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; -}); -exports.normalize = normalize; - -/** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ -function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; -} -exports.join = join; - -exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || urlRegexp.test(aPath); -}; - -/** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ -function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); -} -exports.relative = relative; - -var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); -}()); - -function identity (s) { - return s; -} - -/** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ -function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; -} -exports.toSetString = supportsNullProto ? identity : toSetString; - -function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; -} -exports.fromSetString = supportsNullProto ? identity : fromSetString; - -function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; -} - -/** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ -function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByOriginalPositions = compareByOriginalPositions; - -function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) { - var cmp - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource; - -/** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ -function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - -function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine; - -function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 === null) { - return 1; // aStr2 !== null - } - - if (aStr2 === null) { - return -1; // aStr1 !== null - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; -} - -/** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ -function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - -/** - * Strip any JSON XSSI avoidance prefix from the string (as documented - * in the source maps specification), and then parse the string as - * JSON. - */ -function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); -} -exports.parseSourceMapInput = parseSourceMapInput; - -/** - * Compute the URL of a source given the the source root, the source's - * URL, and the source map's URL. - */ -function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ''; - - if (sourceRoot) { - // This follows what Chrome does. - if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { - sourceRoot += '/'; - } - // The spec says: - // Line 4: An optional source root, useful for relocating source - // files on a server or removing repeated values in the - // “sources” entry. This value is prepended to the individual - // entries in the “source” field. - sourceURL = sourceRoot + sourceURL; - } - - // Historically, SourceMapConsumer did not take the sourceMapURL as - // a parameter. This mode is still somewhat supported, which is why - // this code block is conditional. However, it's preferable to pass - // the source map URL to SourceMapConsumer, so that this function - // can implement the source URL resolution algorithm as outlined in - // the spec. This block is basically the equivalent of: - // new URL(sourceURL, sourceMapURL).toString() - // ... except it avoids using URL, which wasn't available in the - // older releases of node still supported by this library. - // - // The spec says: - // If the sources are not absolute URLs after prepending of the - // “sourceRoot”, the sources are resolved relative to the - // SourceMap (like resolving script src in a html document). - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - // Strip the last path component, but keep the "/". - var index = parsed.path.lastIndexOf('/'); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - - return normalize(sourceURL); -} -exports.computeSourceURL = computeSourceURL; diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/package.json b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/package.json deleted file mode 100644 index f16eb36f..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "source-map-js", - "description": "Generates and consumes source maps", - "version": "1.2.0", - "homepage": "https://github.com/7rulnik/source-map-js", - "author": "Valentin 7rulnik Semirulnik <v7rulnik@gmail.com>", - "contributors": [ - "Nick Fitzgerald <nfitzgerald@mozilla.com>", - "Tobias Koppers <tobias.koppers@googlemail.com>", - "Duncan Beevers <duncan@dweebd.com>", - "Stephen Crane <scrane@mozilla.com>", - "Ryan Seddon <seddon.ryan@gmail.com>", - "Miles Elam <miles.elam@deem.com>", - "Mihai Bazon <mihai.bazon@gmail.com>", - "Michael Ficarra <github.public.email@michael.ficarra.me>", - "Todd Wolfson <todd@twolfson.com>", - "Alexander Solovyov <alexander@solovyov.net>", - "Felix Gnass <fgnass@gmail.com>", - "Conrad Irwin <conrad.irwin@gmail.com>", - "usrbincc <usrbincc@yahoo.com>", - "David Glasser <glasser@davidglasser.net>", - "Chase Douglas <chase@newrelic.com>", - "Evan Wallace <evan.exe@gmail.com>", - "Heather Arthur <fayearthur@gmail.com>", - "Hugh Kennedy <hughskennedy@gmail.com>", - "David Glasser <glasser@davidglasser.net>", - "Simon Lydell <simon.lydell@gmail.com>", - "Jmeas Smith <jellyes2@gmail.com>", - "Michael Z Goddard <mzgoddard@gmail.com>", - "azu <azu@users.noreply.github.com>", - "John Gozde <john@gozde.ca>", - "Adam Kirkton <akirkton@truefitinnovation.com>", - "Chris Montgomery <christopher.montgomery@dowjones.com>", - "J. Ryan Stinnett <jryans@gmail.com>", - "Jack Herrington <jherrington@walmartlabs.com>", - "Chris Truter <jeffpalentine@gmail.com>", - "Daniel Espeset <daniel@danielespeset.com>", - "Jamie Wong <jamie.lf.wong@gmail.com>", - "Eddy Bruël <ejpbruel@mozilla.com>", - "Hawken Rives <hawkrives@gmail.com>", - "Gilad Peleg <giladp007@gmail.com>", - "djchie <djchie.dev@gmail.com>", - "Gary Ye <garysye@gmail.com>", - "Nicolas Lalevée <nicolas.lalevee@hibnet.org>" - ], - "repository": "7rulnik/source-map-js", - "main": "./source-map.js", - "files": [ - "source-map.js", - "source-map.d.ts", - "lib/" - ], - "engines": { - "node": ">=0.10.0" - }, - "license": "BSD-3-Clause", - "scripts": { - "test": "npm run build && node test/run-tests.js", - "build": "webpack --color", - "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" - }, - "devDependencies": { - "clean-publish": "^3.1.0", - "doctoc": "^0.15.0", - "webpack": "^1.12.0" - }, - "clean-publish": { - "cleanDocs": true - }, - "typings": "source-map.d.ts" -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/source-map.d.ts b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/source-map.d.ts deleted file mode 100644 index 9f8a4b38..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/source-map.d.ts +++ /dev/null @@ -1,115 +0,0 @@ -declare module 'source-map-js' { - export interface StartOfSourceMap { - file?: string; - sourceRoot?: string; - } - - export interface RawSourceMap extends StartOfSourceMap { - version: string; - sources: string[]; - names: string[]; - sourcesContent?: string[]; - mappings: string; - } - - export interface Position { - line: number; - column: number; - } - - export interface LineRange extends Position { - lastColumn: number; - } - - export interface FindPosition extends Position { - // SourceMapConsumer.GREATEST_LOWER_BOUND or SourceMapConsumer.LEAST_UPPER_BOUND - bias?: number; - } - - export interface SourceFindPosition extends FindPosition { - source: string; - } - - export interface MappedPosition extends Position { - source: string; - name?: string; - } - - export interface MappingItem { - source: string; - generatedLine: number; - generatedColumn: number; - originalLine: number; - originalColumn: number; - name: string; - } - - export class SourceMapConsumer { - static GENERATED_ORDER: number; - static ORIGINAL_ORDER: number; - - static GREATEST_LOWER_BOUND: number; - static LEAST_UPPER_BOUND: number; - - constructor(rawSourceMap: RawSourceMap); - computeColumnSpans(): void; - originalPositionFor(generatedPosition: FindPosition): MappedPosition; - generatedPositionFor(originalPosition: SourceFindPosition): LineRange; - allGeneratedPositionsFor(originalPosition: MappedPosition): Position[]; - hasContentsOfAllSources(): boolean; - sourceContentFor(source: string, returnNullOnMissing?: boolean): string; - eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void; - } - - export interface Mapping { - generated: Position; - original: Position; - source: string; - name?: string; - } - - export class SourceMapGenerator { - constructor(startOfSourceMap?: StartOfSourceMap); - static fromSourceMap(sourceMapConsumer: SourceMapConsumer): SourceMapGenerator; - addMapping(mapping: Mapping): void; - setSourceContent(sourceFile: string, sourceContent: string): void; - applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void; - toString(): string; - } - - export interface CodeWithSourceMap { - code: string; - map: SourceMapGenerator; - } - - export class SourceNode { - constructor(); - constructor(line: number, column: number, source: string); - constructor(line: number, column: number, source: string, chunk?: string, name?: string); - static fromStringWithSourceMap(code: string, sourceMapConsumer: SourceMapConsumer, relativePath?: string): SourceNode; - add(chunk: string): void; - prepend(chunk: string): void; - setSourceContent(sourceFile: string, sourceContent: string): void; - walk(fn: (chunk: string, mapping: MappedPosition) => void): void; - walkSourceContents(fn: (file: string, content: string) => void): void; - join(sep: string): SourceNode; - replaceRight(pattern: string, replacement: string): SourceNode; - toString(): string; - toStringWithSourceMap(startOfSourceMap?: StartOfSourceMap): CodeWithSourceMap; - } -} - -declare module 'source-map-js/lib/source-map-generator' { - import { SourceMapGenerator } from 'source-map-js' - export { SourceMapGenerator } -} - -declare module 'source-map-js/lib/source-map-consumer' { - import { SourceMapConsumer } from 'source-map-js' - export { SourceMapConsumer } -} - -declare module 'source-map-js/lib/source-node' { - import { SourceNode } from 'source-map-js' - export { SourceNode } -} diff --git a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/source-map.js b/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/source-map.js deleted file mode 100644 index bc88fe82..00000000 --- a/node_modules/csso/node_modules/css-tree/node_modules/source-map-js/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./lib/source-node').SourceNode; diff --git a/node_modules/csso/node_modules/css-tree/package.json b/node_modules/csso/node_modules/css-tree/package.json deleted file mode 100644 index c199c5ac..00000000 --- a/node_modules/csso/node_modules/css-tree/package.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "name": "css-tree", - "version": "2.2.1", - "description": "A tool set for CSS: fast detailed parser (CSS → AST), walker (AST traversal), generator (AST → CSS) and lexer (validation and matching) based on specs and browser implementations", - "author": "Roman Dvornov <rdvornov@gmail.com> (https://github.com/lahmatiy)", - "license": "MIT", - "repository": "csstree/csstree", - "keywords": [ - "css", - "ast", - "tokenizer", - "parser", - "walker", - "lexer", - "generator", - "utils", - "syntax", - "validation" - ], - "type": "module", - "module": "./lib/index.js", - "main": "./cjs/index.cjs", - "exports": { - ".": { - "import": "./lib/index.js", - "require": "./cjs/index.cjs" - }, - "./dist/*": "./dist/*.js", - "./package.json": "./package.json", - "./tokenizer": { - "import": "./lib/tokenizer/index.js", - "require": "./cjs/tokenizer/index.cjs" - }, - "./parser": { - "import": "./lib/parser/index.js", - "require": "./cjs/parser/index.cjs" - }, - "./selector-parser": { - "import": "./lib/parser/parse-selector.js", - "require": "./cjs/parser/parse-selector.cjs" - }, - "./generator": { - "import": "./lib/generator/index.js", - "require": "./cjs/generator/index.cjs" - }, - "./walker": { - "import": "./lib/walker/index.js", - "require": "./cjs/walker/index.cjs" - }, - "./convertor": { - "import": "./lib/convertor/index.js", - "require": "./cjs/convertor/index.cjs" - }, - "./lexer": { - "import": "./lib/lexer/index.js", - "require": "./cjs/lexer/index.cjs" - }, - "./definition-syntax": { - "import": "./lib/definition-syntax/index.js", - "require": "./cjs/definition-syntax/index.cjs" - }, - "./definition-syntax-data": { - "import": "./lib/data.js", - "require": "./cjs/data.cjs" - }, - "./definition-syntax-data-patch": { - "import": "./lib/data-patch.js", - "require": "./cjs/data-patch.cjs" - }, - "./utils": { - "import": "./lib/utils/index.js", - "require": "./cjs/utils/index.cjs" - } - }, - "browser": { - "./cjs/data.cjs": "./dist/data.cjs", - "./cjs/version.cjs": "./dist/version.cjs", - "./lib/data.js": "./dist/data.js", - "./lib/version.js": "./dist/version.js" - }, - "unpkg": "dist/csstree.esm.js", - "jsdelivr": "dist/csstree.esm.js", - "scripts": { - "watch": "npm run build -- --watch", - "build": "npm run bundle && npm run esm-to-cjs --", - "build-and-test": "npm run build && npm run test:dist && npm run test:cjs", - "bundle": "node scripts/bundle", - "bundle-and-test": "npm run bundle && npm run test:dist", - "esm-to-cjs": "node scripts/esm-to-cjs.cjs", - "esm-to-cjs-and-test": "npm run esm-to-cjs && npm run test:cjs", - "lint": "eslint lib scripts && node scripts/review-syntax-patch --lint && node scripts/update-docs --lint", - "lint-and-test": "npm run lint && npm test", - "update:docs": "node scripts/update-docs", - "review:syntax-patch": "node scripts/review-syntax-patch", - "test": "mocha lib/__tests --reporter ${REPORTER:-progress}", - "test:cjs": "mocha cjs/__tests --reporter ${REPORTER:-progress}", - "test:dist": "mocha dist/__tests --reporter ${REPORTER:-progress}", - "coverage": "c8 --exclude lib/__tests --reporter=lcovonly npm test", - "prepublishOnly": "npm run lint-and-test && npm run build-and-test", - "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/parse --stat -o /dev/null" - }, - "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" - }, - "devDependencies": { - "c8": "^7.7.1", - "clap": "^2.0.1", - "esbuild": "^0.14.53", - "eslint": "^8.4.1", - "json-to-ast": "^2.1.0", - "mocha": "^9.1.4", - "rollup": "^2.68.0" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - }, - "files": [ - "data", - "dist", - "cjs", - "!cjs/__tests", - "lib", - "!lib/__tests" - ] -} diff --git a/node_modules/csso/package.json b/node_modules/csso/package.json deleted file mode 100644 index 1920d8fd..00000000 --- a/node_modules/csso/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "name": "csso", - "version": "5.0.5", - "description": "CSS minifier with structural optimisations", - "author": "Sergey Kryzhanovsky <skryzhanovsky@ya.ru> (https://github.com/afelix)", - "maintainers": [ - { - "name": "Roman Dvornov", - "email": "rdvornov@gmail.com", - "github-username": "lahmatiy" - } - ], - "repository": "css/csso", - "license": "MIT", - "keywords": [ - "css", - "compress", - "minifier", - "minify", - "optimise", - "optimisation", - "csstree" - ], - "type": "module", - "unpkg": "dist/csso.esm.js", - "jsdelivr": "dist/csso.esm.js", - "browser": { - "./cjs/version.cjs": "./dist/version.cjs", - "./lib/version.js": "./dist/version.js" - }, - "main": "./cjs/index.cjs", - "module": "./lib/index.js", - "exports": { - ".": { - "import": "./lib/index.js", - "require": "./cjs/index.cjs" - }, - "./syntax": { - "import": "./lib/syntax.js", - "require": "./cjs/syntax.cjs" - }, - "./dist/*": "./dist/*.js", - "./package.json": "./package.json" - }, - "scripts": { - "test": "mocha test --reporter ${REPORTER:-progress}", - "test:cjs": "mocha cjs-test --reporter ${REPORTER:-progress}", - "test:dist": "mocha dist/test --reporter ${REPORTER:-progress}", - "lint": "eslint lib scripts test", - "lint-and-test": "npm run lint && npm test", - "build": "npm run bundle && npm run esm-to-cjs", - "build-and-test": "npm run build && npm run test:dist && npm run test:cjs", - "bundle": "node scripts/bundle", - "bundle-and-test": "npm run bundle && npm run test:dist", - "esm-to-cjs": "node scripts/esm-to-cjs.cjs", - "esm-to-cjs-and-test": "npm run esm-to-cjs && npm run test:cjs", - "coverage": "c8 --reporter=lcovonly npm test", - "prepublishOnly": "npm run lint-and-test && npm run build-and-test", - "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/csso --stat -o /dev/null" - }, - "dependencies": { - "css-tree": "~2.2.0" - }, - "devDependencies": { - "c8": "^7.10.0", - "esbuild": "^0.14.54", - "eslint": "^7.24.0", - "mocha": "^9.2.2", - "rollup": "^2.60.2", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - }, - "files": [ - "dist", - "!dist/test", - "cjs", - "lib" - ] -} |
