@ -2167,6 +2167,45 @@ function searchRepositories() {
} ) ;
} ) ;
}
}
function showCodeViewMenu ( ) {
// Get clicked tr
const $code _tr = $ ( '.code-view td.lines-code.active' ) . parent ( ) ;
// Reset code line marker
$ ( '.code-view-menu-list' ) . appendTo ( $ ( '.code-view' ) ) ;
$ ( '.code-line-marker' ) . remove ( ) ;
// Generate new one
const icon _wrap = $ ( '<div>' , {
class : 'code-line-marker'
} ) . prependTo ( $code _tr . find ( 'td:eq(0)' ) . get ( 0 ) ) . hide ( ) ;
const a _wrap = $ ( '<a>' , {
class : 'code-line-link'
} ) . appendTo ( icon _wrap ) ;
$ ( '<i>' , {
class : 'dropdown icon' ,
style : 'margin: 0px;'
} ) . appendTo ( a _wrap ) ;
icon _wrap . css ( {
left : '-7px' ,
display : 'block' ,
} ) ;
$ ( '.code-view-menu-list' ) . css ( {
'min-width' : '220px' ,
} ) ;
// Popup the menu
$ ( '.code-line-link' ) . popup ( {
popup : $ ( '.code-view-menu-list' ) ,
on : 'click' ,
lastResort : 'bottom left' ,
} ) ;
}
function initCodeView ( ) {
function initCodeView ( ) {
if ( $ ( '.code-view .lines-num' ) . length > 0 ) {
if ( $ ( '.code-view .lines-num' ) . length > 0 ) {
$ ( document ) . on ( 'click' , '.lines-num span' , function ( e ) {
$ ( document ) . on ( 'click' , '.lines-num span' , function ( e ) {
@ -2179,6 +2218,9 @@ function initCodeView() {
}
}
selectRange ( $list , $list . filter ( ` [rel= ${ $select . attr ( 'id' ) } ] ` ) , ( e . shiftKey ? $list . filter ( '.active' ) . eq ( 0 ) : null ) ) ;
selectRange ( $list , $list . filter ( ` [rel= ${ $select . attr ( 'id' ) } ] ` ) , ( e . shiftKey ? $list . filter ( '.active' ) . eq ( 0 ) : null ) ) ;
deSelect ( ) ;
deSelect ( ) ;
// show code view menu marker
showCodeViewMenu ( ) ;
} ) ;
} ) ;
$ ( window ) . on ( 'hashchange' , ( ) => {
$ ( window ) . on ( 'hashchange' , ( ) => {
@ -2193,6 +2235,10 @@ function initCodeView() {
if ( m ) {
if ( m ) {
$first = $list . filter ( ` [rel= ${ m [ 1 ] } ] ` ) ;
$first = $list . filter ( ` [rel= ${ m [ 1 ] } ] ` ) ;
selectRange ( $list , $first , $list . filter ( ` [rel= ${ m [ 2 ] } ] ` ) ) ;
selectRange ( $list , $first , $list . filter ( ` [rel= ${ m [ 2 ] } ] ` ) ) ;
// show code view menu marker
showCodeViewMenu ( ) ;
$ ( 'html, body' ) . scrollTop ( $first . offset ( ) . top - 200 ) ;
$ ( 'html, body' ) . scrollTop ( $first . offset ( ) . top - 200 ) ;
return ;
return ;
}
}
@ -2200,6 +2246,10 @@ function initCodeView() {
if ( m ) {
if ( m ) {
$first = $list . filter ( ` [rel=L ${ m [ 2 ] } ] ` ) ;
$first = $list . filter ( ` [rel=L ${ m [ 2 ] } ] ` ) ;
selectRange ( $list , $first ) ;
selectRange ( $list , $first ) ;
// show code view menu marker
showCodeViewMenu ( ) ;
$ ( 'html, body' ) . scrollTop ( $first . offset ( ) . top - 200 ) ;
$ ( 'html, body' ) . scrollTop ( $first . offset ( ) . top - 200 ) ;
}
}
} ) . trigger ( 'hashchange' ) ;
} ) . trigger ( 'hashchange' ) ;
@ -2752,11 +2802,30 @@ function selectRange($list, $select, $from) {
}
}
$list . filter ( classes . join ( ',' ) ) . addClass ( 'active' ) ;
$list . filter ( classes . join ( ',' ) ) . addClass ( 'active' ) ;
changeHash ( ` #L ${ a } -L ${ b } ` ) ;
changeHash ( ` #L ${ a } -L ${ b } ` ) ;
// add hashchange to permalink
const $issue = $ ( 'a.ref-in-new-issue' ) ;
const matched = $issue . attr ( 'href' ) . match ( /%23L\d+$|%23L\d+-L\d+$/ ) ;
if ( matched ) {
$issue . attr ( 'href' , $issue . attr ( 'href' ) . replace ( $issue . attr ( 'href' ) . substr ( matched . index ) , ` %23L ${ a } -L ${ b } ` ) ) ;
} else {
$issue . attr ( 'href' , ` ${ $issue . attr ( 'href' ) } %23L ${ a } -L ${ b } ` ) ;
}
return ;
return ;
}
}
}
}
$select . addClass ( 'active' ) ;
$select . addClass ( 'active' ) ;
changeHash ( ` # ${ $select . attr ( 'rel' ) } ` ) ;
changeHash ( ` # ${ $select . attr ( 'rel' ) } ` ) ;
// add hashchange to permalink
const $issue = $ ( 'a.ref-in-new-issue' ) ;
const matched = $issue . attr ( 'href' ) . match ( /%23L\d+$|%23L\d+-L\d+$/ ) ;
if ( matched ) {
$issue . attr ( 'href' , $issue . attr ( 'href' ) . replace ( $issue . attr ( 'href' ) . substr ( matched . index ) , ` %23 ${ $select . attr ( 'rel' ) } ` ) ) ;
} else {
$issue . attr ( 'href' , ` ${ $issue . attr ( 'href' ) } %23 ${ $select . attr ( 'rel' ) } ` ) ;
}
}
}
$ ( ( ) => {
$ ( ( ) => {