1
-
2
1
'use strict' ;
3
2
4
3
/**
@@ -31,10 +30,16 @@ StyleSheets.prototype.markAsUsed = function (fullyQualifiedName) {
31
30
const styleSheetName = nameSplit [ 0 ] ;
32
31
const styleSheetProperty = nameSplit [ 1 ] ;
33
32
34
- if ( this . styleSheets [ styleSheetName ] ) {
35
- this . styleSheets [ styleSheetName ] = this
36
- . styleSheets [ styleSheetName ]
37
- . filter ( ( property ) => property . key . name !== styleSheetProperty ) ;
33
+ if ( nameSplit . length === 1 ) {
34
+ Object . keys ( this . styleSheets ) . forEach ( ( key ) => {
35
+ this . styleSheets [ key ] = this . styleSheets [ key ] . filter (
36
+ ( property ) => property . key . name !== styleSheetName
37
+ ) ;
38
+ } ) ;
39
+ } else if ( this . styleSheets [ styleSheetName ] ) {
40
+ this . styleSheets [ styleSheetName ] = this . styleSheets [ styleSheetName ] . filter (
41
+ ( property ) => property . key . name !== styleSheetProperty
42
+ ) ;
38
43
}
39
44
} ;
40
45
@@ -86,41 +91,34 @@ StyleSheets.prototype.getObjectExpressions = function () {
86
91
return this . objectExpressions ;
87
92
} ;
88
93
89
-
90
94
let currentContent ;
91
- const getSourceCode = ( node ) => currentContent
92
- . getSourceCode ( node )
93
- . getText ( node ) ;
95
+ const getSourceCode = ( node ) => currentContent . getSourceCode ( node ) . getText ( node ) ;
94
96
95
97
const getStyleSheetObjectNames = ( settings ) => settings [ 'react-native/style-sheet-object-names' ] || [ 'StyleSheet' ] ;
96
98
97
99
const astHelpers = {
98
100
containsStyleSheetObject : function ( node , objectNames ) {
99
101
return Boolean (
100
102
node
101
- && node . type === 'CallExpression'
102
- && node . callee
103
- && node . callee . object
104
- && node . callee . object . name
105
- && objectNames . includes ( node . callee . object . name )
103
+ && node . type === 'CallExpression'
104
+ && node . callee
105
+ && node . callee . object
106
+ && node . callee . object . name
107
+ && objectNames . includes ( node . callee . object . name )
106
108
) ;
107
109
} ,
108
110
109
111
containsCreateCall : function ( node ) {
110
112
return Boolean (
111
- node
112
- && node . callee
113
- && node . callee . property
114
- && node . callee . property . name === 'create'
113
+ node && node . callee && node . callee . property && node . callee . property . name === 'create'
115
114
) ;
116
115
} ,
117
116
118
117
isStyleSheetDeclaration : function ( node , settings ) {
119
118
const objectNames = getStyleSheetObjectNames ( settings ) ;
120
119
121
120
return Boolean (
122
- astHelpers . containsStyleSheetObject ( node , objectNames )
123
- && astHelpers . containsCreateCall ( node )
121
+ astHelpers . containsStyleSheetObject ( node , objectNames ) && astHelpers . containsCreateCall ( node )
124
122
) ;
125
123
} ,
126
124
@@ -200,10 +198,12 @@ const astHelpers = {
200
198
case 'Literal' :
201
199
return node . value ;
202
200
case 'TemplateLiteral' :
203
- return node . quasis . reduce ( ( result , quasi , index ) => result
204
- + quasi . value . cooked
205
- + astHelpers . getExpressionIdentifier ( node . expressions [ index ] ) ,
206
- '' ) ;
201
+ return node . quasis . reduce (
202
+ ( result , quasi , index ) => result
203
+ + quasi . value . cooked
204
+ + astHelpers . getExpressionIdentifier ( node . expressions [ index ] ) ,
205
+ ''
206
+ ) ;
207
207
default :
208
208
return '' ;
209
209
}
@@ -213,34 +213,28 @@ const astHelpers = {
213
213
} ,
214
214
215
215
getStylePropertyIdentifier : function ( node ) {
216
- if (
217
- node
218
- && node . key
219
- ) {
216
+ if ( node && node . key ) {
220
217
return astHelpers . getExpressionIdentifier ( node . key ) ;
221
218
}
222
219
} ,
223
220
224
221
isStyleAttribute : function ( node ) {
225
222
return Boolean (
226
223
node . type === 'JSXAttribute'
227
- && node . name
228
- && node . name . name
229
- && node . name . name . toLowerCase ( ) . includes ( 'style' )
224
+ && node . name
225
+ && node . name . name
226
+ && node . name . name . toLowerCase ( ) . includes ( 'style' )
230
227
) ;
231
228
} ,
232
229
233
230
collectStyleObjectExpressions : function ( node , context ) {
234
231
currentContent = context ;
235
232
if ( astHelpers . hasArrayOfStyleReferences ( node ) ) {
236
- const styleReferenceContainers = node
237
- . expression
238
- . elements ;
233
+ const styleReferenceContainers = node . expression . elements ;
239
234
240
- return astHelpers . collectStyleObjectExpressionFromContainers (
241
- styleReferenceContainers
242
- ) ;
243
- } if ( node && node . expression ) {
235
+ return astHelpers . collectStyleObjectExpressionFromContainers ( styleReferenceContainers ) ;
236
+ }
237
+ if ( node && node . expression ) {
244
238
return astHelpers . getStyleObjectExpressionFromNode ( node . expression ) ;
245
239
}
246
240
@@ -254,13 +248,9 @@ const astHelpers = {
254
248
255
249
currentContent = context ;
256
250
if ( astHelpers . hasArrayOfStyleReferences ( node ) ) {
257
- const styleReferenceContainers = node
258
- . expression
259
- . elements ;
251
+ const styleReferenceContainers = node . expression . elements ;
260
252
261
- return astHelpers . collectColorLiteralsFromContainers (
262
- styleReferenceContainers
263
- ) ;
253
+ return astHelpers . collectColorLiteralsFromContainers ( styleReferenceContainers ) ;
264
254
}
265
255
266
256
if ( node . type === 'ObjectExpression' ) {
@@ -273,8 +263,9 @@ const astHelpers = {
273
263
collectStyleObjectExpressionFromContainers : function ( nodes ) {
274
264
let objectExpressions = [ ] ;
275
265
nodes . forEach ( ( node ) => {
276
- objectExpressions = objectExpressions
277
- . concat ( astHelpers . getStyleObjectExpressionFromNode ( node ) ) ;
266
+ objectExpressions = objectExpressions . concat (
267
+ astHelpers . getStyleObjectExpressionFromNode ( node )
268
+ ) ;
278
269
} ) ;
279
270
280
271
return objectExpressions ;
@@ -283,8 +274,7 @@ const astHelpers = {
283
274
collectColorLiteralsFromContainers : function ( nodes ) {
284
275
let colorLiterals = [ ] ;
285
276
nodes . forEach ( ( node ) => {
286
- colorLiterals = colorLiterals
287
- . concat ( astHelpers . getColorLiteralsFromNode ( node ) ) ;
277
+ colorLiterals = colorLiterals . concat ( astHelpers . getColorLiteralsFromNode ( node ) ) ;
288
278
} ) ;
289
279
290
280
return colorLiterals ;
@@ -369,10 +359,13 @@ const astHelpers = {
369
359
} ,
370
360
371
361
hasArrayOfStyleReferences : function ( node ) {
372
- return node && Boolean (
373
- node . type === 'JSXExpressionContainer'
374
- && node . expression
375
- && node . expression . type === 'ArrayExpression'
362
+ return (
363
+ node
364
+ && Boolean (
365
+ node . type === 'JSXExpressionContainer'
366
+ && node . expression
367
+ && node . expression . type === 'ArrayExpression'
368
+ )
376
369
) ;
377
370
} ,
378
371
@@ -408,10 +401,18 @@ const astHelpers = {
408
401
invalid = true ;
409
402
obj [ p . key . name ] = getSourceCode ( innerNode ) ;
410
403
}
411
- } else if ( p . value . type === 'UnaryExpression' && p . value . operator === '-' && p . value . argument . type === 'Literal' ) {
404
+ } else if (
405
+ p . value . type === 'UnaryExpression'
406
+ && p . value . operator === '-'
407
+ && p . value . argument . type === 'Literal'
408
+ ) {
412
409
invalid = true ;
413
410
obj [ p . key . name ] = - 1 * p . value . argument . value ;
414
- } else if ( p . value . type === 'UnaryExpression' && p . value . operator === '+' && p . value . argument . type === 'Literal' ) {
411
+ } else if (
412
+ p . value . type === 'UnaryExpression'
413
+ && p . value . operator === '+'
414
+ && p . value . argument . type === 'Literal'
415
+ ) {
415
416
invalid = true ;
416
417
obj [ p . key . name ] = p . value . argument . value ;
417
418
}
@@ -443,21 +444,13 @@ const astHelpers = {
443
444
} ,
444
445
445
446
getObjectName : function ( node ) {
446
- if (
447
- node
448
- && node . object
449
- && node . object . name
450
- ) {
447
+ if ( node && node . object && node . object . name ) {
451
448
return node . object . name ;
452
449
}
453
450
} ,
454
451
455
452
getPropertyName : function ( node ) {
456
- if (
457
- node
458
- && node . property
459
- && node . property . name
460
- ) {
453
+ if ( node && node . property && node . property . name ) {
461
454
return node . property . name ;
462
455
}
463
456
} ,
@@ -477,11 +470,32 @@ const astHelpers = {
477
470
}
478
471
} ,
479
472
473
+ getPotentialStyleReferenceFromArrayExpression : function ( node ) {
474
+ if ( node && node . type === 'Identifier' && node . name ) {
475
+ return node . name ;
476
+ }
477
+ } ,
478
+
479
+ getPotentialStyleReferenceFromJSXExpressionContainer : function ( node ) {
480
+ if (
481
+ node
482
+ && node . expression
483
+ && node . expression . type === 'Identifier'
484
+ && node . expression . name
485
+ && node . parent
486
+ && node . parent . name
487
+ && node . parent . name . name === 'style'
488
+ ) {
489
+ return node . expression . name ;
490
+ }
491
+ } ,
492
+
480
493
isEitherShortHand : function ( property1 , property2 ) {
481
494
const shorthands = [ 'margin' , 'padding' , 'border' , 'flex' ] ;
482
495
if ( shorthands . includes ( property1 ) ) {
483
496
return property2 . startsWith ( property1 ) ;
484
- } if ( shorthands . includes ( property2 ) ) {
497
+ }
498
+ if ( shorthands . includes ( property2 ) ) {
485
499
return property1 . startsWith ( property2 ) ;
486
500
}
487
501
return false ;
0 commit comments