@@ -205,43 +205,48 @@ module.exports = {
205
205
}
206
206
}
207
207
208
- return {
209
- JSXOpeningElement : function ( node ) {
210
- let prevToken = sourceCode . getTokenBefore ( node ) ;
211
- if ( ! prevToken ) {
212
- return ;
213
- }
214
- // Use the parent in a list or an array
215
- if ( prevToken . type === 'JSXText' || prevToken . type === 'Punctuator' && prevToken . value === ',' ) {
216
- prevToken = sourceCode . getNodeByRangeIndex ( prevToken . range [ 0 ] ) ;
217
- prevToken = prevToken . type === 'Literal' || prevToken . type === 'JSXText' ? prevToken . parent : prevToken ;
218
- // Use the first non-punctuator token in a conditional expression
219
- } else if ( prevToken . type === 'Punctuator' && prevToken . value === ':' ) {
220
- do {
221
- prevToken = sourceCode . getTokenBefore ( prevToken ) ;
222
- } while ( prevToken . type === 'Punctuator' ) ;
223
- prevToken = sourceCode . getNodeByRangeIndex ( prevToken . range [ 0 ] ) ;
224
- while ( prevToken . parent && prevToken . parent . type !== 'ConditionalExpression' ) {
225
- prevToken = prevToken . parent ;
226
- }
227
- }
228
- prevToken = prevToken . type === 'JSXExpressionContainer' ? prevToken . expression : prevToken ;
229
-
230
- const parentElementIndent = getNodeIndent ( prevToken ) ;
231
- const indent = (
232
- prevToken . loc . start . line === node . loc . start . line ||
233
- isRightInLogicalExp ( node ) ||
234
- isAlternateInConditionalExp ( node )
235
- ) ? 0 : indentSize ;
236
- checkNodesIndent ( node , parentElementIndent + indent ) ;
237
- } ,
238
- JSXClosingElement : function ( node ) {
239
- if ( ! node . parent ) {
240
- return ;
208
+ function handleOpeningElement ( node ) {
209
+ let prevToken = sourceCode . getTokenBefore ( node ) ;
210
+ if ( ! prevToken ) {
211
+ return ;
212
+ }
213
+ // Use the parent in a list or an array
214
+ if ( prevToken . type === 'JSXText' || prevToken . type === 'Punctuator' && prevToken . value === ',' ) {
215
+ prevToken = sourceCode . getNodeByRangeIndex ( prevToken . range [ 0 ] ) ;
216
+ prevToken = prevToken . type === 'Literal' || prevToken . type === 'JSXText' ? prevToken . parent : prevToken ;
217
+ // Use the first non-punctuator token in a conditional expression
218
+ } else if ( prevToken . type === 'Punctuator' && prevToken . value === ':' ) {
219
+ do {
220
+ prevToken = sourceCode . getTokenBefore ( prevToken ) ;
221
+ } while ( prevToken . type === 'Punctuator' && prevToken . value !== '/' ) ;
222
+ prevToken = sourceCode . getNodeByRangeIndex ( prevToken . range [ 0 ] ) ;
223
+ while ( prevToken . parent && prevToken . parent . type !== 'ConditionalExpression' ) {
224
+ prevToken = prevToken . parent ;
241
225
}
242
- const peerElementIndent = getNodeIndent ( node . parent . openingElement ) ;
243
- checkNodesIndent ( node , peerElementIndent ) ;
244
- } ,
226
+ }
227
+ prevToken = prevToken . type === 'JSXExpressionContainer' ? prevToken . expression : prevToken ;
228
+ const parentElementIndent = getNodeIndent ( prevToken ) ;
229
+ const indent = (
230
+ prevToken . loc . start . line === node . loc . start . line ||
231
+ isRightInLogicalExp ( node ) ||
232
+ isAlternateInConditionalExp ( node )
233
+ ) ? 0 : indentSize ;
234
+ checkNodesIndent ( node , parentElementIndent + indent ) ;
235
+ }
236
+
237
+ function handleClosingElement ( node ) {
238
+ if ( ! node . parent ) {
239
+ return ;
240
+ }
241
+ const peerElementIndent = getNodeIndent ( node . parent . openingElement || node . parent . openingFragment ) ;
242
+ checkNodesIndent ( node , peerElementIndent ) ;
243
+ }
244
+
245
+ return {
246
+ JSXOpeningElement : handleOpeningElement ,
247
+ JSXOpeningFragment : handleOpeningElement ,
248
+ JSXClosingElement : handleClosingElement ,
249
+ JSXClosingFragment : handleClosingElement ,
245
250
JSXExpressionContainer : function ( node ) {
246
251
if ( ! node . parent ) {
247
252
return ;
0 commit comments