{"version":3,"sources":["webpack:////home/git/gitlab/node_modules/core-js/internals/delete-property-or-throw.js","webpack:////home/git/gitlab/node_modules/core-js/modules/es.array.unshift.js","webpack:///./lib/mousetrap.js","webpack:////home/git/gitlab/node_modules/mousetrap/plugins/pause/mousetrap-pause.js","webpack:///./behaviors/shortcuts/keybindings.js","webpack:///./behaviors/shortcuts/shortcuts.js","webpack:///./behaviors/shortcuts/shortcuts_toggle.js"],"names":["tryToString","$TypeError","TypeError","module","exports","O","P","$","toObject","lengthOfArrayLike","setArrayLength","deletePropertyOrThrow","doesNotExceedSafeInteger","target","proto","arity","forced","unshift","Object","defineProperty","writable","error","properErrorOnNonWritableLength","item","this","len","argCount","arguments","length","k","to","j","additionalStopCallbacks","originalStopCallback","Mousetrap","prototype","stopCallback","e","element","combo","callback","returnValue","call","undefined","addStopCallback","MOUSETRAP_COPY_KEYBOARD_SHORTCUT","_originalStopCallback","paused","pause","unpause","init","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_OVERVIEW","GO_TO_PROJECT_ACTIVITY_FEED","GO_TO_PROJECT_RELEASES","GO_TO_PROJECT_FILES","GO_TO_PROJECT_FIND_FILE","GO_TO_PROJECT_COMMITS","GO_TO_PROJECT_REPO_GRAPH","GO_TO_PROJECT_REPO_CHARTS","GO_TO_PROJECT_ISSUES","NEW_ISSUE","GO_TO_PROJECT_ISSUE_BOARDS","GO_TO_PROJECT_MERGE_REQUESTS","GO_TO_PROJECT_PIPELINES","GO_TO_PROJECT_JOBS","GO_TO_PROJECT_ENVIRONMENTS","GO_TO_PROJECT_KUBERNETES","GO_TO_PROJECT_SNIPPETS","GO_TO_PROJECT_WIKI","GO_TO_PROJECT_WEBIDE","PROJECT_FILES_MOVE_SELECTION_UP","PROJECT_FILES_MOVE_SELECTION_DOWN","PROJECT_FILES_OPEN_SELECTION","PROJECT_FILES_GO_BACK","PROJECT_FILES_GO_TO_PERMALINK","PROJECT_FILES_GO_TO_COMPARE","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","LOCAL_MOUSETRAP_DATA_KEY","getToolbarBtnToShortcutsMap","$textarea","$allToolbarBtns","closest","find","map","Map","each","$toolbarBtn","keyboardShortcuts","data","set","Shortcuts","constructor","extensions","onToggleHelp","bind","helpModalElement","helpModalVueInstance","addAll","focusSearch","focusFilter","onTogglePerfBar","hideAppearingContent","onToggleCanary","findAndFollowLink","toggleMarkdownPreview","includes","findFileURL","document","body","dataset","findFile","add","visitUrl","on","shouldDisableShortcuts","disableShortcuts","addExtension","Extension","args","extensionsCurrentlyLoading","Set","instance","get","Dep","_Extension$dependenci","dependencies","has","delete","commandsAndCallbacks","_this","forEach","commandAndCallback","_this2","preventDefault","$destroy","remove","createElement","append","Vue","el","components","ShortcutsHelp","render","hidden","parseBoolean","getCookie","setCookie","path","refreshCurrentPage","currentValue","toString","expires","triggerHandler","filterInput","focus","_document$querySelect","querySelector","click","querySelectorAll","style","display","handler","toolbarBtnToShortcutsMap","localMousetrap","allShortcuts","_flatten","values","unbind","window","gon","keyboard_shortcuts_enabled","setItem"],"mappings":"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","file":"shortcutsBundle.0d1068c6.chunk.js","sourcesContent":["'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\n\n// IE8-\nvar INCORRECT_RESULT = [].unshift(0) !== 1;\n\n// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).unshift();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();\n\n// `Array.prototype.unshift` method\n// https://tc39.es/ecma262/#sec-array.prototype.unshift\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n unshift: function unshift(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n if (argCount) {\n doesNotExceedSafeInteger(len + argCount);\n var k = len;\n while (k--) {\n var to = k + argCount;\n if (k in O) O[to] = O[k];\n else deletePropertyOrThrow(O, to);\n }\n for (var j = 0; j < argCount; j++) {\n O[j] = arguments[j];\n }\n } return setArrayLength(O, len + argCount);\n }\n});\n","// This is the only file allowed to import directly from the package.\n// eslint-disable-next-line no-restricted-imports\nimport Mousetrap from 'mousetrap';\n\nconst additionalStopCallbacks = [];\nconst originalStopCallback = Mousetrap.prototype.stopCallback;\n\nMousetrap.prototype.stopCallback = function customStopCallback(e, element, combo) {\n for (const callback of additionalStopCallbacks) {\n const returnValue = callback.call(this, e, element, combo);\n if (returnValue !== undefined) return returnValue;\n }\n\n return originalStopCallback.call(this, e, element, combo);\n};\n\n/**\n * Add a stop callback to Mousetrap.\n *\n * This allows overriding the default behaviour of Mousetrap#stopCallback,\n * which is to stop the bound key handler/callback from being called if the key\n * combo is pressed inside form fields (input, select, textareas, etc). See\n * https://craig.is/killing/mice#api.stopCallback.\n *\n * The stopCallback registered here has the same signature as\n * Mousetrap#stopCallback, with the one difference being that the callback\n * should return `undefined` if it has no opinion on whether the current key\n * combo should be stopped or not, and the next stop callback should be\n * consulted instead. If a boolean is returned, no other stop callbacks are\n * called.\n *\n * Note: This approach does not always work as expected when coupled with\n * Mousetrap's pause plugin, which is used for enabling/disabling all keyboard\n * shortcuts. That plugin assumes it's the first to execute and overwrite\n * Mousetrap's `stopCallback` method, whereas to work correctly with this, it\n * must execute last. This is not guaranteed or even attempted.\n *\n * To work correctly, we may need to reimplement the pause plugin here.\n *\n * @param {(e: Event, element: Element, combo: string) => boolean|undefined}\n * stopCallback The additional stop callback function to add to the chain\n * of stop callbacks.\n * @returns {void}\n */\nexport const addStopCallback = (stopCallback) => {\n // Unshift, since we want to iterate through them in reverse order, so that\n // the most recently added handler is called first, and the original\n // stopCallback method is called last.\n additionalStopCallbacks.unshift(stopCallback);\n};\n\n/**\n * Clear additionalStopCallbacks. Used only for tests.\n */\nexport const clearStopCallbacksForTests = () => {\n additionalStopCallbacks.length = 0;\n};\n\nexport const MOUSETRAP_COPY_KEYBOARD_SHORTCUT = 'mod+c';\n\nexport { Mousetrap };\n","/**\n * adds a pause and unpause method to Mousetrap\n * this allows you to enable or disable keyboard shortcuts\n * without having to reset Mousetrap and rebind everything\n */\n/* global Mousetrap:true */\n(function(Mousetrap) {\n var _originalStopCallback = Mousetrap.prototype.stopCallback;\n\n Mousetrap.prototype.stopCallback = function(e, element, combo) {\n var self = this;\n\n if (self.paused) {\n return true;\n }\n\n return _originalStopCallback.call(self, e, element, combo);\n };\n\n Mousetrap.prototype.pause = function() {\n var self = this;\n self.paused = true;\n };\n\n Mousetrap.prototype.unpause = function() {\n var self = this;\n self.paused = false;\n };\n\n Mousetrap.init();\n}) (Mousetrap);\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 $ from 'jquery';\nimport { flatten } from 'lodash';\nimport Vue from 'vue';\nimport { Mousetrap, addStopCallback } from '~/lib/mousetrap';\nimport { getCookie, setCookie, parseBoolean } from '~/lib/utils/common_utils';\n\nimport findAndFollowLink from '~/lib/utils/navigation_utility';\nimport { refreshCurrentPage, visitUrl } from '~/lib/utils/url_utility';\nimport {\n keysFor,\n TOGGLE_KEYBOARD_SHORTCUTS_DIALOG,\n START_SEARCH,\n FOCUS_FILTER_BAR,\n TOGGLE_PERFORMANCE_BAR,\n HIDE_APPEARING_CONTENT,\n TOGGLE_CANARY,\n TOGGLE_MARKDOWN_PREVIEW,\n GO_TO_YOUR_TODO_LIST,\n GO_TO_ACTIVITY_FEED,\n GO_TO_YOUR_ISSUES,\n GO_TO_YOUR_MERGE_REQUESTS,\n GO_TO_YOUR_PROJECTS,\n GO_TO_YOUR_GROUPS,\n GO_TO_MILESTONE_LIST,\n GO_TO_YOUR_SNIPPETS,\n GO_TO_PROJECT_FIND_FILE,\n GO_TO_YOUR_REVIEW_REQUESTS,\n} from './keybindings';\nimport { disableShortcuts, shouldDisableShortcuts } from './shortcuts_toggle';\n\n/**\n * The key used to save and fetch the local Mousetrap instance\n * attached to a `