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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-07-19 17:16:28 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-07-19 17:16:28 +0300
commite4384360a16dd9a19d4d2d25d0ef1f2b862ed2a6 (patch)
tree2fcdfa7dcdb9db8f5208b2562f4b4e803d671243 /app/assets/javascripts/blob
parentffda4e7bcac36987f936b4ba515995a6698698f0 (diff)
Add latest changes from gitlab-org/gitlab@16-2-stable-eev16.2.0-rc42
Diffstat (limited to 'app/assets/javascripts/blob')
-rw-r--r--app/assets/javascripts/blob/line_highlighter.js61
1 files changed, 35 insertions, 26 deletions
diff --git a/app/assets/javascripts/blob/line_highlighter.js b/app/assets/javascripts/blob/line_highlighter.js
index a8932f8c73b..1ec204b4034 100644
--- a/app/assets/javascripts/blob/line_highlighter.js
+++ b/app/assets/javascripts/blob/line_highlighter.js
@@ -1,6 +1,5 @@
/* eslint-disable func-names, no-underscore-dangle, no-param-reassign, consistent-return */
-import $ from 'jquery';
import { scrollToElement } from '~/lib/utils/common_utils';
// LineHighlighter
@@ -52,11 +51,12 @@ const LineHighlighter = function (options = {}) {
};
LineHighlighter.prototype.bindEvents = function () {
- const $fileHolder = $(this.options.fileHolderSelector);
-
- $fileHolder.on('click', 'a[data-line-number]', this.clickHandler);
- $fileHolder.on('highlight:line', this.highlightHash);
- window.addEventListener('hashchange', (e) => this.highlightHash(e.target.location.hash));
+ const fileHolder = document.querySelector(this.options.fileHolderSelector);
+ if (fileHolder) {
+ fileHolder.addEventListener('click', this.clickHandler);
+ fileHolder.addEventListener('highlight:line', this.highlightHash);
+ window.addEventListener('hashchange', (e) => this.highlightHash(e.target.location.hash));
+ }
};
LineHighlighter.prototype.highlightHash = function (newHash) {
@@ -82,29 +82,35 @@ LineHighlighter.prototype.highlightHash = function (newHash) {
};
LineHighlighter.prototype.clickHandler = function (event) {
- let range;
- event.preventDefault();
- this.clearHighlight();
- const lineNumber = $(event.target).closest('a').data('lineNumber');
- const current = this.hashToRange(this._hash);
- if (!(current[0] && event.shiftKey)) {
- // If there's no current selection, or there is but Shift wasn't held,
- // treat this like a single-line selection.
- this.setHash(lineNumber);
- return this.highlightLine(lineNumber);
- } else if (event.shiftKey) {
- if (lineNumber < current[0]) {
- range = [lineNumber, current[0]];
- } else {
- range = [current[0], lineNumber];
+ const isLine = event.target.matches('a[data-line-number]');
+ if (isLine) {
+ let range;
+ event.preventDefault();
+ this.clearHighlight();
+ const lineNumber = parseInt(event.target.dataset.lineNumber, 10);
+ const current = this.hashToRange(this._hash);
+ if (!(current[0] && event.shiftKey)) {
+ // If there's no current selection, or there is but Shift wasn't held,
+ // treat this like a single-line selection.
+ this.setHash(lineNumber);
+ return this.highlightLine(lineNumber);
+ } else if (event.shiftKey) {
+ if (lineNumber < current[0]) {
+ range = [lineNumber, current[0]];
+ } else {
+ range = [current[0], lineNumber];
+ }
+ this.setHash(range[0], range[1]);
+ return this.highlightRange(range);
}
- this.setHash(range[0], range[1]);
- return this.highlightRange(range);
}
};
LineHighlighter.prototype.clearHighlight = function () {
- return $(`.${this.highlightLineClass}`).removeClass(this.highlightLineClass);
+ const highlightedLines = document.getElementsByClassName(this.highlightLineClass);
+ Array.from(highlightedLines).forEach(function (line) {
+ line.classList.remove(this.highlightLineClass);
+ }, this);
};
// Convert a URL hash String into line numbers
@@ -133,7 +139,10 @@ LineHighlighter.prototype.hashToRange = function (hash) {
//
// lineNumber - Line number to highlight
LineHighlighter.prototype.highlightLine = function (lineNumber) {
- return $(`#LC${lineNumber}`).addClass(this.highlightLineClass);
+ const lineElement = document.getElementById(`LC${lineNumber}`);
+ if (lineElement) {
+ lineElement.classList.add(this.highlightLineClass);
+ }
};
// Highlight all lines within a range
@@ -144,7 +153,7 @@ LineHighlighter.prototype.highlightRange = function (range) {
const results = [];
const ref = range[0] <= range[1] ? range : range.reverse();
- for (let lineNumber = range[0]; lineNumber <= ref[1]; lineNumber += 1) {
+ for (let lineNumber = ref[0]; lineNumber <= ref[1]; lineNumber += 1) {
results.push(this.highlightLine(lineNumber));
}