{"version":3,"sources":["webpack:///./blob/line_highlighter.js","webpack:////home/git/gitlab/node_modules/core-js/modules/es.object.has-own.js","webpack:///./behaviors/shortcuts/shortcuts_navigation.js","webpack:///./read_more.js","webpack:///./behaviors/shortcuts/keybindings.js","webpack:///./pages/projects/index.js","webpack:///./pages/projects/project.js","webpack:///./clone_panel.js"],"names":["LineHighlighter","options","highlightLineClass","fileHolderSelector","scrollFileHolder","hash","window","location","scrollBehavior","this","_hash","setHash","bind","highlightLine","clickHandler","highlightHash","bindEvents","prototype","_this","fileHolder","document","querySelector","addEventListener","e","target","newHash","scrollEnabled","range","clearHighlight","hashToRange","highlightRange","lineSelector","scrollToElement","offset","behavior","event","matches","preventDefault","lineNumber","parseInt","dataset","current","shiftKey","highlightedLines","getElementsByClassName","Array","from","forEach","line","classList","remove","match","length","lineElement","getElementById","add","results","ref","reverse","push","firstLineNumber","lastLineNumber","__setLocationHash__","value","history","pushState","url","title","$","stat","hasOwn","ShortcutsNavigation","constructor","shortcuts","addAll","GO_TO_PROJECT_OVERVIEW","findAndFollowLink","GO_TO_PROJECT_ACTIVITY_FEED","GO_TO_PROJECT_RELEASES","GO_TO_PROJECT_FILES","GO_TO_PROJECT_COMMITS","GO_TO_PROJECT_PIPELINES","GO_TO_PROJECT_JOBS","GO_TO_PROJECT_REPO_GRAPH","GO_TO_PROJECT_REPO_CHARTS","GO_TO_PROJECT_ISSUES","GO_TO_PROJECT_ISSUE_BOARDS","GO_TO_PROJECT_MERGE_REQUESTS","GO_TO_PROJECT_WIKI","GO_TO_PROJECT_SNIPPETS","GO_TO_PROJECT_KUBERNETES","GO_TO_PROJECT_ENVIRONMENTS","PROJECT_FILES_GO_TO_COMPARE","GO_TO_PROJECT_WEBIDE","navigateToWebIDE","NEW_ISSUE","_window$gl$mrWidgetDa","_window$gl$mrWidgetDa2","_window$gl$mrWidgetDa3","path","constructWebIDEPath","sourceProjectFullPath","gl","mrWidgetData","source_project_full_path","targetProjectFullPath","target_project_full_path","iid","visitUrl","initReadMore","triggerSelector","triggerEls","querySelectorAll","triggerEl","targetEl","previousElementSibling","Object","parentNode","parentEl","readMoreHeight","Number","readMoreContent","style","setProperty","clientHeight","once","getCustomizations","_memoize","parsedCustomizations","AccessorUtilities","canUseLocalStorage","JSON","parse","localStorage","getItem","TOGGLE_KEYBOARD_SHORTCUTS_DIALOG","id","description","__","defaultKeys","GO_TO_YOUR_PROJECTS","GO_TO_YOUR_GROUPS","GO_TO_ACTIVITY_FEED","GO_TO_MILESTONE_LIST","GO_TO_YOUR_SNIPPETS","START_SEARCH","FOCUS_FILTER_BAR","GO_TO_YOUR_ISSUES","GO_TO_YOUR_MERGE_REQUESTS","GO_TO_YOUR_REVIEW_REQUESTS","GO_TO_YOUR_TODO_LIST","TOGGLE_PERFORMANCE_BAR","HIDE_APPEARING_CONTENT","TOGGLE_SUPER_SIDEBAR","TOGGLE_CANARY","BOLD_TEXT","customizable","ITALIC_TEXT","STRIKETHROUGH_TEXT","LINK_TEXT","INDENT_LINE","OUTDENT_LINE","TOGGLE_MARKDOWN_PREVIEW","EDIT_RECENT_COMMENT","EDIT_WIKI_PAGE","REPO_GRAPH_SCROLL_LEFT","REPO_GRAPH_SCROLL_RIGHT","REPO_GRAPH_SCROLL_UP","REPO_GRAPH_SCROLL_DOWN","REPO_GRAPH_SCROLL_TOP","REPO_GRAPH_SCROLL_BOTTOM","GO_TO_PROJECT_FIND_FILE","PROJECT_FILES_MOVE_SELECTION_UP","PROJECT_FILES_MOVE_SELECTION_DOWN","PROJECT_FILES_OPEN_SELECTION","PROJECT_FILES_GO_BACK","PROJECT_FILES_GO_TO_PERMALINK","ISSUABLE_COMMENT_OR_REPLY","ISSUABLE_EDIT_DESCRIPTION","ISSUABLE_CHANGE_LABEL","ISSUABLE_COPY_REF","ISSUE_MR_CHANGE_ASSIGNEE","ISSUE_MR_CHANGE_MILESTONE","MR_NEXT_FILE_IN_DIFF","MR_PREVIOUS_FILE_IN_DIFF","MR_GO_TO_FILE","MR_TOGGLE_FILE_BROWSER","MR_NEXT_UNRESOLVED_DISCUSSION","MR_PREVIOUS_UNRESOLVED_DISCUSSION","MR_COPY_SOURCE_BRANCH_NAME","MR_COMMITS_NEXT_COMMIT","MR_COMMITS_PREVIOUS_COMMIT","ISSUE_NEXT_DESIGN","ISSUE_PREVIOUS_DESIGN","ISSUE_CLOSE_DESIGN","SIDEBAR_CLOSE_WIDGET","WEB_IDE_GO_TO_FILE","WEB_IDE_COMMIT","keybindingGroups","name","keybindings","keysFor","command","Boolean","isCustomizable","initClonePanel","on","setCookie","parents","cookieKey","data","addShortcutsExtension","$cloneOptions","$cloneUrlField","$cloneBtnLabel","mobileCloneField","selectedCloneOption","text","trim","addClass","$this","currentTarget","attr","startsWith","cloneType","removeClass","each","$el","activeText","find","$label","closest","toggleClass","clipboardText","val"],"mappings":"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","file":"commons-pages.projects.blame.show-pages.projects.blame.streaming-pages.projects.blob.show-pages.proj-9f3d272f.f0707060.chunk.js","sourcesContent":["/* eslint-disable func-names, no-underscore-dangle, no-param-reassign, consistent-return */\n\nimport { scrollToElement } from '~/lib/utils/common_utils';\n\n// LineHighlighter\n//\n// Handles single- and multi-line selection and highlight for blob views.\n//\n//\n// ### Example Markup\n//\n//
\n//
\n//
\n// 1\n// 2\n// 3\n// 4\n// 5\n//
\n//
\n//         \n//           ...\n//           ...\n//           ...\n//           ...\n//           ...\n//         \n//       
\n//
\n//
\n//\n\nconst LineHighlighter = function (options = {}) {\n options.highlightLineClass = options.highlightLineClass || 'hll';\n options.fileHolderSelector = options.fileHolderSelector || '.file-holder';\n options.scrollFileHolder = options.scrollFileHolder || false;\n options.hash = options.hash || window.location.hash;\n options.scrollBehavior = options.scrollBehavior || 'smooth';\n\n this.options = options;\n this._hash = options.hash;\n this.highlightLineClass = options.highlightLineClass;\n this.setHash = this.setHash.bind(this);\n this.highlightLine = this.highlightLine.bind(this);\n this.clickHandler = this.clickHandler.bind(this);\n this.highlightHash = this.highlightHash.bind(this);\n\n this.bindEvents();\n this.highlightHash();\n};\n\nLineHighlighter.prototype.bindEvents = function () {\n const fileHolder = document.querySelector(this.options.fileHolderSelector);\n if (fileHolder) {\n fileHolder.addEventListener('click', this.clickHandler);\n fileHolder.addEventListener('highlight:line', this.highlightHash);\n window.addEventListener('hashchange', (e) => this.highlightHash(e.target.location.hash));\n }\n};\n\nLineHighlighter.prototype.highlightHash = function (newHash, scrollEnabled = true) {\n let range;\n if (newHash && typeof newHash === 'string') this._hash = newHash;\n\n this.clearHighlight();\n\n if (this._hash !== '') {\n range = this.hashToRange(this._hash);\n if (range[0]) {\n this.highlightRange(range);\n const lineSelector = `#L${range[0]}`;\n\n if (scrollEnabled) {\n scrollToElement(lineSelector, {\n // Scroll to the first highlighted line on initial load\n // Add an offset of -100 for some context\n offset: -100,\n behavior: this.options.scrollBehavior,\n });\n }\n }\n }\n};\n\nLineHighlighter.prototype.clickHandler = function (event) {\n const isLine = event.target.matches('a[data-line-number]');\n if (isLine) {\n let range;\n event.preventDefault();\n this.clearHighlight();\n const lineNumber = parseInt(event.target.dataset.lineNumber, 10);\n const current = this.hashToRange(this._hash);\n if (!(current[0] && event.shiftKey)) {\n // If there's no current selection, or there is but Shift wasn't held,\n // treat this like a single-line selection.\n this.setHash(lineNumber);\n return this.highlightLine(lineNumber);\n }\n if (event.shiftKey) {\n if (lineNumber < current[0]) {\n range = [lineNumber, current[0]];\n } else {\n range = [current[0], lineNumber];\n }\n this.setHash(range[0], range[1]);\n return this.highlightRange(range);\n }\n }\n};\n\nLineHighlighter.prototype.clearHighlight = function () {\n const highlightedLines = document.getElementsByClassName(this.highlightLineClass);\n Array.from(highlightedLines).forEach(function (line) {\n line.classList.remove(this.highlightLineClass);\n }, this);\n};\n\n// Convert a URL hash String into line numbers\n//\n// hash - Hash String\n//\n// Examples:\n//\n// hashToRange('#L5') # => [5, null]\n// hashToRange('#L5-15') # => [5, 15]\n// hashToRange('#foo') # => [null, null]\n//\n// Returns an Array\nLineHighlighter.prototype.hashToRange = function (hash) {\n // ?L(\\d+)(?:-L?(\\d+))?$/)\n const matches = hash.match(/^#?L(\\d+)(?:-L?(\\d+))?$/);\n if (matches && matches.length) {\n const first = parseInt(matches[1], 10);\n const last = matches[2] ? parseInt(matches[2], 10) : null;\n return [first, last];\n }\n return [null, null];\n};\n\n// Highlight a single line\n//\n// lineNumber - Line number to highlight\nLineHighlighter.prototype.highlightLine = function (lineNumber) {\n const lineElement = document.getElementById(`LC${lineNumber}`);\n if (lineElement) {\n lineElement.classList.add(this.highlightLineClass);\n }\n};\n\n// Highlight all lines within a range\n//\n// range - Array containing the starting and ending line numbers\nLineHighlighter.prototype.highlightRange = function (range) {\n if (range[1]) {\n const results = [];\n const ref = range[0] <= range[1] ? range : range.reverse();\n\n for (let lineNumber = range[0]; lineNumber <= ref[1]; lineNumber += 1) {\n results.push(this.highlightLine(lineNumber));\n }\n\n return results;\n }\n return this.highlightLine(range[0]);\n};\n\n// Set the URL hash string\nLineHighlighter.prototype.setHash = function (firstLineNumber, lastLineNumber) {\n let hash;\n if (lastLineNumber) {\n hash = `#L${firstLineNumber}-${lastLineNumber}`;\n } else {\n hash = `#L${firstLineNumber}`;\n }\n this._hash = hash;\n return this.__setLocationHash__(hash);\n};\n\n// Make the actual hash change in the browser\n//\n// This method is stubbed in tests.\nLineHighlighter.prototype.__setLocationHash__ = function (value) {\n return window.history.pushState(\n {\n url: value,\n // We're using pushState instead of assigning location.hash directly to\n // prevent the page from scrolling on the hashchange event\n },\n document.title,\n value,\n );\n};\n\nexport default LineHighlighter;\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\n\n// `Object.hasOwn` method\n// https://tc39.es/ecma262/#sec-object.hasown\n$({ target: 'Object', stat: true }, {\n hasOwn: hasOwn\n});\n","import { visitUrl, constructWebIDEPath } from '~/lib/utils/url_utility';\nimport findAndFollowLink from '~/lib/utils/navigation_utility';\nimport {\n GO_TO_PROJECT_OVERVIEW,\n GO_TO_PROJECT_ACTIVITY_FEED,\n GO_TO_PROJECT_RELEASES,\n GO_TO_PROJECT_FILES,\n GO_TO_PROJECT_COMMITS,\n GO_TO_PROJECT_PIPELINES,\n GO_TO_PROJECT_JOBS,\n GO_TO_PROJECT_REPO_GRAPH,\n GO_TO_PROJECT_REPO_CHARTS,\n GO_TO_PROJECT_ISSUES,\n GO_TO_PROJECT_ISSUE_BOARDS,\n GO_TO_PROJECT_MERGE_REQUESTS,\n GO_TO_PROJECT_WIKI,\n GO_TO_PROJECT_SNIPPETS,\n GO_TO_PROJECT_KUBERNETES,\n GO_TO_PROJECT_ENVIRONMENTS,\n GO_TO_PROJECT_WEBIDE,\n PROJECT_FILES_GO_TO_COMPARE,\n NEW_ISSUE,\n} from './keybindings';\n\nexport default class ShortcutsNavigation {\n constructor(shortcuts) {\n shortcuts.addAll([\n [GO_TO_PROJECT_OVERVIEW, () => findAndFollowLink('.shortcuts-project')],\n [GO_TO_PROJECT_ACTIVITY_FEED, () => findAndFollowLink('.shortcuts-project-activity')],\n [GO_TO_PROJECT_RELEASES, () => findAndFollowLink('.shortcuts-deployments-releases')],\n [GO_TO_PROJECT_FILES, () => findAndFollowLink('.shortcuts-tree')],\n [GO_TO_PROJECT_COMMITS, () => findAndFollowLink('.shortcuts-commits')],\n [GO_TO_PROJECT_PIPELINES, () => findAndFollowLink('.shortcuts-pipelines')],\n [GO_TO_PROJECT_JOBS, () => findAndFollowLink('.shortcuts-builds')],\n [GO_TO_PROJECT_REPO_GRAPH, () => findAndFollowLink('.shortcuts-network')],\n [GO_TO_PROJECT_REPO_CHARTS, () => findAndFollowLink('.shortcuts-repository-charts')],\n [GO_TO_PROJECT_ISSUES, () => findAndFollowLink('.shortcuts-issues')],\n [GO_TO_PROJECT_ISSUE_BOARDS, () => findAndFollowLink('.shortcuts-issue-boards')],\n [GO_TO_PROJECT_MERGE_REQUESTS, () => findAndFollowLink('.shortcuts-merge_requests')],\n [GO_TO_PROJECT_WIKI, () => findAndFollowLink('.shortcuts-wiki')],\n [GO_TO_PROJECT_SNIPPETS, () => findAndFollowLink('.shortcuts-snippets')],\n [GO_TO_PROJECT_KUBERNETES, () => findAndFollowLink('.shortcuts-kubernetes')],\n [GO_TO_PROJECT_ENVIRONMENTS, () => findAndFollowLink('.shortcuts-environments')],\n [PROJECT_FILES_GO_TO_COMPARE, () => findAndFollowLink('.shortcuts-compare')],\n [GO_TO_PROJECT_WEBIDE, ShortcutsNavigation.navigateToWebIDE],\n [NEW_ISSUE, () => findAndFollowLink('.shortcuts-new-issue')],\n ]);\n }\n\n static navigateToWebIDE() {\n const path = constructWebIDEPath({\n sourceProjectFullPath: window.gl.mrWidgetData?.source_project_full_path,\n targetProjectFullPath: window.gl.mrWidgetData?.target_project_full_path,\n iid: window.gl.mrWidgetData?.iid,\n });\n if (path) {\n visitUrl(path, true);\n }\n }\n}\n","/**\n * ReadMore\n *\n * Adds \"read more\" functionality to elements.\n *\n * Specifically, it looks for a trigger, by default \".js-read-more-trigger\", and adds the class\n * \"is-expanded\" to the previous element in order to provide a click to expand functionality.\n *\n * This is useful for long text elements that you would like to truncate, especially for mobile.\n *\n * Example Markup\n *
\n *

Some text that should be long enough to have to truncate within a specified container.

\n *

This text will not appear in the container, as only the first line can be truncated.

\n *

This should also not appear, if everything is working correctly!

\n *
\n * \n *\n * If data-read-more-height is present it will use it to determine if the button should be shown or not.\n *\n */\nexport default function initReadMore(triggerSelector = '.js-read-more-trigger') {\n const triggerEls = document.querySelectorAll(triggerSelector);\n\n if (!triggerEls) return;\n\n triggerEls.forEach((triggerEl) => {\n const targetEl = triggerEl.previousElementSibling;\n\n if (!targetEl) {\n return;\n }\n\n if (Object.hasOwn(triggerEl.parentNode.dataset, 'readMoreHeight')) {\n const parentEl = triggerEl.parentNode;\n const readMoreHeight = Number(parentEl.dataset.readMoreHeight);\n const readMoreContent = parentEl.querySelector('.read-more-content');\n\n if (readMoreContent) {\n parentEl.style.setProperty('--read-more-height', `${readMoreHeight}px`);\n }\n\n if (readMoreHeight > readMoreContent.clientHeight) {\n readMoreContent.classList.remove('read-more-content--has-scrim');\n triggerEl.remove();\n return;\n }\n\n triggerEl.classList.remove('gl-display-none');\n }\n\n triggerEl.addEventListener(\n 'click',\n () => {\n targetEl.classList.add('is-expanded');\n triggerEl.remove();\n },\n { once: true },\n );\n });\n}\n","import { memoize } from 'lodash';\nimport AccessorUtilities from '~/lib/utils/accessor';\nimport { __ } from '~/locale';\n\n/**\n * @param {object} command\n * @param {boolean} [command.customizable]\n */\nconst isCustomizable = ({ customizable }) => Boolean(customizable ?? true);\n\nexport const LOCAL_STORAGE_KEY = 'gl-keyboard-shortcuts-customizations';\n\n/**\n * @returns { Object. } A map of command ID => keys of all\n * keyboard shortcuts that have been customized by the user. These\n * customizations are fetched from `localStorage`. This function is memoized,\n * so its return value will not reflect changes made to the `localStorage` data\n * after it has been called once.\n *\n * @example\n * { \"globalShortcuts.togglePerformanceBar\": [\"p e r f\"] }\n */\nexport const getCustomizations = memoize(() => {\n let parsedCustomizations = {};\n const localStorageIsSafe = AccessorUtilities.canUseLocalStorage();\n\n if (localStorageIsSafe) {\n try {\n parsedCustomizations = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY) || '{}');\n } catch (e) {\n /* do nothing */\n }\n }\n\n return parsedCustomizations;\n});\n\n// All available commands\nexport const TOGGLE_KEYBOARD_SHORTCUTS_DIALOG = {\n id: 'globalShortcuts.toggleKeyboardShortcutsDialog',\n description: __('Toggle keyboard shortcuts help dialog'),\n defaultKeys: ['?'],\n};\n\nexport const GO_TO_YOUR_PROJECTS = {\n id: 'globalShortcuts.goToYourProjects',\n description: __('Go to your projects'),\n defaultKeys: ['shift+p'],\n};\n\nexport const GO_TO_YOUR_GROUPS = {\n id: 'globalShortcuts.goToYourGroups',\n description: __('Go to your groups'),\n defaultKeys: ['shift+g'],\n};\n\nexport const GO_TO_ACTIVITY_FEED = {\n id: 'globalShortcuts.goToActivityFeed',\n description: __('Go to the activity feed'),\n defaultKeys: ['shift+a'],\n};\n\nexport const GO_TO_MILESTONE_LIST = {\n id: 'globalShortcuts.goToMilestoneList',\n description: __('Go to the milestone list'),\n defaultKeys: ['shift+l'],\n};\n\nexport const GO_TO_YOUR_SNIPPETS = {\n id: 'globalShortcuts.goToYourSnippets',\n description: __('Go to your snippets'),\n defaultKeys: ['shift+s'],\n};\n\nexport const START_SEARCH = {\n id: 'globalShortcuts.startSearch',\n description: __('Start search'),\n defaultKeys: ['s', '/'],\n};\n\nexport const FOCUS_FILTER_BAR = {\n id: 'globalShortcuts.focusFilterBar',\n description: __('Focus filter bar'),\n defaultKeys: ['f'],\n};\n\nexport const GO_TO_YOUR_ISSUES = {\n id: 'globalShortcuts.goToYourIssues',\n description: __('Go to your issues'),\n defaultKeys: ['shift+i'],\n};\n\nexport const GO_TO_YOUR_MERGE_REQUESTS = {\n id: 'globalShortcuts.goToYourMergeRequests',\n description: __('Go to your merge requests'),\n defaultKeys: ['shift+m'],\n};\n\nexport const GO_TO_YOUR_REVIEW_REQUESTS = {\n id: 'globalShortcuts.goToYourReviewRequests',\n description: __('Go to your review requests'),\n defaultKeys: ['shift+r'],\n};\n\nexport const GO_TO_YOUR_TODO_LIST = {\n id: 'globalShortcuts.goToYourTodoList',\n description: __('Go to your To-Do list'),\n defaultKeys: ['shift+t'],\n};\n\nexport const TOGGLE_PERFORMANCE_BAR = {\n id: 'globalShortcuts.togglePerformanceBar',\n description: __('Toggle the Performance Bar'),\n defaultKeys: ['p b'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const HIDE_APPEARING_CONTENT = {\n id: 'globalShortcuts.hideAppearingContent',\n description: __('Hide tooltips or popovers'),\n defaultKeys: ['esc'],\n};\n\nexport const TOGGLE_SUPER_SIDEBAR = {\n id: 'globalShortcuts.toggleSuperSidebar',\n description: __('Toggle the navigation sidebar'),\n defaultKeys: ['mod+\\\\'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const TOGGLE_CANARY = {\n id: 'globalShortcuts.toggleCanary',\n description: __('Toggle GitLab Next'),\n defaultKeys: ['g x'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const BOLD_TEXT = {\n id: 'editing.boldText',\n description: __('Bold text'),\n defaultKeys: ['mod+b'],\n customizable: false,\n};\n\nexport const ITALIC_TEXT = {\n id: 'editing.italicText',\n description: __('Italic text'),\n defaultKeys: ['mod+i'],\n customizable: false,\n};\n\nexport const STRIKETHROUGH_TEXT = {\n id: 'editing.strikethroughText',\n description: __('Strikethrough text'),\n defaultKeys: ['mod+shift+x'],\n customizable: false,\n};\n\nexport const LINK_TEXT = {\n id: 'editing.linkText',\n description: __('Link text'),\n defaultKeys: ['mod+k'],\n customizable: false,\n};\n\nexport const INDENT_LINE = {\n id: 'editing.indentLine',\n description: __('Indent line'),\n defaultKeys: ['mod+]'], // eslint-disable-line @gitlab/require-i18n-strings\n customizable: false,\n};\n\nexport const OUTDENT_LINE = {\n id: 'editing.outdentLine',\n description: __('Outdent line'),\n defaultKeys: ['mod+['], // eslint-disable-line @gitlab/require-i18n-strings\n customizable: false,\n};\n\nexport const TOGGLE_MARKDOWN_PREVIEW = {\n id: 'editing.toggleMarkdownPreview',\n description: __('Toggle Markdown preview'),\n // Note: Ideally, keyboard shortcuts should be made cross-platform by using the special `mod` key\n // instead of binding both `ctrl` and `command` versions of the shortcut.\n // See https://docs.gitlab.com/ee/development/fe_guide/keyboard_shortcuts.html#make-cross-platform-shortcuts.\n // However, this particular shortcut has been in place since before the `mod` key was available.\n // We've chosen to leave this implemented as-is for the time being to avoid breaking people's workflows.\n // See discussion in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45308#note_527490548.\n defaultKeys: ['ctrl+shift+p', 'command+shift+p'],\n};\n\n/**\n * @keydown.up event is handled here: https://gitlab.com/gitlab-org/gitlab/-/blob/f3e807cdff5cf25765894163b4e92f8b2bcf8a68/app/assets/javascripts/notes/components/comment_form.vue#L379\n */\nconst EDIT_RECENT_COMMENT = {\n id: 'editing.editRecentComment',\n description: __('Edit your most recent comment in a thread (from an empty textarea)'),\n defaultKeys: ['up'],\n};\n\nexport const EDIT_WIKI_PAGE = {\n id: 'wiki.editWikiPage',\n description: __('Edit wiki page'),\n defaultKeys: ['e'],\n};\n\nexport const REPO_GRAPH_SCROLL_LEFT = {\n id: 'repositoryGraph.scrollLeft',\n description: __('Scroll left'),\n defaultKeys: ['left', 'h'],\n};\n\nexport const REPO_GRAPH_SCROLL_RIGHT = {\n id: 'repositoryGraph.scrollRight',\n description: __('Scroll right'),\n defaultKeys: ['right', 'l'],\n};\n\nexport const REPO_GRAPH_SCROLL_UP = {\n id: 'repositoryGraph.scrollUp',\n description: __('Scroll up'),\n defaultKeys: ['up', 'k'],\n};\n\nexport const REPO_GRAPH_SCROLL_DOWN = {\n id: 'repositoryGraph.scrollDown',\n description: __('Scroll down'),\n defaultKeys: ['down', 'j'],\n};\n\nexport const REPO_GRAPH_SCROLL_TOP = {\n id: 'repositoryGraph.scrollToTop',\n description: __('Scroll to top'),\n defaultKeys: ['shift+up', 'shift+k'],\n};\n\nexport const REPO_GRAPH_SCROLL_BOTTOM = {\n id: 'repositoryGraph.scrollToBottom',\n description: __('Scroll to bottom'),\n defaultKeys: ['shift+down', 'shift+j'],\n};\n\nexport const GO_TO_PROJECT_OVERVIEW = {\n id: 'project.goToOverview',\n description: __(\"Go to the project's overview page\"),\n defaultKeys: ['g o'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_ACTIVITY_FEED = {\n id: 'project.goToActivityFeed',\n description: __(\"Go to the project's activity feed\"),\n defaultKeys: ['g v'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_RELEASES = {\n id: 'project.goToReleases',\n description: __('Go to releases'),\n defaultKeys: ['g r'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_FILES = {\n id: 'project.goToFiles',\n description: __('Go to files'),\n defaultKeys: ['g f'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_FIND_FILE = {\n id: 'project.goToFindFile',\n description: __('Go to find file'),\n defaultKeys: ['t'],\n};\n\nexport const GO_TO_PROJECT_COMMITS = {\n id: 'project.goToCommits',\n description: __('Go to commits'),\n defaultKeys: ['g c'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_REPO_GRAPH = {\n id: 'project.goToRepoGraph',\n description: __('Go to repository graph'),\n defaultKeys: ['g n'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_REPO_CHARTS = {\n id: 'project.goToRepoCharts',\n description: __('Go to repository charts'),\n defaultKeys: ['g d'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_ISSUES = {\n id: 'project.goToIssues',\n description: __('Go to issues'),\n defaultKeys: ['g i'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const NEW_ISSUE = {\n id: 'project.newIssue',\n description: __('New issue'),\n defaultKeys: ['i'],\n};\n\nexport const GO_TO_PROJECT_ISSUE_BOARDS = {\n id: 'project.goToIssueBoards',\n description: __('Go to issue boards'),\n defaultKeys: ['g b'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_MERGE_REQUESTS = {\n id: 'project.goToMergeRequests',\n description: __('Go to merge requests'),\n defaultKeys: ['g m'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_PIPELINES = {\n id: 'project.goToPipelines',\n description: __('Go to pipelines'),\n defaultKeys: ['g p'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_JOBS = {\n id: 'project.goToJobs',\n description: __('Go to jobs'),\n defaultKeys: ['g j'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_ENVIRONMENTS = {\n id: 'project.goToEnvironments',\n description: __('Go to environments'),\n defaultKeys: ['g e'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_KUBERNETES = {\n id: 'project.goToKubernetes',\n description: __('Go to kubernetes'),\n defaultKeys: ['g k'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_SNIPPETS = {\n id: 'project.goToSnippets',\n description: __('Go to snippets'),\n defaultKeys: ['g s'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_WIKI = {\n id: 'project.goToWiki',\n description: __('Go to wiki'),\n defaultKeys: ['g w'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const GO_TO_PROJECT_WEBIDE = {\n id: 'project.goToWebIDE',\n description: __('Open in Web IDE'),\n defaultKeys: ['.'],\n};\n\nexport const PROJECT_FILES_MOVE_SELECTION_UP = {\n id: 'projectFiles.moveSelectionUp',\n description: __('Move selection up'),\n defaultKeys: ['up'],\n};\n\nexport const PROJECT_FILES_MOVE_SELECTION_DOWN = {\n id: 'projectFiles.moveSelectionDown',\n description: __('Move selection down'),\n defaultKeys: ['down'],\n};\n\nexport const PROJECT_FILES_OPEN_SELECTION = {\n id: 'projectFiles.openSelection',\n description: __('Open Selection'),\n defaultKeys: ['enter'],\n};\n\nexport const PROJECT_FILES_GO_BACK = {\n id: 'projectFiles.goBack',\n description: __('Go back (while searching for files)'),\n defaultKeys: ['esc'],\n};\n\nexport const PROJECT_FILES_GO_TO_PERMALINK = {\n id: 'projectFiles.goToFilePermalink',\n description: __('Go to file permalink (while viewing a file)'),\n defaultKeys: ['y'],\n};\n\nexport const PROJECT_FILES_GO_TO_COMPARE = {\n id: 'projectFiles.goToCompare',\n description: __('Compare Branches'),\n defaultKeys: ['shift+c'],\n};\n\nexport const ISSUABLE_COMMENT_OR_REPLY = {\n id: 'issuables.commentReply',\n description: __('Comment/Reply (quoting selected text)'),\n defaultKeys: ['r'],\n};\n\nexport const ISSUABLE_EDIT_DESCRIPTION = {\n id: 'issuables.editDescription',\n description: __('Edit description'),\n defaultKeys: ['e'],\n};\n\nexport const ISSUABLE_CHANGE_LABEL = {\n id: 'issuables.changeLabel',\n description: __('Change label'),\n defaultKeys: ['l'],\n};\n\nexport const ISSUABLE_COPY_REF = {\n id: 'issuables.copyIssuableRef',\n description: __('Copy reference'),\n defaultKeys: ['c r'], // eslint-disable-line @gitlab/require-i18n-strings\n};\n\nexport const ISSUE_MR_CHANGE_ASSIGNEE = {\n id: 'issuesMRs.changeAssignee',\n description: __('Change assignee'),\n defaultKeys: ['a'],\n};\n\nexport const ISSUE_MR_CHANGE_MILESTONE = {\n id: 'issuesMRs.changeMilestone',\n description: __('Change milestone'),\n defaultKeys: ['m'],\n};\n\nexport const MR_NEXT_FILE_IN_DIFF = {\n id: 'mergeRequests.nextFileInDiff',\n description: __('Next file in diff'),\n defaultKeys: [']', 'j'],\n};\n\nexport const MR_PREVIOUS_FILE_IN_DIFF = {\n id: 'mergeRequests.previousFileInDiff',\n description: __('Previous file in diff'),\n defaultKeys: ['[', 'k'],\n};\n\nexport const MR_GO_TO_FILE = {\n id: 'mergeRequests.goToFile',\n description: __('Go to file'),\n defaultKeys: ['mod+p', 't'],\n customizable: false,\n};\n\nexport const MR_TOGGLE_FILE_BROWSER = {\n id: 'mergeRequests.toggleFileBrowser',\n description: __('Toggle file browser'),\n defaultKeys: ['f'],\n customizable: false,\n};\n\nexport const MR_NEXT_UNRESOLVED_DISCUSSION = {\n id: 'mergeRequests.nextUnresolvedDiscussion',\n description: __('Next unresolved thread'),\n defaultKeys: ['n'],\n};\n\nexport const MR_PREVIOUS_UNRESOLVED_DISCUSSION = {\n id: 'mergeRequests.previousUnresolvedDiscussion',\n description: __('Previous unresolved thread'),\n defaultKeys: ['p'],\n};\n\nexport const MR_COPY_SOURCE_BRANCH_NAME = {\n id: 'mergeRequests.copySourceBranchName',\n description: __('Copy source branch name'),\n defaultKeys: ['b'],\n};\n\nexport const MR_COMMITS_NEXT_COMMIT = {\n id: 'mergeRequestCommits.nextCommit',\n description: __('Next commit'),\n defaultKeys: ['c'],\n};\n\nexport const MR_COMMITS_PREVIOUS_COMMIT = {\n id: 'mergeRequestCommits.previousCommit',\n description: __('Previous commit'),\n defaultKeys: ['x'],\n};\n\nexport const ISSUE_NEXT_DESIGN = {\n id: 'issues.nextDesign',\n description: __('Next design'),\n defaultKeys: ['right'],\n};\n\nexport const ISSUE_PREVIOUS_DESIGN = {\n id: 'issues.previousDesign',\n description: __('Previous design'),\n defaultKeys: ['left'],\n};\n\nexport const ISSUE_CLOSE_DESIGN = {\n id: 'issues.closeDesign',\n description: __('Close design'),\n defaultKeys: ['esc'],\n};\n\nexport const SIDEBAR_CLOSE_WIDGET = {\n id: 'sidebar.closeWidget',\n description: __('Close sidebar widget'),\n defaultKeys: ['esc'],\n};\n\n/**\n * Legacy Web IDE uses the same shortcuts as MR_GO_TO_FILE, from this shared component:\n * https://gitlab.com/gitlab-org/gitlab/-/blob/f3e807cdff5cf25765894163b4e92f8b2bcf8a68/app/assets/javascripts/vue_shared/components/file_finder/index.vue#L6\n */\nconst WEB_IDE_GO_TO_FILE = {\n id: 'webIDE.goToFile',\n description: __('Go to file'),\n defaultKeys: ['mod+p', 't'],\n customizable: false /* customize MR_GO_TO_FILE instead */,\n};\n\n/**\n * Legacy Web IDE uses @keydown.ctrl.enter and @keydown.meta.enter events here:\n * https://gitlab.com/gitlab-org/gitlab/-/blob/f3e807cdff5cf25765894163b4e92f8b2bcf8a68/app/assets/javascripts/ide/components/shared/commit_message_field.vue#L131-132\n */\nconst WEB_IDE_COMMIT = {\n id: 'webIDE.commit',\n description: __('Commit (when editing commit message)'),\n defaultKeys: ['mod+enter'],\n customizable: false,\n};\n\n// All keybinding groups\nconst GLOBAL_SHORTCUTS_GROUP = {\n id: 'globalShortcuts',\n name: __('Global Shortcuts'),\n keybindings: [\n TOGGLE_KEYBOARD_SHORTCUTS_DIALOG,\n GO_TO_YOUR_PROJECTS,\n GO_TO_YOUR_GROUPS,\n GO_TO_ACTIVITY_FEED,\n GO_TO_MILESTONE_LIST,\n GO_TO_YOUR_SNIPPETS,\n START_SEARCH,\n FOCUS_FILTER_BAR,\n GO_TO_YOUR_ISSUES,\n GO_TO_YOUR_MERGE_REQUESTS,\n GO_TO_YOUR_REVIEW_REQUESTS,\n GO_TO_YOUR_TODO_LIST,\n TOGGLE_PERFORMANCE_BAR,\n HIDE_APPEARING_CONTENT,\n TOGGLE_SUPER_SIDEBAR,\n ],\n};\n\nexport const EDITING_SHORTCUTS_GROUP = {\n id: 'editing',\n name: __('Editing'),\n keybindings: [\n BOLD_TEXT,\n ITALIC_TEXT,\n STRIKETHROUGH_TEXT,\n LINK_TEXT,\n TOGGLE_MARKDOWN_PREVIEW,\n EDIT_RECENT_COMMENT,\n ],\n};\n\nconst WIKI_SHORTCUTS_GROUP = {\n id: 'wiki',\n name: __('Wiki'),\n keybindings: [EDIT_WIKI_PAGE],\n};\n\nconst REPOSITORY_GRAPH_SHORTCUTS_GROUP = {\n id: 'repositoryGraph',\n name: __('Repository Graph'),\n keybindings: [\n REPO_GRAPH_SCROLL_LEFT,\n REPO_GRAPH_SCROLL_RIGHT,\n REPO_GRAPH_SCROLL_UP,\n REPO_GRAPH_SCROLL_DOWN,\n REPO_GRAPH_SCROLL_TOP,\n REPO_GRAPH_SCROLL_BOTTOM,\n ],\n};\n\nconst PROJECT_SHORTCUTS_GROUP = {\n id: 'project',\n name: __('Project'),\n keybindings: [\n GO_TO_PROJECT_OVERVIEW,\n GO_TO_PROJECT_ACTIVITY_FEED,\n GO_TO_PROJECT_RELEASES,\n GO_TO_PROJECT_FILES,\n GO_TO_PROJECT_FIND_FILE,\n GO_TO_PROJECT_COMMITS,\n GO_TO_PROJECT_REPO_GRAPH,\n GO_TO_PROJECT_REPO_CHARTS,\n GO_TO_PROJECT_ISSUES,\n NEW_ISSUE,\n GO_TO_PROJECT_ISSUE_BOARDS,\n GO_TO_PROJECT_MERGE_REQUESTS,\n GO_TO_PROJECT_PIPELINES,\n GO_TO_PROJECT_JOBS,\n GO_TO_PROJECT_ENVIRONMENTS,\n GO_TO_PROJECT_KUBERNETES,\n GO_TO_PROJECT_SNIPPETS,\n GO_TO_PROJECT_WIKI,\n GO_TO_PROJECT_WEBIDE,\n ],\n};\n\nconst PROJECT_FILES_SHORTCUTS_GROUP = {\n id: 'projectFiles',\n name: __('Project Files'),\n keybindings: [\n PROJECT_FILES_MOVE_SELECTION_UP,\n PROJECT_FILES_MOVE_SELECTION_DOWN,\n PROJECT_FILES_OPEN_SELECTION,\n PROJECT_FILES_GO_BACK,\n PROJECT_FILES_GO_TO_PERMALINK,\n PROJECT_FILES_GO_TO_COMPARE,\n ],\n};\n\nconst ISSUABLE_SHORTCUTS_GROUP = {\n id: 'issuables',\n name: __('Epics, issues, and merge requests'),\n keybindings: [\n ISSUABLE_COMMENT_OR_REPLY,\n ISSUABLE_EDIT_DESCRIPTION,\n ISSUABLE_CHANGE_LABEL,\n ISSUABLE_COPY_REF,\n ],\n};\n\nconst ISSUE_MR_SHORTCUTS_GROUP = {\n id: 'issuesMRs',\n name: __('Issues and merge requests'),\n keybindings: [ISSUE_MR_CHANGE_ASSIGNEE, ISSUE_MR_CHANGE_MILESTONE],\n};\n\nconst MR_SHORTCUTS_GROUP = {\n id: 'mergeRequests',\n name: __('Merge requests'),\n keybindings: [\n MR_NEXT_FILE_IN_DIFF,\n MR_PREVIOUS_FILE_IN_DIFF,\n MR_GO_TO_FILE,\n MR_NEXT_UNRESOLVED_DISCUSSION,\n MR_PREVIOUS_UNRESOLVED_DISCUSSION,\n MR_COPY_SOURCE_BRANCH_NAME,\n MR_TOGGLE_FILE_BROWSER,\n ],\n};\n\nconst MR_COMMITS_SHORTCUTS_GROUP = {\n id: 'mergeRequestCommits',\n name: __('Merge request commits'),\n keybindings: [MR_COMMITS_NEXT_COMMIT, MR_COMMITS_PREVIOUS_COMMIT],\n};\n\nconst ISSUES_SHORTCUTS_GROUP = {\n id: 'issues',\n name: __('Issues'),\n keybindings: [ISSUE_NEXT_DESIGN, ISSUE_PREVIOUS_DESIGN, ISSUE_CLOSE_DESIGN],\n};\n\nconst WEB_IDE_SHORTCUTS_GROUP = {\n id: 'webIDE',\n name: __('Legacy Web IDE'),\n keybindings: [WEB_IDE_GO_TO_FILE, WEB_IDE_COMMIT],\n};\n\nexport const MISC_SHORTCUTS_GROUP = {\n id: 'misc',\n name: __('Miscellaneous'),\n keybindings: [TOGGLE_CANARY],\n};\n\n/** All keybindings, grouped and ordered with descriptions */\nexport const keybindingGroups = [\n GLOBAL_SHORTCUTS_GROUP,\n EDITING_SHORTCUTS_GROUP,\n WIKI_SHORTCUTS_GROUP,\n REPOSITORY_GRAPH_SHORTCUTS_GROUP,\n PROJECT_SHORTCUTS_GROUP,\n PROJECT_FILES_SHORTCUTS_GROUP,\n ISSUABLE_SHORTCUTS_GROUP,\n ISSUE_MR_SHORTCUTS_GROUP,\n MR_SHORTCUTS_GROUP,\n MR_COMMITS_SHORTCUTS_GROUP,\n ISSUES_SHORTCUTS_GROUP,\n WEB_IDE_SHORTCUTS_GROUP,\n MISC_SHORTCUTS_GROUP,\n];\n\n/**\n * Gets keyboard shortcuts associated with a command\n *\n * @param {Object} command The command object. All command objects are\n * available as imports from this file.\n * @param {string} command.id\n * @param {string[]} command.defaultKeys\n * @param {boolean} [command.customizable]\n *\n * @returns {string[]} An array of keyboard shortcut strings bound to the command\n *\n * @example\n * import { keysFor, TOGGLE_PERFORMANCE_BAR } from '~/behaviors/shortcuts/keybindings'\n *\n * Mousetrap.bind(keysFor(TOGGLE_PERFORMANCE_BAR), handler);\n */\nexport const keysFor = (command) => {\n if (!isCustomizable(command)) {\n // if the command is defined with `customizable: false`,\n // don't allow this command to be customized.\n return command.defaultKeys;\n }\n\n return getCustomizations()[command.id] || command.defaultKeys;\n};\n","import { addShortcutsExtension } from '~/behaviors/shortcuts';\nimport ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation';\nimport initReadMore from '~/read_more';\nimport Project from './project';\n\nnew Project(); // eslint-disable-line no-new\naddShortcutsExtension(ShortcutsNavigation);\n\ninitReadMore();\n","/* eslint-disable func-names, no-return-assign */\n\nimport $ from 'jquery';\nimport { setCookie } from '~/lib/utils/common_utils';\nimport initClonePanel from '~/clone_panel';\n\nexport default class Project {\n constructor() {\n initClonePanel();\n\n $('.js-hide-no-ssh-message').on('click', function (e) {\n setCookie('hide_no_ssh_message', 'false');\n $(this).parents('.js-no-ssh-key-message').remove();\n return e.preventDefault();\n });\n $('.js-hide-no-password-message').on('click', function (e) {\n setCookie('hide_no_password_message', 'false');\n $(this).parents('.js-no-password-message').remove();\n return e.preventDefault();\n });\n $('.hide-auto-devops-implicitly-enabled-banner').on('click', function (e) {\n const projectId = $(this).data('project-id');\n const cookieKey = `hide_auto_devops_implicitly_enabled_banner_${projectId}`;\n setCookie(cookieKey, 'false');\n $(this).parents('.auto-devops-implicitly-enabled-banner').remove();\n return e.preventDefault();\n });\n $('.hide-mobile-devops-promo').on('click', function (e) {\n const projectId = $(this).data('project-id');\n const cookieKey = `hide_mobile_devops_promo_${projectId}`;\n setCookie(cookieKey, 'false');\n $(this).parents('#mobile-devops-promo-banner').remove();\n return e.preventDefault();\n });\n }\n\n static changeProject(url) {\n return (window.location = url);\n }\n}\n","import $ from 'jquery';\n\nexport default function initClonePanel() {\n const $cloneOptions = $('ul.clone-options-dropdown');\n if ($cloneOptions.length) {\n const $cloneUrlField = $('#clone_url');\n const $cloneBtnLabel = $('.js-git-clone-holder .js-clone-dropdown-label');\n const mobileCloneField = document.querySelector(\n '.js-mobile-git-clone .js-clone-dropdown-label',\n );\n\n const selectedCloneOption = $cloneBtnLabel.text().trim();\n if (selectedCloneOption.length > 0) {\n $(`a:contains('${selectedCloneOption}')`, $cloneOptions).addClass('is-active');\n }\n\n $('.js-clone-links a', $cloneOptions).on('click', (e) => {\n const $this = $(e.currentTarget);\n const url = $this.attr('href');\n if (\n url &&\n (url.startsWith('vscode://') ||\n url.startsWith('xcode://') ||\n url.startsWith('jetbrains://'))\n ) {\n // Clone with \"...\" should open like a normal link\n return;\n }\n e.preventDefault();\n const cloneType = $this.data('cloneType');\n\n $('.is-active', $cloneOptions).removeClass('is-active');\n $(`a[data-clone-type=\"${cloneType}\"]`).each(function switchProtocol() {\n const $el = $(this);\n const activeText = $el.find('.dropdown-menu-inner-title').text();\n const $container = $el.closest('.js-git-clone-holder, .js-mobile-git-clone');\n const $label = $container.find('.js-clone-dropdown-label');\n\n $el.toggleClass('is-active');\n $label.text(activeText);\n });\n\n if (mobileCloneField) {\n mobileCloneField.dataset.clipboardText = url;\n } else {\n $cloneUrlField.val(url);\n }\n $('.js-git-empty .js-clone').text(url);\n });\n }\n}\n"],"sourceRoot":""}