@@ -23,8 +23,9 @@ import CSSScopeRule from '../../rules/CSSScopeRule.js';
2323import CSSStyleSheet from '../../CSSStyleSheet.js' ;
2424
2525const CSS_MEASUREMENT_REGEXP = / [ 0 - 9 . ] + ( p x | r e m | e m | v w | v h | % | v m i n | v m a x | c m | m m | i n | p t | p c | Q ) / g;
26- const CSS_VARIABLE_REGEXP = / v a r \( * ( - - [ ^ ) , ] + ) \) | v a r \( * ( - - [ ^ ) , ] + ) , * ( .+ ) \) / ;
2726const HOST_REGEXP = / : h o s t \s * \( ( [ ^ ) ] + ) \) | : h o s t - c o n t e x t \s * \( ( [ ^ ) ] + ) \) / ;
27+ const SINGLE_CSS_VARIABLE_REGEXP = / v a r \( * ( - - [ ^ ) , ] + ) \) / ;
28+ const CSS_VARIABLE_REGEXP = / v a r \( * ( - - [ ^ ) , ] + ) , * ( [ ^ ) , ] + ) \) / ;
2829
2930type IStyleAndElement = {
3031 element : Element | ShadowRoot | Document | null ;
@@ -460,13 +461,14 @@ export default class CSSStyleDeclarationComputedStyle {
460461 let newValue = value ;
461462 let match : RegExpMatchArray | null ;
462463
464+ while ( ( match = newValue . match ( SINGLE_CSS_VARIABLE_REGEXP ) ) != null ) {
465+ // Without fallback value - E.g. var(--my-var)
466+ newValue = newValue . replace ( match [ 0 ] , cssVariables [ match [ 1 ] ] || '' ) ;
467+ }
468+
463469 while ( ( match = newValue . match ( CSS_VARIABLE_REGEXP ) ) !== null ) {
464470 // Fallback value - E.g. var(--my-var, #FFFFFF)
465- if ( match [ 2 ] !== undefined ) {
466- newValue = newValue . replace ( match [ 0 ] , cssVariables [ match [ 2 ] ] || match [ 3 ] ) ;
467- } else {
468- newValue = newValue . replace ( match [ 0 ] , cssVariables [ match [ 1 ] ] || '' ) ;
469- }
471+ newValue = newValue . replace ( match [ 0 ] , cssVariables [ match [ 1 ] ] || match [ 2 ] ) ;
470472 }
471473
472474 return newValue ;
0 commit comments