4
4
5
5
module . exports = ( md , externalAttrs ) => {
6
6
let hasOpenRouterLink = false
7
+ let hasOpenExternalLink = false
7
8
8
9
md . renderer . rules . link_open = ( tokens , idx , options , env , self ) => {
9
10
const token = tokens [ idx ]
@@ -17,11 +18,8 @@ module.exports = (md, externalAttrs) => {
17
18
Object . entries ( externalAttrs ) . forEach ( ( [ key , val ] ) => {
18
19
token . attrSet ( key , val )
19
20
} )
20
-
21
21
if ( / _ b l a n k / i. test ( externalAttrs [ 'target' ] ) ) {
22
- // add OutBoundLink to content if it opens in _blank
23
- tokens [ idx + 1 ] . type = 'html_block'
24
- tokens [ idx + 1 ] . content += '<OutboundLink/>'
22
+ hasOpenExternalLink = true
25
23
}
26
24
} else if ( isSourceLink ) {
27
25
hasOpenRouterLink = true
@@ -59,6 +57,11 @@ module.exports = (md, externalAttrs) => {
59
57
token . tag = 'router-link'
60
58
hasOpenRouterLink = false
61
59
}
60
+ if ( hasOpenExternalLink ) {
61
+ hasOpenExternalLink = false
62
+ // add OutBoundLink to the beforeend of this link if it opens in _blank.
63
+ return '<OutboundLink/>' + self . renderToken ( tokens , idx , options )
64
+ }
62
65
return self . renderToken ( tokens , idx , options )
63
66
}
64
67
}
0 commit comments