@@ -9,7 +9,6 @@ const REGEX_PERCENTAGE = /^\d+(\.\d+)?%/;
99const REGEX_NTH_OF =
1010 / ^ ( e v e n | o d d | \+ ? ( \d + | \d * n ( \s * [ + - ] \s * \d + ) ? ) | - \d * n ( \s * \+ \s * \d + ) ) ( (? = \s * [ , ) ] ) | \s + o f \s + ) / ;
1111const REGEX_WHITESPACE_OR_COLON = / [ \s : ] / ;
12- const REGEX_BRACE_OR_SEMICOLON = / [ { ; ] (? = (?: [ ^ ' " ] * ' [ ^ ' " ] * ' ) * [ ^ ' " ] * $ ) / ;
1312const REGEX_LEADING_HYPHEN_OR_DIGIT = / - ? \d / ;
1413const REGEX_VALID_IDENTIFIER_CHAR = / [ a - z A - Z 0 - 9 _ - ] / ;
1514const REGEX_COMMENT_CLOSE = / \* \/ / ;
@@ -79,7 +78,7 @@ function read_at_rule(parser) {
7978
8079 const name = read_identifier ( parser ) ;
8180
82- const prelude = parser . read_until ( REGEX_BRACE_OR_SEMICOLON ) . trim ( ) ;
81+ const prelude = read_value ( parser ) ;
8382
8483 /** @type {import('#compiler').Css.Block | null } */
8584 let block = null ;
@@ -398,7 +397,7 @@ function read_declaration(parser) {
398397 parser . eat ( ':' ) ;
399398 parser . allow_whitespace ( ) ;
400399
401- const value = read_declaration_value ( parser ) ;
400+ const value = read_value ( parser ) ;
402401
403402 const end = parser . index ;
404403
@@ -419,7 +418,7 @@ function read_declaration(parser) {
419418 * @param {import('../index.js').Parser } parser
420419 * @returns {string }
421420 */
422- function read_declaration_value ( parser ) {
421+ function read_value ( parser ) {
423422 let value = '' ;
424423 let escaped = false ;
425424 let in_url = false ;
@@ -443,7 +442,7 @@ function read_declaration_value(parser) {
443442 quote_mark = char ;
444443 } else if ( char === '(' && value . slice ( - 3 ) === 'url' ) {
445444 in_url = true ;
446- } else if ( ( char === ';' || char === '}' ) && ! in_url && ! quote_mark ) {
445+ } else if ( ( char === ';' || char === '{' || char === ' }') && ! in_url && ! quote_mark ) {
447446 return value . trim ( ) ;
448447 }
449448
0 commit comments