Welcome to mirror list, hosted at ThFree Co, Russian Federation.

blob_blame_link.js « blob « javascripts « assets « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a5191a3d513371c20f15875690254587b973ca46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { getPageParamValue, getPageSearchString } from './utils';

export function addBlameLink(containerSelector, linkClass) {
  const containerEl = document.querySelector(containerSelector);

  if (!containerEl) {
    return;
  }

  containerEl.addEventListener('mouseover', (e) => {
    const isLineLink = e.target.classList.contains(linkClass);
    if (isLineLink) {
      const lineLink = e.target;
      const lineLinkCopy = lineLink.cloneNode(true);
      lineLinkCopy.classList.remove(linkClass, 'diff-line-num');

      const { lineNumber } = lineLink.dataset;
      const blameLink = document.createElement('a');
      const { blamePath } = document.querySelector('.line-numbers').dataset;
      blameLink.classList.add('file-line-blame');
      const blamePerPage = document.querySelector('.js-per-page')?.dataset?.blamePerPage;
      const pageNumber = getPageParamValue(lineNumber, blamePerPage);
      const searchString = getPageSearchString(blamePath, pageNumber);

      blameLink.href = `${blamePath}${searchString}#L${lineNumber}`;

      const wrapper = document.createElement('div');
      wrapper.classList.add('line-links', 'diff-line-num');

      wrapper.appendChild(blameLink);
      wrapper.appendChild(lineLinkCopy);
      lineLink.replaceWith(wrapper);
    }
  });
}