@@ -55,10 +55,20 @@ module.exports = {
55
55
messageId : 'useAccessibleTooltip' ,
56
56
fix ( fixer ) {
57
57
const fixes = [ ]
58
- // If Tooltip is the only import and no existing @primer /react import, replace the whole import statement
59
- if ( ! hasOtherImports && ! hasRootImport ) {
60
- fixes . push ( fixer . replaceText ( node . source , `'@primer/react'` ) )
61
- } else if ( hasOtherImports && ! hasRootImport ) {
58
+ if ( ! hasOtherImports ) {
59
+ // If Tooltip is the only import and no existing @primer /react import, replace the whole import statement
60
+ if ( ! hasRootImport ) fixes . push ( fixer . replaceText ( node . source , `'@primer/react'` ) )
61
+ if ( hasRootImport ) {
62
+ // remove the entire import statement
63
+ fixes . push ( fixer . remove ( node ) )
64
+ // find the last specifier in the existing @primer /react import and insert Tooltip after that
65
+ const rootImport = sourceCode . ast . body . find ( statement => {
66
+ return statement . type === 'ImportDeclaration' && statement . source . value === '@primer/react'
67
+ } )
68
+ const lastSpecifier = rootImport . specifiers [ rootImport . specifiers . length - 1 ]
69
+ fixes . push ( fixer . insertTextAfter ( lastSpecifier , `, Tooltip` ) )
70
+ }
71
+ } else {
62
72
// There are other imports from the deprecated bundle but no existing @primer /react import, so remove the Tooltip import and add a new import statement with the correct path.
63
73
const previousToken = sourceCode . getTokenBefore ( tooltipSpecifier )
64
74
const nextToken = sourceCode . getTokenAfter ( tooltipSpecifier )
@@ -74,39 +84,20 @@ module.exports = {
74
84
} else {
75
85
rangeToRemove = [ tooltipSpecifier . range [ 0 ] , tooltipSpecifier . range [ 1 ] ]
76
86
}
77
-
87
+ // Remove Tooltip from the import statement
78
88
fixes . push ( fixer . removeRange ( rangeToRemove ) )
79
- fixes . push ( fixer . insertTextAfter ( node , `\nimport {Tooltip} from '@primer/react';` ) )
80
- } else {
81
- if ( ! hasOtherImports ) {
82
- // remove the entire import statement
83
- fixes . push ( fixer . remove ( node ) )
84
- } else {
85
- const previousToken = sourceCode . getTokenBefore ( tooltipSpecifier )
86
- const nextToken = sourceCode . getTokenAfter ( tooltipSpecifier )
87
- const hasTrailingComma = nextToken && nextToken . value === ','
88
- const hasLeadingComma = previousToken && previousToken . value === ','
89
-
90
- let rangeToRemove
91
89
92
- if ( hasTrailingComma ) {
93
- rangeToRemove = [ tooltipSpecifier . range [ 0 ] , nextToken . range [ 1 ] + 1 ]
94
- } else if ( hasLeadingComma ) {
95
- rangeToRemove = [ previousToken . range [ 0 ] , tooltipSpecifier . range [ 1 ] ]
96
- } else {
97
- rangeToRemove = [ tooltipSpecifier . range [ 0 ] , tooltipSpecifier . range [ 1 ] ]
98
- }
99
-
100
- fixes . push ( fixer . removeRange ( rangeToRemove ) )
90
+ if ( ! hasRootImport ) {
91
+ fixes . push ( fixer . insertTextAfter ( node , `\nimport {Tooltip} from '@primer/react';` ) )
92
+ } else {
93
+ // find the last specifier in the existing @primer /react import and insert Tooltip after that
94
+ const rootImport = sourceCode . ast . body . find ( statement => {
95
+ return statement . type === 'ImportDeclaration' && statement . source . value === '@primer/react'
96
+ } )
97
+ const lastSpecifier = rootImport . specifiers [ rootImport . specifiers . length - 1 ]
98
+ fixes . push ( fixer . insertTextAfter ( lastSpecifier , `, Tooltip` ) )
101
99
}
102
- // find the last specifier in the existing @primer /react import and insert Tooltip after that
103
- const rootImport = sourceCode . ast . body . find ( statement => {
104
- return statement . type === 'ImportDeclaration' && statement . source . value === '@primer/react'
105
- } )
106
- const lastSpecifier = rootImport . specifiers [ rootImport . specifiers . length - 1 ]
107
- fixes . push ( fixer . insertTextAfter ( lastSpecifier , `, Tooltip` ) )
108
100
}
109
-
110
101
return fixes
111
102
} ,
112
103
} )
0 commit comments