@@ -486,11 +486,11 @@ function postParseFamilyName(name, node) {
486486 *
487487 * It represents the substitution with the first valid value.
488488 */
489- function postParseFirstValid ( substitution , node , { parseCSSGrammar } ) {
489+ function postParseFirstValid ( substitution , node , { parseCSSValue } ) {
490490 const { context } = node
491491 const { declaration : { definition } } = context
492492 for ( let value of substitution . value ) {
493- if ( ( value = parseCSSGrammar ( value , definition , context ) ) ) {
493+ if ( ( value = parseCSSValue ( value , definition , context ) ) ) {
494494 return value
495495 }
496496 }
@@ -950,10 +950,10 @@ function postParseMediaFeaturePlain(declaration, node, parser) {
950950 const unprefixed = name . value . replace ( / ( m i n | m a x ) - / , '' )
951951 const definition = descriptors [ getMediaFeatureContextName ( context ) ] [ unprefixed ] . value
952952 const list = getInputComponentValuesFromMatch ( value , input . data )
953- const validated = parser . parseCSSValue ( list , definition , context )
954- if ( validated ) {
955- validated . types . push ( '<mf-value>' )
956- declaration . splice ( 2 , 1 , validated )
953+ const match = parser . parseCSSGrammar ( list , definition , context )
954+ if ( match ) {
955+ match . types . push ( '<mf-value>' )
956+ declaration . splice ( 2 , 1 , match )
957957 return declaration
958958 }
959959 return error ( node )
@@ -972,7 +972,7 @@ function postParseMediaFeaturePlain(declaration, node, parser) {
972972 * It represents the range values with the result from parsing them against the
973973 * feature value definition.
974974 */
975- function postParseMediaFeatureRange ( range , node , { parseCSSValue } ) {
975+ function postParseMediaFeatureRange ( range , node , { parseCSSGrammar } ) {
976976 const { context, input } = node
977977 const name = range . find ( value => value . types . at ( - 1 ) === '<mf-name>' )
978978 const { type, value : definition } = descriptors [ getMediaFeatureContextName ( context ) ] [ name . value ]
@@ -981,8 +981,8 @@ function postParseMediaFeatureRange(range, node, { parseCSSValue }) {
981981 }
982982 for ( let value of range . splice ( 0 ) ) {
983983 if ( value . types . at ( - 1 ) === '<mf-value>' ) {
984- const list = getInputComponentValuesFromMatch ( value , input . data )
985- value = parseCSSValue ( list , definition , context )
984+ value = getInputComponentValuesFromMatch ( value , input . data )
985+ value = parseCSSGrammar ( value , definition , context )
986986 if ( ! value ) {
987987 return error ( node )
988988 }
@@ -995,7 +995,6 @@ function postParseMediaFeatureRange(range, node, { parseCSSValue }) {
995995
996996/**
997997 * @param {object[] } list
998- * @param {Parser } [parser]
999998 * @returns {object[] }
1000999 * @see {@link https://drafts.csswg.org/cssom-1/#parse-a-media-query-list }
10011000 * @see {@link https://drafts.csswg.org/mediaqueries-5/#typedef-media-query-list }
@@ -1251,30 +1250,27 @@ function postParsePseudoClassSelector(selector, node, parser) {
12511250 return selector
12521251 }
12531252 const [ colon , pseudo ] = selector
1254- const { name, value } = pseudo
1253+ let { name, value } = pseudo
12551254 // Functional pseudo-class
12561255 if ( name ) {
1257- const lowercase = name . toLowerCase ( )
1258- const definition = pseudos . classes . functions [ lowercase ]
1259- if ( definition && isValidPseudoClass ( lowercase , node ) ) {
1260- const value = parser . parseCSSValue ( input . current . value , definition , { ...context , function : node } )
1261- if ( value instanceof SyntaxError ) {
1262- return value
1263- }
1256+ name = name . toLowerCase ( )
1257+ const definition = pseudos . classes . functions [ name ]
1258+ if ( definition && isValidPseudoClass ( name , node ) ) {
1259+ value = parser . parseCSSGrammar ( input . current . value , definition , { ...context , function : node } )
12641260 if ( value ) {
1265- const fn = { ...pseudo , name : lowercase , value }
1261+ const fn = { ...pseudo , name, value }
12661262 return list ( [ colon , fn ] , '' , [ '<pseudo-class-selector>' ] )
12671263 }
12681264 }
12691265 return error ( node )
12701266 }
12711267 // Pseudo-class identifier
1272- let lowercase = value . toLowerCase ( )
1273- if ( pseudos . classes . aliases . has ( lowercase ) ) {
1274- lowercase = pseudos . classes . aliases . get ( lowercase )
1268+ value = value . toLowerCase ( )
1269+ if ( pseudos . classes . aliases . has ( value ) ) {
1270+ value = pseudos . classes . aliases . get ( value )
12751271 }
1276- if ( pseudos . classes . identifiers . includes ( lowercase ) && isValidPseudoClass ( lowercase , node ) ) {
1277- const identifier = { ...pseudo , value : lowercase }
1272+ if ( pseudos . classes . identifiers . includes ( value ) && isValidPseudoClass ( value , node ) ) {
1273+ const identifier = { ...pseudo , value }
12781274 return list ( [ colon , identifier ] , '' , [ '<pseudo-class-selector>' ] )
12791275 }
12801276 return null
@@ -1315,36 +1311,33 @@ function isValidPseudoElement(key, node) {
13151311 * It represents a legacy pseudo-element as a non-legacy pseudo-element.
13161312 */
13171313function postParsePseudoElementSelector ( selector , node , parser ) {
1314+ const { context, input } = node
13181315 if ( selector . types . includes ( '<legacy-pseudo-element-selector>' ) ) {
13191316 const [ colon , pseudo ] = selector
13201317 const pseudoClass = list ( [ colon , pseudo ] , '' , [ '<pseudo-class-selector>' ] )
13211318 selector = list ( [ colon , pseudoClass ] , '' , [ '<pseudo-element-selector>' ] )
13221319 }
13231320 const [ , [ colon , pseudo ] ] = selector
1324- const { name, value } = pseudo
1325- const { context, input } = node
1321+ let { name, value } = pseudo
13261322 // Functional pseudo-element
13271323 if ( name ) {
1328- const lowercase = name . toLowerCase ( )
1329- const definition = pseudos . elements . functions [ lowercase ]
1330- if ( definition && isValidPseudoElement ( lowercase , node ) ) {
1331- const value = parser . parseCSSValue ( input . current . value , definition . value , { ...context , function : node } )
1332- if ( value instanceof SyntaxError ) {
1333- return value
1334- }
1324+ name = name . toLowerCase ( )
1325+ const definition = pseudos . elements . functions [ name ]
1326+ if ( definition && isValidPseudoElement ( name , node ) ) {
1327+ value = parser . parseCSSGrammar ( input . current . value , definition . value , { ...context , function : node } )
13351328 if ( value ) {
1336- const fn = { ...pseudo , name : lowercase , value }
1329+ const fn = { ...pseudo , name, value }
13371330 const pseudoClass = list ( [ colon , fn ] , '' , [ '<pseudo-class-selector>' ] )
13381331 return list ( [ colon , pseudoClass ] , '' , [ '<pseudo-element-selector>' ] )
13391332 }
13401333 }
13411334 return error ( node )
13421335 }
13431336 // Pseudo-element identifier
1344- const lowercase = value . toLowerCase ( )
1345- const isDefined = pseudos . elements . identifiers [ lowercase ] ?? ( lowercase . startsWith ( '-webkit-' ) && ! context . strict )
1346- if ( isDefined && isValidPseudoElement ( lowercase , node ) ) {
1347- const identifier = { ...pseudo , value : lowercase }
1337+ value = value . toLowerCase ( )
1338+ const isDefined = pseudos . elements . identifiers [ value ] ?? ( value . startsWith ( '-webkit-' ) && ! context . strict )
1339+ if ( isDefined && isValidPseudoElement ( value , node ) ) {
1340+ const identifier = { ...pseudo , value }
13481341 const pseudoClass = list ( [ colon , identifier ] , '' , [ '<pseudo-class-selector>' ] )
13491342 return list ( [ colon , pseudoClass ] , '' , [ '<pseudo-element-selector>' ] )
13501343 }
@@ -1558,7 +1551,7 @@ function postParseSyntax(syntax, node) {
15581551 * the CSS value definition syntax.
15591552 */
15601553function postParseSyntaxString ( syntax , node , parser ) {
1561- return parser . parseCSSGrammar ( syntax . value , '<syntax>' , node . context ) ?? error ( node )
1554+ return parser . parseCSSValue ( syntax . value , '<syntax>' , node . context ) ?? error ( node )
15621555}
15631556
15641557/**
0 commit comments