@@ -104,6 +104,7 @@ const commonjsProxyRE = /\?commonjs-proxy/
104104const  inlineRE  =  / ( \? | & ) i n l i n e \b / 
105105const  inlineCSSRE  =  / ( \? | & ) i n l i n e - c s s \b / 
106106const  usedRE  =  / ( \? | & ) u s e d \b / 
107+ const  varRE  =  / ^ v a r \( / i
107108
108109const  enum  PreprocessLang  { 
109110  less  =  'less' , 
@@ -980,7 +981,7 @@ export const cssUrlRE =
980981export  const  cssDataUriRE  = 
981982  / (?< = ^ | [ ^ \w \- \u0080 - \uffff ] ) d a t a - u r i \( \s * ( ' [ ^ ' ] + ' | " [ ^ " ] + " | [ ^ ' " ) ] + ) \s * \) / 
982983export  const  importCssRE  =  / @ i m p o r t   ( ' [ ^ ' ] + \. c s s ' | " [ ^ " ] + \. c s s " | [ ^ ' " ) ] + \. c s s ) / 
983- const  cssImageSetRE  =  / i m a g e - s e t \( ( [ ^ ) ] + ) \ )/ 
984+ const  cssImageSetRE  =  / (?< = i m a g e - s e t \( ) ( (?: [ \w \- ] + \( [ ^ \) ] * \) | [ ^ ) ] ) * ) (? = \) ) / 
984985
985986const  UrlRewritePostcssPlugin : PostCSS . PluginCreator < { 
986987  replacer : CssUrlReplacer 
@@ -1001,7 +1002,9 @@ const UrlRewritePostcssPlugin: PostCSS.PluginCreator<{
10011002            const  importer  =  declaration . source ?. input . file 
10021003            return  opts . replacer ( rawUrl ,  importer ) 
10031004          } 
1004-           const  rewriterToUse  =  isCssUrl  ? rewriteCssUrls  : rewriteCssImageSet 
1005+           const  rewriterToUse  =  isCssImageSet 
1006+             ? rewriteCssImageSet 
1007+             : rewriteCssUrls 
10051008          promises . push ( 
10061009            rewriterToUse ( declaration . value ,  replacerForDeclaration ) . then ( 
10071010              ( url )  =>  { 
@@ -1054,11 +1057,15 @@ function rewriteCssImageSet(
10541057  replacer : CssUrlReplacer 
10551058) : Promise < string >  { 
10561059  return  asyncReplace ( css ,  cssImageSetRE ,  async  ( match )  =>  { 
1057-     const  [ matched ,  rawUrl ]  =  match 
1058-     const  url  =  await  processSrcSet ( rawUrl ,  ( {  url } )  => 
1059-       doUrlReplace ( url ,  matched ,  replacer ) 
1060-     ) 
1061-     return  `image-set(${ url }  )` 
1060+     const  [ ,  rawUrl ]  =  match 
1061+     const  url  =  await  processSrcSet ( rawUrl ,  async  ( {  url } )  =>  { 
1062+       // the url maybe url(...) 
1063+       if  ( cssUrlRE . test ( url ) )  { 
1064+         return  await  rewriteCssUrls ( url ,  replacer ) 
1065+       } 
1066+       return  await  doUrlReplace ( url ,  url ,  replacer ) 
1067+     } ) 
1068+     return  url 
10621069  } ) 
10631070} 
10641071async  function  doUrlReplace ( 
@@ -1073,7 +1080,13 @@ async function doUrlReplace(
10731080    wrap  =  first 
10741081    rawUrl  =  rawUrl . slice ( 1 ,  - 1 ) 
10751082  } 
1076-   if  ( isExternalUrl ( rawUrl )  ||  isDataUrl ( rawUrl )  ||  rawUrl . startsWith ( '#' ) )  { 
1083+ 
1084+   if  ( 
1085+     isExternalUrl ( rawUrl )  || 
1086+     isDataUrl ( rawUrl )  || 
1087+     rawUrl . startsWith ( '#' )  || 
1088+     varRE . test ( rawUrl ) 
1089+   )  { 
10771090    return  matched 
10781091  } 
10791092
0 commit comments