File tree 2 files changed +17
-10
lines changed
packages/compiler-sfc/src
2 files changed +17
-10
lines changed Original file line number Diff line number Diff line change @@ -121,6 +121,8 @@ export function getEscapedPropName(key: string) {
121
121
122
122
export const cssVarNameEscapeSymbolsRE = / [ ! " # $ % & ' ( ) * + , . / : ; < = > ? @ [ \\ \] ^ ` { | } ~ ] / g
123
123
124
- export function getEscapedCssVarName ( key : string ) {
125
- return key . replace ( cssVarNameEscapeSymbolsRE , s => `\\${ s } ` )
124
+ export function getEscapedCssVarName ( key : string , doubleEscape : boolean ) {
125
+ return key . replace ( cssVarNameEscapeSymbolsRE , s =>
126
+ doubleEscape ? `\\\\${ s } ` : `\\${ s } `
127
+ )
126
128
}
Original file line number Diff line number Diff line change @@ -21,21 +21,26 @@ export function genCssVarsFromList(
21
21
isSSR = false
22
22
) : string {
23
23
return `{\n ${ vars
24
- . map ( key => {
25
- const varName = genVarName ( id , key , isProd )
26
- return `"${ isSSR ? `--` : `` } ${
27
- isSSR && ! isProd ? varName . replace ( / \\ / g, '\\\\' ) : varName
28
- } ": (${ key } )`
29
- } )
24
+ . map (
25
+ key =>
26
+ `"${ isSSR ? `--` : `` } ${ genVarName ( id , key , isProd , isSSR ) } ": (${ key } )`
27
+ )
30
28
. join ( ',\n ' ) } \n}`
31
29
}
32
30
33
- function genVarName ( id : string , raw : string , isProd : boolean ) : string {
31
+ function genVarName (
32
+ id : string ,
33
+ raw : string ,
34
+ isProd : boolean ,
35
+ isSSR = false
36
+ ) : string {
34
37
if ( isProd ) {
35
38
return hash ( id + raw )
36
39
} else {
37
40
// escape ASCII Punctuation & Symbols
38
- return `${ id } -${ getEscapedCssVarName ( raw ) } `
41
+ // #7823 need to double-escape in SSR because the attributes are rendered
42
+ // into an HTML string
43
+ return `${ id } -${ getEscapedCssVarName ( raw , isSSR ) } `
39
44
}
40
45
}
41
46
You can’t perform that action at this time.
0 commit comments