@@ -161,13 +161,15 @@ module.exports = postcss.plugin('postcss-css-variables', function(options) {
161
161
162
162
debug ( `Should unroll decl? isUnderScope=${ isUnderScope } ` , usageSelectorBranch . selector . toString ( ) , '|' , variableSelectorBranch . selector . toString ( ) )
163
163
164
+ // For general cases, we can put variable usage right-below the variable definition
164
165
if ( isUnderScope ) {
165
166
usageDecl . value . replace ( new RegExp ( RE_VAR_FUNC . source , 'g' ) , ( match , matchedVariableName ) => {
166
167
if ( matchedVariableName === variableName ) {
167
168
variableDecl . after ( usageDecl . clone ( ) ) ;
168
169
}
169
170
} ) ;
170
171
}
172
+ // For at-rules
171
173
else {
172
174
// If there is a conditional like a atrule/media-query, then we should check whether
173
175
// the variable can apply and put our usage within that same context
@@ -183,18 +185,20 @@ module.exports = postcss.plugin('postcss-css-variables', function(options) {
183
185
} )
184
186
if ( hasAtRule ) {
185
187
const doesVariableApplyToUsage = isSelectorBranchUnderScope ( variableSelectorBranch , usageSelectorBranch , { ignoreConditionals : true } ) ;
186
- debug ( `Should expand usage ? doesVariableApplyToUsage=${ doesVariableApplyToUsage } ` , variableSelectorBranch . selector . toString ( ) , '|' , usageSelectorBranch . selector . toString ( ) )
188
+ debug ( `Should expand atrule ? doesVariableApplyToUsage=${ doesVariableApplyToUsage } ` , variableSelectorBranch . selector . toString ( ) , '|' , usageSelectorBranch . selector . toString ( ) )
187
189
188
- // Create a new usage clone with only the usage decl
189
- const newUsageRule = usageDecl . parent . clone ( ) ;
190
- newUsageRule . removeAll ( ) ;
191
- newUsageRule . append ( usageDecl . clone ( ) ) ;
190
+ if ( doesVariableApplyToUsage ) {
191
+ // Create a new usage clone with only the usage decl
192
+ const newUsageRule = usageDecl . parent . clone ( ) ;
193
+ newUsageRule . removeAll ( ) ;
194
+ newUsageRule . append ( usageDecl . clone ( ) ) ;
192
195
193
- const variableAncestry = cloneParentAncestry ( variableDecl . parent . parent ) ;
194
- insertNodeIntoAncestry ( variableAncestry , newUsageRule ) ;
196
+ const variableAncestry = cloneParentAncestry ( variableDecl . parent . parent ) ;
197
+ insertNodeIntoAncestry ( variableAncestry , newUsageRule ) ;
195
198
196
- usageDecl . parent . cloneBefore ( ) ;
197
- usageDecl . parent . replaceWith ( variableAncestry ) ;
199
+ usageDecl . parent . cloneBefore ( ) ;
200
+ usageDecl . parent . replaceWith ( variableAncestry ) ;
201
+ }
198
202
}
199
203
}
200
204
0 commit comments