Comparing version 1.0.0-alpha.33 to 1.0.0-alpha.34
@@ -1,7 +0,20 @@ | ||
## 1.0.0-alpha.33 (July 12, 2019) | ||
## 1.0.0-alpha.34 (July 27, 2019) | ||
- Tokenizer | ||
- Added `isBOM()` function | ||
- Added `charCodeCategory()` function | ||
- Removed `firstCharOffset()` function (use `isBOM()` instead) | ||
- Removed `CHARCODE` dictionary | ||
- Removed `INPUT_STREAM_CODE*` dictionaries | ||
- Lexer | ||
- Allowed comments in matching value (just ignore them like whitespaces) | ||
- Increased iteration count in value matching from 10k up to 15k | ||
- Fixed missed `debugger` (#104) | ||
## 1.0.0-alpha.33 (July 11, 2019) | ||
- Lexer | ||
- Fixed low priority productions matching by changing an approach for robust one (#103) | ||
## 1.0.0-alpha.32 (July 12, 2019) | ||
## 1.0.0-alpha.32 (July 11, 2019) | ||
@@ -8,0 +21,0 @@ - Lexer |
@@ -542,7 +542,7 @@ { | ||
"comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter", | ||
"syntax": "'progid:' [ <ident-token> '.' ]* [ <ident-token> | <function-token> <any-value>? ')' ]" | ||
"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>? ')'" | ||
"syntax": "<ident-token> | <function-token> <any-value>? )" | ||
}, | ||
@@ -549,0 +549,0 @@ "-ms-filter": { |
@@ -1,1 +0,1 @@ | ||
{"generic":true,"types":{"absolute-size":"xx-small | x-small | small | medium | large | x-large | xx-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()>","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()> | <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":"searchfield | textarea | push-button | button-bevel | slider-horizontal | checkbox | radio | square-button | menulist | menulist-button | listbox | meter | progress-bar","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 | <url> | <quote> | <attr()> | counter( <ident> , <'list-style-type'>? ) ]+","content-position":"center | start | end | flex-start | flex-end","content-replacement":"<image>","contrast()":"contrast( [ <number-percentage> ] )","counter()":"counter( <custom-ident> , [ <counter-style> | none ]? )","counter-style":"<counter-style-name> | symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <custom-ident> , <string> , [ <counter-style> | none ]? )","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> , <number> , <number> , <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( <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( [ <positive-integer> ] , [ <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>","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()> | <-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> )","image":"<url> | <image()> | <image-set()> | <element()> | <cross-fade()> | <gradient>","image()":"image( <image-tags>? [ <image-src>? , <color>? ]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[ <image> | <string> ] <resolution>","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>","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> | <flex> | min-content | max-content | auto ] , [ <length> | <percentage> | <flex> | min-content | max-content | auto ] )","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>*","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-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> || <timing-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-transition":"[ none | <single-transition-property> ] || <time> || <timing-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>","timing-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( [ <positive-integer> ] , [ <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>","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":"min-intrinsic | intrinsic | -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>","border-radius":"<length-percentage>{1,2}","bottom":"<length> | auto","generic-voice":"[ <age>? <gender> <integer>? ]","gender":"male | female | neutral","left":"<length> | auto","mask-image":"<mask-reference>#","name-repeat":"repeat( [ <positive-integer> | auto-fill ] , <line-names>+ )","paint":"none | <color> | <url> [ none | <color> ]? | context-fill | context-stroke","path()":"path( <string> )","ratio":"<integer> / <integer>","right":"<length> | auto","svg-length":"<percentage> | <length> | <number>","svg-writing-mode":"lr-tb | rl-tb | tb-rl | lr | rl | tb","top":"<length> | auto","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,∞]>"},"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-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":"<integer>","-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 | listbox | listitem | media-fullscreen-button | media-mute-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | 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","-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","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>","all":"initial | inherit | unset | revert","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":"<timing-function>#","appearance":"none | auto | button | textfield | <compat>","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":"<box>#","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>","color-adjust":"economy | exact","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-increment":"[ <custom-ident> <integer>? ]+ | none","counter-reset":"[ <custom-ident> <integer>? ]+ | none","counter-set":"[ <custom-ident> <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":"none | inline | block | list-item | inline-list-item | inline-block | inline-table | table | table-cell | table-column | table-column-group | table-footer-group | table-header-group | table-row | table-row-group | flex | inline-flex | grid | inline-grid | run-in | ruby | ruby-base | ruby-text | ruby-base-container | ruby-text-container | contents | -ms-flexbox | -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","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 | <number>","font-stretch":"<font-stretch-absolute>","font-style":"normal | italic | oblique <angle>?","font-synthesis":"none | [ weight || style ]","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","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>","grid-template-rows":"none | <track-list> | <auto-track-list>","hanging-punctuation":"none | [ first || [ force-end | allow-end ] || last ]","height":"[ <length> | <percentage> ] && [ border-box | content-box ]? | available | min-content | max-content | fit-content | auto","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'>","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 ]","left":"<length> | <percentage> | auto","letter-spacing":"normal | <length-percentage>","line-break":"auto | loose | normal | strict","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":"<url> | 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","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","max-block-size":"<'max-width'>","max-height":"<length> | <percentage> | none | max-content | min-content | fit-content | fill-available","max-inline-size":"<'max-width'>","max-lines":"none | <integer>","max-width":"<length> | <percentage> | none | max-content | min-content | fit-content | fill-available | <-non-standard-width>","min-block-size":"<'min-width'>","min-height":"<length> | <percentage> | auto | max-content | min-content | fit-content | fill-available","min-inline-size":"<'min-width'>","min-width":"<length> | <percentage> | auto | max-content | min-content | fit-content | fill-available | <-non-standard-width>","mix-blend-mode":"<blend-mode>","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":"<number-zero-one>","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-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-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 | [ <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":"over | under | inter-character","scale":"none | <number>{1,3}","scrollbar-color":"auto | dark | light | <color>{2}","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":"<number>","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-color":"<color>","text-decoration-line":"none | [ underline || overline || line-through || blink ]","text-decoration-skip":"none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]","text-decoration-skip-ink":"auto | none","text-decoration-style":"solid | double | dotted | dashed | wavy","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-position":"auto | [ 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":"border-box | fill-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":"<timing-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","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","widows":"<integer>","width":"[ <length> | <percentage> ] && [ border-box | content-box ]? | available | min-content | max-content | fit-content | auto","will-change":"auto | <animateable-feature>#","word-break":"normal | break-all | keep-all | break-word","word-spacing":"normal | <length-percentage>","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-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","-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> ]"}} | ||
{"generic":true,"types":{"absolute-size":"xx-small | x-small | small | medium | large | x-large | xx-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()>","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()> | <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":"searchfield | textarea | push-button | button-bevel | slider-horizontal | checkbox | radio | square-button | menulist | menulist-button | listbox | meter | progress-bar","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 | <url> | <quote> | <attr()> | counter( <ident> , <'list-style-type'>? ) ]+","content-position":"center | start | end | flex-start | flex-end","content-replacement":"<image>","contrast()":"contrast( [ <number-percentage> ] )","counter()":"counter( <custom-ident> , [ <counter-style> | none ]? )","counter-style":"<counter-style-name> | symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <custom-ident> , <string> , [ <counter-style> | none ]? )","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> , <number> , <number> , <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( <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( [ <positive-integer> ] , [ <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>","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()> | <-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> )","image":"<url> | <image()> | <image-set()> | <element()> | <cross-fade()> | <gradient>","image()":"image( <image-tags>? [ <image-src>? , <color>? ]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[ <image> | <string> ] <resolution>","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>","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> | <flex> | min-content | max-content | auto ] , [ <length> | <percentage> | <flex> | min-content | max-content | auto ] )","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>*","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-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> || <timing-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-transition":"[ none | <single-transition-property> ] || <time> || <timing-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>","timing-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( [ <positive-integer> ] , [ <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>","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":"min-intrinsic | intrinsic | -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>","border-radius":"<length-percentage>{1,2}","bottom":"<length> | auto","generic-voice":"[ <age>? <gender> <integer>? ]","gender":"male | female | neutral","left":"<length> | auto","mask-image":"<mask-reference>#","name-repeat":"repeat( [ <positive-integer> | auto-fill ] , <line-names>+ )","paint":"none | <color> | <url> [ none | <color> ]? | context-fill | context-stroke","path()":"path( <string> )","ratio":"<integer> / <integer>","right":"<length> | auto","svg-length":"<percentage> | <length> | <number>","svg-writing-mode":"lr-tb | rl-tb | tb-rl | lr | rl | tb","top":"<length> | auto","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,∞]>"},"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-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":"<integer>","-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 | listbox | listitem | media-fullscreen-button | media-mute-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | 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","-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","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>","all":"initial | inherit | unset | revert","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":"<timing-function>#","appearance":"none | auto | button | textfield | <compat>","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":"<box>#","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>","color-adjust":"economy | exact","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-increment":"[ <custom-ident> <integer>? ]+ | none","counter-reset":"[ <custom-ident> <integer>? ]+ | none","counter-set":"[ <custom-ident> <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":"none | inline | block | list-item | inline-list-item | inline-block | inline-table | table | table-cell | table-column | table-column-group | table-footer-group | table-header-group | table-row | table-row-group | flex | inline-flex | grid | inline-grid | run-in | ruby | ruby-base | ruby-text | ruby-base-container | ruby-text-container | contents | -ms-flexbox | -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","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 | <number>","font-stretch":"<font-stretch-absolute>","font-style":"normal | italic | oblique <angle>?","font-synthesis":"none | [ weight || style ]","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","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>","grid-template-rows":"none | <track-list> | <auto-track-list>","hanging-punctuation":"none | [ first || [ force-end | allow-end ] || last ]","height":"[ <length> | <percentage> ] && [ border-box | content-box ]? | available | min-content | max-content | fit-content | auto","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'>","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 ]","left":"<length> | <percentage> | auto","letter-spacing":"normal | <length-percentage>","line-break":"auto | loose | normal | strict","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":"<url> | 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","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","max-block-size":"<'max-width'>","max-height":"<length> | <percentage> | none | max-content | min-content | fit-content | fill-available","max-inline-size":"<'max-width'>","max-lines":"none | <integer>","max-width":"<length> | <percentage> | none | max-content | min-content | fit-content | fill-available | <-non-standard-width>","min-block-size":"<'min-width'>","min-height":"<length> | <percentage> | auto | max-content | min-content | fit-content | fill-available","min-inline-size":"<'min-width'>","min-width":"<length> | <percentage> | auto | max-content | min-content | fit-content | fill-available | <-non-standard-width>","mix-blend-mode":"<blend-mode>","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":"<number-zero-one>","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-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-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 | [ <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":"over | under | inter-character","scale":"none | <number>{1,3}","scrollbar-color":"auto | dark | light | <color>{2}","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":"<number>","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-color":"<color>","text-decoration-line":"none | [ underline || overline || line-through || blink ]","text-decoration-skip":"none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]","text-decoration-skip-ink":"auto | none","text-decoration-style":"solid | double | dotted | dashed | wavy","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-position":"auto | [ 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":"border-box | fill-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":"<timing-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","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","widows":"<integer>","width":"[ <length> | <percentage> ] && [ border-box | content-box ]? | available | min-content | max-content | fit-content | auto","will-change":"auto | <animateable-feature>#","word-break":"normal | break-all | keep-all | break-word","word-spacing":"normal | <length-percentage>","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-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","-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> ]"}} |
var adoptBuffer = require('./adopt-buffer'); | ||
var firstCharOffset = require('../tokenizer/utils').firstCharOffset; | ||
var isBOM = require('../tokenizer').isBOM; | ||
@@ -8,3 +8,3 @@ var N = 10; | ||
function computeLinesAndColumns(host, startOffset, source) { | ||
function computeLinesAndColumns(host, source) { | ||
var sourceLength = source.length; | ||
@@ -15,2 +15,3 @@ var lines = adoptBuffer(host.lines, sourceLength); // +1 | ||
var column = host.startColumn; | ||
var startOffset = source.length > 0 ? isBOM(source.charCodeAt(0)) : 0; | ||
@@ -59,3 +60,3 @@ for (var i = startOffset; i < sourceLength; i++) { // -1 | ||
if (!this.linesAndColumnsComputed) { | ||
computeLinesAndColumns(this, firstCharOffset(this.source), this.source); | ||
computeLinesAndColumns(this, this.source); | ||
this.linesAndColumnsComputed = true; | ||
@@ -62,0 +63,0 @@ } |
@@ -8,3 +8,3 @@ var constants = require('../tokenizer/const'); | ||
var NULL = 0; | ||
var EOF = TYPE.EOF; | ||
var WHITESPACE = TYPE.WhiteSpace; | ||
@@ -39,3 +39,3 @@ var COMMENT = TYPE.Comment; | ||
return NULL; | ||
return EOF; | ||
}, | ||
@@ -187,3 +187,3 @@ lookupOffset: function(offset) { | ||
this.eof = true; | ||
this.tokenType = NULL; | ||
this.tokenType = EOF; | ||
this.tokenStart = this.tokenEnd = this.source.length; | ||
@@ -194,3 +194,3 @@ } | ||
dump: function() { | ||
var offset = 0; | ||
var offset = this.firstCharOffset; | ||
@@ -197,0 +197,0 @@ return Array.prototype.slice.call(this.offsetAndType, 0, this.tokenCount).map(function(item, idx) { |
var isDigit = require('../tokenizer').isDigit; | ||
var cmpChar = require('../tokenizer').cmpChar; | ||
var TYPE = require('../tokenizer').TYPE; | ||
var CHARCODE = require('../tokenizer').CHARCODE; | ||
@@ -12,5 +11,5 @@ var DELIM = TYPE.Delim; | ||
var DIMENSION = TYPE.Dimension; | ||
var PLUSSIGN = CHARCODE.PlusSign; | ||
var HYPHENMINUS = CHARCODE.HyphenMinus; | ||
var N = 110; // 'n'.charCodeAt(0) | ||
var PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) | ||
var HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) | ||
var N = 0x006E; // U+006E LATIN SMALL LETTER N (n) | ||
var DISALLOW_SIGN = true; | ||
@@ -17,0 +16,0 @@ var ALLOW_SIGN = false; |
var isHexDigit = require('../tokenizer').isHexDigit; | ||
var cmpChar = require('../tokenizer').cmpChar; | ||
var TYPE = require('../tokenizer').TYPE; | ||
var CHARCODE = require('../tokenizer').CHARCODE; | ||
@@ -10,6 +9,6 @@ var IDENT = TYPE.Ident; | ||
var DIMENSION = TYPE.Dimension; | ||
var PLUSSIGN = CHARCODE.PlusSign; | ||
var HYPHENMINUS = CHARCODE.HyphenMinus; | ||
var QUESTIONMARK = CHARCODE.QuestionMark; | ||
var U = 117; // 'u'.charCodeAt() | ||
var PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) | ||
var HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) | ||
var QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?) | ||
var U = 0x0075; // U+0075 LATIN SMALL LETTER U (u) | ||
@@ -16,0 +15,0 @@ function isDelim(token, code) { |
@@ -1,8 +0,8 @@ | ||
var tokenizerUtils = require('../tokenizer/utils'); | ||
var isIdentifierStart = tokenizerUtils.isIdentifierStart; | ||
var isHexDigit = tokenizerUtils.isHexDigit; | ||
var isDigit = tokenizerUtils.isDigit; | ||
var cmpStr = tokenizerUtils.cmpStr; | ||
var consumeNumber = tokenizerUtils.consumeNumber; | ||
var TYPE = require('../tokenizer/const').TYPE; | ||
var tokenizer = require('../tokenizer'); | ||
var isIdentifierStart = tokenizer.isIdentifierStart; | ||
var isHexDigit = tokenizer.isHexDigit; | ||
var isDigit = tokenizer.isDigit; | ||
var cmpStr = tokenizer.cmpStr; | ||
var consumeNumber = tokenizer.consumeNumber; | ||
var TYPE = tokenizer.TYPE; | ||
var anPlusB = require('./generic-an-plus-b'); | ||
@@ -399,3 +399,2 @@ var urange = require('./generic-urange'); | ||
return function(token, getNextToken, opts) { | ||
debugger; | ||
if (token === null || token.type !== TYPE.Dimension) { | ||
@@ -402,0 +401,0 @@ return 0; |
@@ -17,14 +17,18 @@ var hasOwnProperty = Object.prototype.hasOwnProperty; | ||
var ITERATION_LIMIT = 10000; | ||
var ITERATION_LIMIT = 15000; | ||
var totalIterationCount = 0; | ||
function mapList(list, fn) { | ||
var result = []; | ||
function reverseList(list) { | ||
var prev = null; | ||
var next = null; | ||
var item = list; | ||
while (list) { | ||
result.unshift(fn(list)); | ||
list = list.prev; | ||
while (item !== null) { | ||
next = item.prev; | ||
item.prev = prev; | ||
prev = item; | ||
item = next; | ||
} | ||
return result; | ||
return prev; | ||
} | ||
@@ -59,9 +63,9 @@ | ||
var ch = token.value.charAt(token.value.length - 1); | ||
return ( | ||
ch === ',' || | ||
ch === '(' || | ||
ch === '[' || | ||
ch === '/' | ||
token.type === TYPE.Comma || | ||
token.type === TYPE.Function || | ||
token.type === TYPE.LeftParenthesis || | ||
token.type === TYPE.LeftSquareBracket || | ||
token.type === TYPE.LeftCurlyBracket || | ||
token.type === TYPE.Delim | ||
); | ||
@@ -75,8 +79,7 @@ } | ||
var ch = token.value.charAt(0); | ||
return ( | ||
ch === ')' || | ||
ch === ']' || | ||
ch === '/' | ||
token.type === TYPE.RightParenthesis || | ||
token.type === TYPE.RightSquareBracket || | ||
token.type === TYPE.RightCurlyBracket || | ||
token.type === TYPE.Delim | ||
); | ||
@@ -90,3 +93,3 @@ } | ||
token = tokenIndex < tokens.length ? tokens[tokenIndex] : null; | ||
} while (token !== null && !/\S/.test(token.value)); | ||
} while (token !== null && (token.type === TYPE.WhiteSpace || token.type === TYPE.Comment)); | ||
} | ||
@@ -107,3 +110,2 @@ | ||
tokenIndex: tokenIndex, | ||
token: token, | ||
prev: prev | ||
@@ -144,3 +146,3 @@ }; | ||
syntaxStack = { | ||
syntax: state, | ||
syntax: state.syntax, | ||
opts: state.syntax.opts || (syntaxStack !== null && syntaxStack.opts) || null, | ||
@@ -198,2 +200,10 @@ prev: syntaxStack | ||
while (exitReason === null && ++iterationCount < ITERATION_LIMIT) { | ||
// function mapList(list, fn) { | ||
// var result = []; | ||
// while (list) { | ||
// result.unshift(fn(list)); | ||
// list = list.prev; | ||
// } | ||
// return result; | ||
// } | ||
// console.log('--\n', | ||
@@ -203,6 +213,4 @@ // '#' + iterationCount, | ||
// 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), | ||
// elseStack: mapList(elseStack, x => x.id), | ||
// thenStack: mapList(thenStack, x => x.id), | ||
// token: token && token.value, | ||
// tokenCursor, | ||
// tokenIndex, | ||
// syntax: syntax.type + (syntax.id ? ' #' + syntax.id : '') | ||
@@ -233,3 +241,3 @@ // }, { depth: null }) | ||
if (state === DISALLOW_EMPTY) { | ||
if (thenStack.matchStack.token === matchStack.token) { | ||
if (thenStack.matchStack === matchStack) { | ||
state = MISMATCH; | ||
@@ -243,3 +251,3 @@ break; | ||
// close syntax if needed | ||
while (syntaxStack !== null && thenStack.syntaxStack !== syntaxStack) { | ||
while (thenStack.syntaxStack !== syntaxStack) { | ||
closeSyntax(); | ||
@@ -276,3 +284,3 @@ } | ||
tokenIndex = elseStack.tokenIndex; | ||
token = elseStack.token; | ||
token = tokenIndex < tokens.length ? tokens[tokenIndex] : null; | ||
@@ -380,6 +388,6 @@ // pop stack | ||
var opts = syntaxStack !== null ? syntaxStack.opts : null; | ||
var tokenCount = Math.floor(state.fn(token, getNextToken, opts)); | ||
var lastTokenIndex = tokenIndex + Math.floor(state.fn(token, getNextToken, opts)); | ||
if (!isNaN(tokenCount) && tokenCount > 0) { | ||
for (var lastTokenIndex = tokenIndex + tokenCount; tokenIndex < lastTokenIndex;) { | ||
if (!isNaN(lastTokenIndex) && lastTokenIndex > tokenIndex) { | ||
while (tokenIndex < lastTokenIndex) { | ||
addTokenToMatch(); | ||
@@ -449,3 +457,2 @@ } | ||
addTokenToMatch(); | ||
state = MATCH; | ||
@@ -463,3 +470,2 @@ break; | ||
addTokenToMatch(); | ||
state = MATCH; | ||
@@ -475,3 +481,2 @@ break; | ||
addTokenToMatch(); | ||
state = MATCH; | ||
@@ -485,3 +490,3 @@ break; | ||
case 'Comma': | ||
if (token !== null && token.value === ',') { | ||
if (token !== null && token.type === TYPE.Comma) { | ||
if (isCommaContextStart(matchStack.token)) { | ||
@@ -507,3 +512,3 @@ state = MISMATCH; | ||
if (areStringsEqualCaseInsensitive(string, state.value)) { | ||
for (; tokenIndex < lastTokenIndex;) { | ||
while (tokenIndex < lastTokenIndex) { | ||
addTokenToMatch(); | ||
@@ -526,13 +531,17 @@ } | ||
if (exitReason === null) { | ||
console.warn('[csstree-match] BREAK after ' + ITERATION_LIMIT + ' iterations'); | ||
exitReason = EXIT_REASON_ITERATION_LIMIT; | ||
} | ||
switch (exitReason) { | ||
case null: | ||
console.warn('[csstree-match] BREAK after ' + ITERATION_LIMIT + ' iterations'); | ||
exitReason = EXIT_REASON_ITERATION_LIMIT; | ||
matchStack = null; | ||
break; | ||
if (exitReason === EXIT_REASON_MATCH) { | ||
while (syntaxStack !== null) { | ||
closeSyntax(); | ||
} | ||
} else { | ||
matchStack = null; | ||
case EXIT_REASON_MATCH: | ||
while (syntaxStack !== null) { | ||
closeSyntax(); | ||
} | ||
break; | ||
default: | ||
matchStack = null; | ||
} | ||
@@ -553,13 +562,29 @@ | ||
if (matchResult.match !== null) { | ||
matchResult.match = mapList(matchResult.match, function(item) { | ||
if (item.type === OPEN_SYNTAX || item.type === CLOSE_SYNTAX) { | ||
return { type: item.type, syntax: item.syntax }; | ||
var item = reverseList(matchResult.match).prev; | ||
matchResult.match = []; | ||
while (item !== null) { | ||
switch (item.type) { | ||
case STUB: | ||
break; | ||
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; | ||
} | ||
return { | ||
syntax: item.syntax, | ||
token: item.token && item.token.value, | ||
node: item.token && item.token.node | ||
}; | ||
}).slice(1); | ||
item = item.prev; | ||
} | ||
} | ||
@@ -577,3 +602,3 @@ | ||
var cursor = matchResult.match; | ||
var item = matchResult.match; | ||
var host = matchResult.match = { | ||
@@ -583,33 +608,21 @@ syntax: matchGraph.syntax || null, | ||
}; | ||
var stack = [host]; | ||
var hostStack = [host]; | ||
// revert a list | ||
var prev = null; | ||
var next = null; | ||
while (cursor !== null) { | ||
next = cursor.prev; | ||
cursor.prev = prev; | ||
prev = cursor; | ||
cursor = next; | ||
} | ||
// revert a list and start with 2nd item since 1st is a stub item | ||
item = reverseList(item).prev; | ||
// init the cursor to start with 2nd item since 1st is a stub item | ||
cursor = prev.prev; | ||
// build a tree | ||
while (cursor !== null && cursor.syntax !== null) { | ||
var entry = cursor; | ||
switch (entry.type) { | ||
while (item !== null) { | ||
switch (item.type) { | ||
case OPEN_SYNTAX: | ||
host.match.push(host = { | ||
syntax: entry.syntax, | ||
syntax: item.syntax, | ||
match: [] | ||
}); | ||
stack.push(host); | ||
hostStack.push(host); | ||
break; | ||
case CLOSE_SYNTAX: | ||
stack.pop(); | ||
host = stack[stack.length - 1]; | ||
hostStack.pop(); | ||
host = hostStack[hostStack.length - 1]; | ||
break; | ||
@@ -619,9 +632,9 @@ | ||
host.match.push({ | ||
syntax: entry.syntax || null, | ||
token: entry.token.value, | ||
node: entry.token.node | ||
syntax: item.syntax || null, | ||
token: item.token.value, | ||
node: item.token.node | ||
}); | ||
} | ||
cursor = cursor.prev; | ||
item = item.prev; | ||
} | ||
@@ -628,0 +641,0 @@ |
@@ -20,3 +20,3 @@ var OffsetToLocation = require('../common/OffsetToLocation'); | ||
var NUMBER = TYPE.Number; | ||
var NUMBERSIGN = constants.CHARCODE.NumberSign; | ||
var NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) | ||
var NULL = 0; | ||
@@ -23,0 +23,0 @@ |
var cmpChar = require('../../tokenizer').cmpChar; | ||
var isDigit = require('../../tokenizer').isDigit; | ||
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
@@ -11,5 +10,5 @@ var WHITESPACE = TYPE.WhiteSpace; | ||
var DIMENSION = TYPE.Dimension; | ||
var PLUSSIGN = CHARCODE.PlusSign; | ||
var HYPHENMINUS = CHARCODE.HyphenMinus; | ||
var N = 110; // 'n'.charCodeAt(0) | ||
var PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) | ||
var HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) | ||
var N = 0x006E; // U+006E LATIN SMALL LETTER N (n) | ||
var DISALLOW_SIGN = true; | ||
@@ -16,0 +15,0 @@ var ALLOW_SIGN = false; |
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
@@ -9,8 +8,8 @@ var IDENT = TYPE.Ident; | ||
var RIGHTSQUAREBRACKET = TYPE.RightSquareBracket; | ||
var DOLLARSIGN = CHARCODE.DollarSign; | ||
var ASTERISK = CHARCODE.Asterisk; | ||
var EQUALSSIGN = CHARCODE.EqualsSign; | ||
var CIRCUMFLEXACCENT = CHARCODE.CircumflexAccent; | ||
var VERTICALLINE = CHARCODE.VerticalLine; | ||
var TILDE = CHARCODE.Tilde; | ||
var DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($) | ||
var ASTERISK = 0x002A; // U+002A ASTERISK (*) | ||
var EQUALSSIGN = 0x003D; // U+003D EQUALS SIGN (=) | ||
var CIRCUMFLEXACCENT = 0x005E; // U+005E (^) | ||
var VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) | ||
var TILDE = 0x007E; // U+007E TILDE (~) | ||
@@ -17,0 +16,0 @@ function getAttributeName() { |
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
var IDENT = TYPE.Ident; | ||
var FULLSTOP = CHARCODE.FullStop; | ||
var FULLSTOP = 0x002E; // U+002E FULL STOP (.) | ||
@@ -7,0 +6,0 @@ // '.' ident |
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
var IDENT = TYPE.Ident; | ||
var PLUSSIGN = CHARCODE.PlusSign; | ||
var SOLIDUS = CHARCODE.Solidus; | ||
var GREATERTHANSIGN = CHARCODE.GreaterThanSign; | ||
var TILDE = CHARCODE.Tilde; | ||
var PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) | ||
var SOLIDUS = 0x002F; // U+002F SOLIDUS (/) | ||
var GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>) | ||
var TILDE = 0x007E; // U+007E TILDE (~) | ||
@@ -10,0 +9,0 @@ // + | > | ~ | /deep/ |
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
var ASTERISK = CHARCODE.Asterisk; | ||
var SOLIDUS = CHARCODE.Solidus; | ||
var COMMENT = TYPE.Comment; | ||
var ASTERISK = 0x002A; // U+002A ASTERISK (*) | ||
var SOLIDUS = 0x002F; // U+002F SOLIDUS (/) | ||
@@ -8,0 +7,0 @@ // '/*' .* '*/' |
var isCustomProperty = require('../../utils/names').isCustomProperty; | ||
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
var rawMode = require('./Raw').mode; | ||
@@ -11,9 +10,9 @@ | ||
var DELIM = TYPE.Delim; | ||
var EXCLAMATIONMARK = CHARCODE.ExclamationMark; | ||
var SOLIDUS = CHARCODE.Solidus; | ||
var ASTERISK = CHARCODE.Asterisk; | ||
var AMPERSAND = CHARCODE.Ampersand; | ||
var DOLLARSIGN = CHARCODE.DollarSign; | ||
var PLUSSIGN = CHARCODE.PlusSign; | ||
var NUMBERSIGN = CHARCODE.NumberSign; | ||
var EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) | ||
var NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) | ||
var DOLLARSIGN = 0x0024; // U+0024 DOLLAR SIGN ($) | ||
var AMPERSAND = 0x0026; // U+0026 ANPERSAND (&) | ||
var ASTERISK = 0x002A; // U+002A ASTERISK (*) | ||
var PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) | ||
var SOLIDUS = 0x002F; // U+002F SOLIDUS (/) | ||
@@ -20,0 +19,0 @@ function consumeValueRaw(startToken) { |
var isDigit = require('../../tokenizer').isDigit; | ||
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
var NUMBER = TYPE.Number; | ||
var DELIM = TYPE.Delim; | ||
var SOLIDUS = CHARCODE.Solidus; | ||
var FULLSTOP = CHARCODE.FullStop; | ||
var SOLIDUS = 0x002F; // U+002F SOLIDUS (/) | ||
var FULLSTOP = 0x002E; // U+002E FULL STOP (.) | ||
@@ -10,0 +9,0 @@ // Terms of <ratio> should be a positive numbers (not zero or negative) |
var tokenizer = require('../../tokenizer'); | ||
var TYPE = tokenizer.TYPE; | ||
var CHARCODE = tokenizer.CHARCODE; | ||
var EXCLAMATIONMARK = CHARCODE.ExclamationMark; | ||
var WhiteSpace = TYPE.WhiteSpace; | ||
@@ -10,2 +8,3 @@ var Semicolon = TYPE.Semicolon; | ||
var Delim = TYPE.Delim; | ||
var EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) | ||
@@ -12,0 +11,0 @@ function getOffsetExcludeWS() { |
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
@@ -9,3 +8,3 @@ var WHITESPACE = TYPE.WhiteSpace; | ||
var CDC = TYPE.CDC; | ||
var EXCLAMATIONMARK = CHARCODE.ExclamationMark; | ||
var EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!) | ||
@@ -12,0 +11,0 @@ function consumeRaw(startToken) { |
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
var IDENT = TYPE.Ident; | ||
var ASTERISK = CHARCODE.Asterisk; | ||
var VERTICALLINE = CHARCODE.VerticalLine; | ||
var ASTERISK = 0x002A; // U+002A ASTERISK (*) | ||
var VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) | ||
@@ -8,0 +7,0 @@ function eatIdentifierOrAsterisk() { |
@@ -5,3 +5,2 @@ var isHexDigit = require('../../tokenizer').isHexDigit; | ||
var NAME = require('../../tokenizer').NAME; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
@@ -11,6 +10,6 @@ var IDENT = TYPE.Ident; | ||
var DIMENSION = TYPE.Dimension; | ||
var PLUSSIGN = CHARCODE.PlusSign; | ||
var HYPHENMINUS = CHARCODE.HyphenMinus; | ||
var QUESTIONMARK = CHARCODE.QuestionMark; | ||
var U = 117; // 'u'.charCodeAt() | ||
var PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) | ||
var HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) | ||
var QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?) | ||
var U = 0x0075; // U+0075 LATIN SMALL LETTER U (u) | ||
@@ -17,0 +16,0 @@ function eatHexSequence(offset, allowDash) { |
var cmpChar = require('../../tokenizer').cmpChar; | ||
var cmpStr = require('../../tokenizer').cmpStr; | ||
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
@@ -18,8 +17,8 @@ var IDENT = TYPE.Ident; | ||
var DELIM = TYPE.Delim; | ||
var PLUSSIGN = CHARCODE.PlusSign; | ||
var HYPHENMINUS = CHARCODE.HyphenMinus; | ||
var SOLIDUS = CHARCODE.Solidus; | ||
var ASTERISK = CHARCODE.Asterisk; | ||
var NUMBERSIGN = CHARCODE.NumberSign; | ||
var U = 117; // 'u'.charCodeAt(0) | ||
var NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) | ||
var ASTERISK = 0x002A; // U+002A ASTERISK (*) | ||
var PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) | ||
var HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-) | ||
var SOLIDUS = 0x002F; // U+002F SOLIDUS (/) | ||
var U = 0x0075; // U+0075 LATIN SMALL LETTER U (u) | ||
@@ -26,0 +25,0 @@ module.exports = function defaultRecognizer(context) { |
var TYPE = require('../../tokenizer').TYPE; | ||
var CHARCODE = require('../../tokenizer').CHARCODE; | ||
@@ -12,10 +11,10 @@ var DELIM = TYPE.Delim; | ||
var LEFTSQUAREBRACKET = TYPE.LeftSquareBracket; | ||
var NUMBERSIGN = CHARCODE.NumberSign; | ||
var PLUSSIGN = CHARCODE.PlusSign; | ||
var SOLIDUS = CHARCODE.Solidus; | ||
var ASTERISK = CHARCODE.Asterisk; | ||
var FULLSTOP = CHARCODE.FullStop; | ||
var GREATERTHANSIGN = CHARCODE.GreaterThanSign; | ||
var VERTICALLINE = CHARCODE.VerticalLine; | ||
var TILDE = CHARCODE.Tilde; | ||
var NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#) | ||
var ASTERISK = 0x002A; // U+002A ASTERISK (*) | ||
var PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+) | ||
var SOLIDUS = 0x002F; // U+002F SOLIDUS (/) | ||
var FULLSTOP = 0x002E; // U+002E FULL STOP (.) | ||
var GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>) | ||
var VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|) | ||
var TILDE = 0x007E; // U+007E TILDE (~) | ||
@@ -22,0 +21,0 @@ function getNode(context) { |
@@ -1,6 +0,1 @@ | ||
var TAB = 9; | ||
var N = 10; | ||
var F = 12; | ||
var R = 13; | ||
var SPACE = 32; | ||
var EOF = 0; | ||
@@ -81,3 +76,3 @@ | ||
function isNewline(code) { | ||
return code === R || code === N || code === F; | ||
return code === 0x000A || code === 0x000D || code === 0x000C; | ||
} | ||
@@ -88,3 +83,3 @@ | ||
function isWhiteSpace(code) { | ||
return isNewline(code) || code === SPACE || code === TAB; | ||
return isNewline(code) || code === 0x0020 || code === 0x0009; | ||
} | ||
@@ -175,2 +170,65 @@ | ||
// | ||
// 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 | ||
// | ||
// https://drafts.csswg.org/css-syntax/#tokenizer-definitions | ||
// > non-ASCII code point | ||
// > A code point with a value equal to or greater than U+0080 <control> | ||
// > name-start code point | ||
// > A letter, a non-ASCII code point, or U+005F LOW LINE (_). | ||
// > name code point | ||
// > A name-start code point, a digit, or U+002D HYPHEN-MINUS (-) | ||
// That means only ASCII code points has a special meaning and we define a maps for 0..127 codes only | ||
var CATEGORY = new Array(0x80); | ||
charCodeCategory.Eof = 0x80; | ||
charCodeCategory.WhiteSpace = 0x82; | ||
charCodeCategory.Digit = 0x83; | ||
charCodeCategory.NameStart = 0x84; | ||
charCodeCategory.NonPrintable = 0x85; | ||
for (var i = 0; i < CATEGORY.length; i++) { | ||
switch (true) { | ||
case isWhiteSpace(i): | ||
CATEGORY[i] = charCodeCategory.WhiteSpace; | ||
break; | ||
case isDigit(i): | ||
CATEGORY[i] = charCodeCategory.Digit; | ||
break; | ||
case isNameStart(i): | ||
CATEGORY[i] = charCodeCategory.NameStart; | ||
break; | ||
case isNonPrintable(i): | ||
CATEGORY[i] = charCodeCategory.NonPrintable; | ||
break; | ||
default: | ||
CATEGORY[i] = i || charCodeCategory.Eof; | ||
} | ||
} | ||
function charCodeCategory(code) { | ||
return code < 0x80 ? CATEGORY[code] : charCodeCategory.NameStart; | ||
}; | ||
module.exports = { | ||
@@ -190,3 +248,6 @@ isDigit: isDigit, | ||
isIdentifierStart: isIdentifierStart, | ||
isNumberStart: isNumberStart | ||
isNumberStart: isNumberStart, | ||
isBOM: isBOM, | ||
charCodeCategory: charCodeCategory | ||
}; |
@@ -1,14 +0,5 @@ | ||
const charCodeDef = require('./char-code-definitions'); | ||
function fillCodeTypes(array, check, type) { | ||
for (var i = 0; i < array.length; i++) { | ||
if (check(i)) { | ||
array[i] = type; | ||
} | ||
} | ||
} | ||
// CSS Syntax Module Level 3 | ||
// https://www.w3.org/TR/css-syntax-3/ | ||
var TYPE = { | ||
EOF: 0, // <EOF-token> | ||
Ident: 1, // <ident-token> | ||
@@ -46,90 +37,5 @@ Function: 2, // <function-token> | ||
var CHARCODE = { | ||
Tab: 9, // \t | ||
LineFeed: 10, // \n | ||
FormFeed: 12, // \f | ||
CarriageReturn: 13, // \r | ||
Space: 32, | ||
ExclamationMark: 33, // ! | ||
QuotationMark: 34, // " | ||
NumberSign: 35, // # | ||
DollarSign: 36, // $ | ||
PercentSign: 37, // % | ||
Ampersand: 38, // & | ||
Apostrophe: 39, // ' | ||
LeftParenthesis: 40, // ( | ||
RightParenthesis: 41, // ) | ||
Asterisk: 42, // * | ||
PlusSign: 43, // + | ||
Comma: 44, // , | ||
HyphenMinus: 45, // - | ||
FullStop: 46, // . | ||
Solidus: 47, // / | ||
Colon: 58, // : | ||
Semicolon: 59, // ; | ||
LessThanSign: 60, // < | ||
EqualsSign: 61, // = | ||
GreaterThanSign: 62, // > | ||
QuestionMark: 63, // ? | ||
CommercialAt: 64, // @ | ||
LeftSquareBracket: 91, // [ | ||
Backslash: 92, // \ | ||
RightSquareBracket: 93, // ] | ||
CircumflexAccent: 94, // ^ | ||
LowLine: 95, // _ | ||
GraveAccent: 96, // ` | ||
LeftCurlyBracket: 123, // { | ||
VerticalLine: 124, // | | ||
RightCurlyBracket: 125, // } | ||
Tilde: 126 // ~ | ||
}; | ||
var INPUT_STREAM_CODE_TYPE = { | ||
Eof: 0x80, | ||
Delim: 0x81, | ||
WhiteSpace: 0x82, | ||
Digit: 0x83, | ||
NameStart: 0x84, | ||
NonPrintable: 0x85, | ||
Newline: 0x86 | ||
}; | ||
// https://drafts.csswg.org/css-syntax/#tokenizer-definitions | ||
// > non-ASCII code point | ||
// > A code point with a value equal to or greater than U+0080 <control> | ||
// > name-start code point | ||
// > A letter, a non-ASCII code point, or U+005F LOW LINE (_). | ||
// > name code point | ||
// > A name-start code point, a digit, or U+002D HYPHEN-MINUS (-) | ||
// That means only ASCII code points has a special meaning and we define a maps for 0..127 codes only | ||
var SafeUint32Array = typeof Uint32Array !== 'undefined' ? Uint32Array : Array; // fallback on Array when TypedArray is not supported | ||
var INPUT_STREAM_CODE = new SafeUint32Array(0x80); | ||
var INPUT_STREAM_CODE_STRING = new SafeUint32Array(0x80); | ||
var INPUT_STREAM_CODE_URL = new SafeUint32Array(0x80); | ||
for (var i = 0; i < INPUT_STREAM_CODE.length; i++) { | ||
INPUT_STREAM_CODE_STRING[i] = | ||
INPUT_STREAM_CODE_URL[i] = | ||
INPUT_STREAM_CODE[i] = i || INPUT_STREAM_CODE_TYPE.Eof; | ||
} | ||
fillCodeTypes(INPUT_STREAM_CODE, charCodeDef.isWhiteSpace, INPUT_STREAM_CODE_TYPE.WhiteSpace); | ||
fillCodeTypes(INPUT_STREAM_CODE, charCodeDef.isDigit, INPUT_STREAM_CODE_TYPE.Digit); | ||
fillCodeTypes(INPUT_STREAM_CODE, charCodeDef.isNameStart, INPUT_STREAM_CODE_TYPE.NameStart); | ||
fillCodeTypes(INPUT_STREAM_CODE_STRING, charCodeDef.isNewline, INPUT_STREAM_CODE_TYPE.Newline); | ||
fillCodeTypes(INPUT_STREAM_CODE_URL, charCodeDef.isWhiteSpace, INPUT_STREAM_CODE_TYPE.WhiteSpace); | ||
fillCodeTypes(INPUT_STREAM_CODE_URL, charCodeDef.isNonPrintable, INPUT_STREAM_CODE_TYPE.NonPrintable); | ||
module.exports = { | ||
TYPE: TYPE, | ||
NAME: NAME, | ||
CHARCODE: CHARCODE, | ||
INPUT_STREAM_CODE: INPUT_STREAM_CODE, | ||
INPUT_STREAM_CODE_STRING: INPUT_STREAM_CODE_STRING, | ||
INPUT_STREAM_CODE_URL: INPUT_STREAM_CODE_URL, | ||
INPUT_STREAM_CODE_TYPE: INPUT_STREAM_CODE_TYPE | ||
NAME: NAME | ||
}; |
@@ -6,17 +6,15 @@ var TokenStream = require('../common/TokenStream'); | ||
var TYPE = constants.TYPE; | ||
var CHARCODE = constants.CHARCODE; | ||
var INPUT_STREAM_CODE = constants.INPUT_STREAM_CODE; | ||
var INPUT_STREAM_CODE_STRING = constants.INPUT_STREAM_CODE_STRING; | ||
var INPUT_STREAM_CODE_URL = constants.INPUT_STREAM_CODE_URL; | ||
var INPUT_STREAM_CODE_TYPE = constants.INPUT_STREAM_CODE_TYPE; | ||
var charCodeDefinitions = require('./char-code-definitions'); | ||
var isNewline = charCodeDefinitions.isNewline; | ||
var isName = charCodeDefinitions.isName; | ||
var isValidEscape = charCodeDefinitions.isValidEscape; | ||
var isNumberStart = charCodeDefinitions.isNumberStart; | ||
var isIdentifierStart = charCodeDefinitions.isIdentifierStart; | ||
var charCodeCategory = charCodeDefinitions.charCodeCategory; | ||
var isBOM = charCodeDefinitions.isBOM; | ||
var utils = require('./utils'); | ||
var firstCharOffset = utils.firstCharOffset; | ||
var cmpStr = utils.cmpStr; | ||
var getNewlineLength = utils.getNewlineLength; | ||
var isNewline = utils.isNewline; | ||
var isName = utils.isName; | ||
var isValidEscape = utils.isValidEscape; | ||
var isNumberStart = utils.isNumberStart; | ||
var isIdentifierStart = utils.isIdentifierStart; | ||
var findWhiteSpaceEnd = utils.findWhiteSpaceEnd; | ||
@@ -28,8 +26,2 @@ var consumeEscaped = utils.consumeEscaped; | ||
var ASTERISK = CHARCODE.Asterisk; | ||
var HYPHENMINUS = CHARCODE.HyphenMinus; | ||
var GREATERTHANSIGN = CHARCODE.GreaterThanSign; | ||
var EXCLAMATIONMARK = CHARCODE.ExclamationMark; | ||
var PERCENTSIGN = CHARCODE.PercentSign; | ||
var OFFSET_MASK = 0x00FFFFFF; | ||
@@ -59,3 +51,3 @@ var TYPE_SHIFT = 24; | ||
// Otherwise, if the next input code point is U+0025 PERCENTAGE SIGN (%), consume it. | ||
if (getCharCode(offset) === PERCENTSIGN) { | ||
if (getCharCode(offset) === 0x0025) { | ||
// Create a <percentage-token> with the same value as number, and return it. | ||
@@ -80,10 +72,9 @@ type = TYPE.Percentage; | ||
// and the next input code point is U+0028 LEFT PARENTHESIS ((), consume it. | ||
if (cmpStr(source, nameStartOffset, offset, 'url') && | ||
getCharCode(offset) === 0x0028) { | ||
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. | ||
offset = findWhiteSpaceEnd(source, offset + 1); | ||
if (getCharCode(offset) === 0x0022 || | ||
@@ -129,3 +120,3 @@ getCharCode(offset) === 0x0027) { | ||
switch (code < 0x80 ? INPUT_STREAM_CODE_STRING[code] : code) { | ||
switch (charCodeCategory(code)) { | ||
// ending code point | ||
@@ -138,3 +129,3 @@ case endingCodePoint: | ||
// EOF | ||
case INPUT_STREAM_CODE_TYPE.Eof: | ||
case charCodeCategory.Eof: | ||
// This is a parse error. Return the <string-token>. | ||
@@ -144,8 +135,11 @@ return; | ||
// newline | ||
case INPUT_STREAM_CODE_TYPE.Newline: | ||
// 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; | ||
case charCodeCategory.WhiteSpace: | ||
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; | ||
@@ -194,3 +188,3 @@ // U+005C REVERSE SOLIDUS (\) | ||
switch (code < 0x80 ? INPUT_STREAM_CODE_URL[code] : code) { | ||
switch (charCodeCategory(code)) { | ||
// U+0029 RIGHT PARENTHESIS ()) | ||
@@ -203,3 +197,3 @@ case 0x0029: | ||
// EOF | ||
case INPUT_STREAM_CODE_TYPE.Eof: | ||
case charCodeCategory.Eof: | ||
// This is a parse error. Return the <url-token>. | ||
@@ -209,3 +203,3 @@ return; | ||
// whitespace | ||
case INPUT_STREAM_CODE_TYPE.WhiteSpace: | ||
case charCodeCategory.WhiteSpace: | ||
// Consume as much whitespace as possible. | ||
@@ -237,3 +231,3 @@ offset = findWhiteSpaceEnd(source, offset); | ||
case 0x0028: | ||
case INPUT_STREAM_CODE_TYPE.NonPrintable: | ||
case charCodeCategory.NonPrintable: | ||
// This is a parse error. Consume the remnants of a bad url, | ||
@@ -273,3 +267,2 @@ // create a <bad-url-token>, and return it. | ||
var start = firstCharOffset(source); | ||
var sourceLength = source.length; | ||
@@ -279,2 +272,3 @@ var offsetAndType = adoptBuffer(stream.offsetAndType, sourceLength + 1); // +1 because of eof-token | ||
var tokenCount = 0; | ||
var start = isBOM(getCharCode(0)); | ||
var offset = start; | ||
@@ -293,5 +287,5 @@ var balanceCloseType = 0; | ||
switch (code < 0x80 ? INPUT_STREAM_CODE[code] : INPUT_STREAM_CODE_TYPE.NameStart) { | ||
switch (charCodeCategory(code)) { | ||
// whitespace | ||
case INPUT_STREAM_CODE_TYPE.WhiteSpace: | ||
case charCodeCategory.WhiteSpace: | ||
// Consume as much whitespace as possible. Return a <whitespace-token>. | ||
@@ -379,4 +373,4 @@ type = TYPE.WhiteSpace; | ||
// 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) === HYPHENMINUS && | ||
getCharCode(offset + 2) === GREATERTHANSIGN) { | ||
if (getCharCode(offset + 1) === 0x002D && | ||
getCharCode(offset + 2) === 0x003E) { | ||
type = TYPE.CDC; | ||
@@ -415,3 +409,3 @@ offset = offset + 3; | ||
// If the next two input code point are U+002F SOLIDUS (/) followed by a U+002A ASTERISK (*), | ||
if (getCharCode(offset + 1) === ASTERISK) { | ||
if (getCharCode(offset + 1) === 0x002A) { | ||
// ... consume them and all following code points up to and including the first U+002A ASTERISK (*) | ||
@@ -447,5 +441,5 @@ // followed by a U+002F SOLIDUS (/), or up to an EOF code point. | ||
// If the next 3 input code points are U+0021 EXCLAMATION MARK U+002D HYPHEN-MINUS U+002D HYPHEN-MINUS (!--), ... | ||
if (getCharCode(offset + 1) === EXCLAMATIONMARK && | ||
getCharCode(offset + 2) === HYPHENMINUS && | ||
getCharCode(offset + 3) === HYPHENMINUS) { | ||
if (getCharCode(offset + 1) === 0x0021 && | ||
getCharCode(offset + 2) === 0x002D && | ||
getCharCode(offset + 3) === 0x002D) { | ||
// ... consume them and return a <CDO-token>. | ||
@@ -519,3 +513,3 @@ type = TYPE.CDO; | ||
// digit | ||
case INPUT_STREAM_CODE_TYPE.Digit: | ||
case charCodeCategory.Digit: | ||
// Reconsume the current input code point, consume a numeric token, and return it. | ||
@@ -526,3 +520,3 @@ consumeNumericToken(); | ||
// name-start code point | ||
case INPUT_STREAM_CODE_TYPE.NameStart: | ||
case charCodeCategory.NameStart: | ||
// Reconsume the current input code point, consume an ident-like token, and return it. | ||
@@ -533,3 +527,3 @@ consumeIdentLikeToken(); | ||
// EOF | ||
case INPUT_STREAM_CODE_TYPE.Eof: | ||
case charCodeCategory.Eof: | ||
// Return an <EOF-token>. | ||
@@ -577,3 +571,2 @@ break; | ||
break; | ||
} | ||
@@ -585,3 +578,3 @@ | ||
// finalize buffers | ||
offsetAndType[tokenCount] = offset; | ||
offsetAndType[tokenCount] = (TYPE.EOF << TYPE_SHIFT) | offset; // <EOF-token> | ||
balance[tokenCount] = sourceLength; | ||
@@ -607,6 +600,2 @@ balance[sourceLength] = sourceLength; // prevents false positive balance match with any token | ||
// | ||
// tokenizer | ||
// | ||
// extend tokenizer with constants | ||
@@ -618,2 +607,5 @@ Object.keys(constants).forEach(function(key) { | ||
// extend tokenizer with static methods from utils | ||
Object.keys(charCodeDefinitions).forEach(function(key) { | ||
tokenize[key] = charCodeDefinitions[key]; | ||
}); | ||
Object.keys(utils).forEach(function(key) { | ||
@@ -620,0 +612,0 @@ tokenize[key] = utils[key]; |
@@ -5,26 +5,6 @@ var charCodeDef = require('./char-code-definitions'); | ||
var isUppercaseLetter = charCodeDef.isUppercaseLetter; | ||
var isLowercaseLetter = charCodeDef.isLowercaseLetter; | ||
var isLetter = charCodeDef.isLetter; | ||
var isNonAscii = charCodeDef.isNonAscii; | ||
var isNameStart = charCodeDef.isNameStart; | ||
var isName = charCodeDef.isName; | ||
var isNonPrintable = charCodeDef.isNonPrintable; | ||
var isNewline = charCodeDef.isNewline; | ||
var isWhiteSpace = charCodeDef.isWhiteSpace; | ||
var isValidEscape = charCodeDef.isValidEscape; | ||
var isIdentifierStart = charCodeDef.isIdentifierStart; | ||
var isNumberStart = charCodeDef.isNumberStart; | ||
// detect BOM (https://en.wikipedia.org/wiki/Byte_order_mark) | ||
function firstCharOffset(source) { | ||
if (source.length > 0) { | ||
if (source.charCodeAt(0) === 0xFEFF || // UTF-16BE | ||
source.charCodeAt(0) === 0xFFFE) { // UTF-16LE | ||
return 1; | ||
} | ||
} | ||
return 0; | ||
} | ||
function getCharCode(source, offset) { | ||
@@ -253,19 +233,2 @@ return offset < source.length ? source.charCodeAt(offset) : 0; | ||
module.exports = { | ||
firstCharOffset: firstCharOffset, | ||
isDigit: isDigit, | ||
isHexDigit: isHexDigit, | ||
isUppercaseLetter: isUppercaseLetter, | ||
isLowercaseLetter: isLowercaseLetter, | ||
isLetter: isLetter, | ||
isNonAscii: isNonAscii, | ||
isNameStart: isNameStart, | ||
isName: isName, | ||
isNonPrintable: isNonPrintable, | ||
isNewline: isNewline, | ||
isWhiteSpace: isWhiteSpace, | ||
isValidEscape: isValidEscape, | ||
isIdentifierStart: isIdentifierStart, | ||
isNumberStart: isNumberStart, | ||
consumeEscaped: consumeEscaped, | ||
@@ -272,0 +235,0 @@ consumeName: consumeName, |
{ | ||
"name": "css-tree", | ||
"version": "1.0.0-alpha.33", | ||
"version": "1.0.0-alpha.34", | ||
"description": "CSSTree is a tool set to work with CSS, including fast detailed parser (string->AST), walker (AST traversal), generator (AST->string) and lexer (validation and matching) based on knowledge of spec and browser implementations", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
610834
9511