@@ -101,9 +101,16 @@ const astHelpers = {
101
101
node &&
102
102
node . type === 'CallExpression' &&
103
103
node . callee &&
104
- node . callee . object &&
105
- node . callee . object . name &&
106
- objectNames . includes ( node . callee . object . name )
104
+ node . callee . object && ( (
105
+ node . callee . object . type === 'Identifier' &&
106
+ node . callee . object . name &&
107
+ objectNames . includes ( node . callee . object . name )
108
+ ) || (
109
+ node . callee . object . type === 'MemberExpression' &&
110
+ node . callee . object . object . type === 'Identifier' &&
111
+ astHelpers . getImportSource ( node . callee . object . object ) === 'react-native' &&
112
+ objectNames . includes ( node . callee . object . property . name )
113
+ ) )
107
114
) ;
108
115
} ,
109
116
@@ -463,6 +470,50 @@ const astHelpers = {
463
470
}
464
471
} ,
465
472
473
+ getRoot : function ( node ) {
474
+ let currentNode = node ;
475
+ while ( currentNode && currentNode . parent ) {
476
+ currentNode = currentNode . parent ;
477
+ }
478
+
479
+ return currentNode ;
480
+ } ,
481
+
482
+ getImportVariable : function ( node ) {
483
+ if ( node && node . type === 'ImportDeclaration' ) {
484
+ for ( let i = 0 ; node . specifiers ; i += 1 ) {
485
+ const specifier = node . specifiers [ i ] ;
486
+ if (
487
+ specifier && (
488
+ specifier . type === 'ImportDefaultSpecifier' ||
489
+ specifier . type === 'ImportNamespaceSpecifier'
490
+ ) &&
491
+ specifier . local &&
492
+ specifier . local . type === 'Identifier'
493
+ ) {
494
+ return specifier . local . name ;
495
+ }
496
+ }
497
+ }
498
+ } ,
499
+
500
+ getImportSource : function ( node ) {
501
+ if ( node && node . type === 'Identifier' && node . name ) {
502
+ const rootNode = astHelpers . getRoot ( node ) ;
503
+ if ( rootNode && rootNode . body ) {
504
+ for ( let i = 0 ; rootNode . body . length ; i += 1 ) {
505
+ const bodyNode = rootNode . body [ i ] ;
506
+ if (
507
+ astHelpers . getImportVariable ( bodyNode ) === node . name &&
508
+ bodyNode . source && bodyNode . source . type === 'Literal'
509
+ ) {
510
+ return bodyNode . source . value ;
511
+ }
512
+ }
513
+ }
514
+ }
515
+ } ,
516
+
466
517
getPotentialStyleReferenceFromMemberExpression : function ( node ) {
467
518
if (
468
519
node &&
0 commit comments