|
|
|
@ -3,6 +3,7 @@ import {svg} from '../svg.js'; |
|
|
|
|
import {invertFileFolding} from './file-fold.js'; |
|
|
|
|
import {createTippy} from '../modules/tippy.js'; |
|
|
|
|
import {copyToClipboard} from './clipboard.js'; |
|
|
|
|
import {toAbsoluteUrl} from '../utils.js'; |
|
|
|
|
|
|
|
|
|
export const singleAnchorRegex = /^#(L|n)([1-9][0-9]*)$/; |
|
|
|
|
export const rangeAnchorRegex = /^#(L[1-9][0-9]*)-(L[1-9][0-9]*)$/; |
|
|
|
@ -19,17 +20,18 @@ function selectRange($list, $select, $from) { |
|
|
|
|
$list.removeClass('active'); |
|
|
|
|
|
|
|
|
|
// add hashchange to permalink
|
|
|
|
|
const $issue = $('a.ref-in-new-issue'); |
|
|
|
|
const $refInNewIssue = $('a.ref-in-new-issue'); |
|
|
|
|
const $copyPermalink = $('a.copy-line-permalink'); |
|
|
|
|
const $viewGitBlame = $('a.view_git_blame'); |
|
|
|
|
|
|
|
|
|
const updateIssueHref = function (anchor) { |
|
|
|
|
if ($issue.length === 0) { |
|
|
|
|
if ($refInNewIssue.length === 0) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
let href = $issue.attr('href'); |
|
|
|
|
href = `${href.replace(/%23L\d+$|%23L\d+-L\d+$/, '')}%23${anchor}`; |
|
|
|
|
$issue.attr('href', href); |
|
|
|
|
const urlIssueNew = $refInNewIssue.attr('data-url-issue-new'); |
|
|
|
|
const urlParamBodyLink = $refInNewIssue.attr('data-url-param-body-link'); |
|
|
|
|
const issueContent = `${toAbsoluteUrl(urlParamBodyLink)}#${anchor}`; // the default content for issue body
|
|
|
|
|
$refInNewIssue.attr('href', `${urlIssueNew}?body=${encodeURIComponent(issueContent)}`); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const updateViewGitBlameFragment = function (anchor) { |
|
|
|
@ -188,7 +190,7 @@ export function initRepoCodeView() { |
|
|
|
|
currentTarget.closest('tr').outerHTML = blob; |
|
|
|
|
}); |
|
|
|
|
$(document).on('click', '.copy-line-permalink', async (e) => { |
|
|
|
|
const success = await copyToClipboard(e.currentTarget.getAttribute('data-url')); |
|
|
|
|
const success = await copyToClipboard(toAbsoluteUrl(e.currentTarget.getAttribute('data-url'))); |
|
|
|
|
if (!success) return; |
|
|
|
|
document.querySelector('.code-line-button')?._tippy?.hide(); |
|
|
|
|
}); |
|
|
|
|