diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-09 06:09:30 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-09 06:09:30 +0000 |
commit | 4dfc8711171fe0c04bc6b8b224687603026dea46 (patch) | |
tree | e1b4640f8e56bb09f412a3dca1510983245491c2 /app/assets/javascripts/code_navigation/utils | |
parent | cfd62c3a3ebbc85f5787c103bfa6de1997ab8e11 (diff) | |
download | gitlab-ce-4dfc8711171fe0c04bc6b8b224687603026dea46.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/code_navigation/utils')
-rw-r--r-- | app/assets/javascripts/code_navigation/utils/index.js | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/app/assets/javascripts/code_navigation/utils/index.js b/app/assets/javascripts/code_navigation/utils/index.js index 2dee0de6501..4d118852a94 100644 --- a/app/assets/javascripts/code_navigation/utils/index.js +++ b/app/assets/javascripts/code_navigation/utils/index.js @@ -3,18 +3,25 @@ export const cachedData = new Map(); export const getCurrentHoverElement = () => cachedData.get('current'); export const setCurrentHoverElement = el => cachedData.set('current', el); -export const addInteractionClass = d => { - let charCount = 0; - const line = document.getElementById(`LC${d.start_line + 1}`); - const el = [...line.childNodes].find(({ textContent }) => { - if (charCount === d.start_char) return true; - charCount += textContent.length; - return false; - }); +export const addInteractionClass = (path, d) => { + const lineNumber = d.start_line + 1; + const lines = document + .querySelector(`[data-path="${path}"]`) + .querySelectorAll(`.blob-content #LC${lineNumber}, .line_content:not(.old) #LC${lineNumber}`); + if (!lines?.length) return; + + lines.forEach(line => { + let charCount = 0; + const el = [...line.childNodes].find(({ textContent }) => { + if (charCount === d.start_char) return true; + charCount += textContent.length; + return false; + }); - if (el) { - el.setAttribute('data-char-index', d.start_char); - el.setAttribute('data-line-index', d.start_line); - el.classList.add('cursor-pointer', 'code-navigation', 'js-code-navigation'); - } + if (el) { + el.setAttribute('data-char-index', d.start_char); + el.setAttribute('data-line-index', d.start_line); + el.classList.add('cursor-pointer', 'code-navigation', 'js-code-navigation'); + } + }); }; |