{"version":3,"sources":["webpack:///./repository/queries/fork_details.query.graphql","webpack:///./code_navigation/utils/dom_utils.js","webpack:///./code_navigation/utils/index.js","webpack:////build/source/ee/app/assets/javascripts/graphql_shared/queries/code_owners_info.query.graphql","webpack:///./code_navigation/store/actions.js","webpack:///./code_navigation/store/mutation_types.js","webpack:///./code_navigation/store/mutations.js","webpack:///./code_navigation/store/index.js","webpack:///./code_navigation/store/state.js","webpack:///./repository/event_hub.js","webpack:///./lib/utils/grammar.js","webpack:///./repository/mutations/sync_fork.mutation.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/collapse/collapse.js","webpack:///./vue_shared/components/source_viewer/workers/highlight_worker.js","webpack:///./repository/components/fork_info.vue","webpack:///repository/components/fork_sync_conflicts_modal.vue","webpack:///./repository/components/fork_sync_conflicts_modal.vue?91ce","webpack:///./repository/components/fork_sync_conflicts_modal.vue?4ba1","webpack:///./repository/components/fork_sync_conflicts_modal.vue","webpack:///repository/components/fork_info.vue","webpack:///./repository/components/fork_info.vue?9835","webpack:///./repository/components/fork_info.vue?4642","webpack:///./vue_shared/components/ci_icon/ci_icon.vue","webpack:///./vue_shared/components/ci_icon/ci_icon.vue?b66d","webpack:///vue_shared/components/ci_icon/ci_icon.vue","webpack:///./vue_shared/components/ci_icon/ci_icon.vue?9e67","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/collapse/helpers/bv-collapse.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/collapse/collapse.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_owners/code_owners.vue","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/code_owners/code_owners.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_owners/code_owners.vue?8722","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_owners/code_owners.vue?2956","webpack:///./repository/utils/url_utility.js"],"names":["doc","loc","source","definitionRefs","findOperation","name","i","definitions","length","element","value","forEach","def","refs","Set","collectFragmentReferences","node","kind","add","type","selectionSet","selections","selection","variableDefinitions","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","push","oneQuery","isTextNode","nodeType","createSpan","content","classList","span","document","createElement","innerText","wrapNodes","text","dataset","wrapper","innerHTML","replace","outerHTML","wrapSpacesWithSpans","childNodes","el","s1","textContent","s2","str","test","trim","newEl","Object","assign","replaceWith","wrapTextWithSpan","cachedData","Map","wrappedLines","WeakSet","getCurrentHoverElement","get","setCurrentHoverElement","set","addInteractionClass","path","d","wrapTextNodes","lineNumber","start_line","lines","querySelector","querySelectorAll","line","undefined","end_line","charCount","elm","find","start_char","charIndex","lineIndex","closest","deprecatedNodeUpdate","walker","createTreeWalker","NodeFilter","SHOW_TEXT","startCharIndex","currentNode","nextNode","end_char","textLength","startIndex","slice","setInitialData","commit","data","requestDataError","fetchData","dispatch","state","blobs","codeNavigationPath","axios","then","normalizedData","reduce","acc","_d$definition_path","hover","definitionLineNumber","parseInt","definition_path","split","pop","catch","showBlobInteractionZones","values","showDefinition","target","definition","position","isCurrentElementPopoverOpen","contains","remove","blobEl","blobPath","_el$closest","x","offsetLeft","y","offsetTop","height","offsetHeight","definitionPathPrefix","loading","currentDefinition","currentDefinitionPosition","currentBlobPath","Vuex","Store","actions","mutations","createEventHub","toNounSeriesText","items","onlyCommas","sprintf","s__","item","nextItem","idx","lastItem","firstItem","__vue_script__","components","BCollapse","model","prop","event","props","visible","Boolean","default","required","__vue_component__","render","_h","this","$createElement","_self","_c","_g","_b","attrs","$attrs","$listeners","_t","staticRenderFns","Worker_fn","Worker","i18n","modalTitle","modalMessage","step1","__","step2","step3","step4","step1Text","step2Text","step3Text","copyToClipboard","close","GlModal","GlButton","ModalCopyButton","directives","SafeHtml","sourceDefaultBranch","String","sourceName","sourcePath","selectedBranch","computed","instructionsStep1","getBaseURL","instructionsStep2","methods","show","$refs","modal","hide","instructionsStep3","_vm","ref","$options","scopedSlots","_u","key","fn","on","$event","indexOf","_k","keyCode","apply","arguments","_v","_s","proxy","staticClass","forkedFrom","inaccessibleProject","upToDate","unknown","behind","ahead","behindAhead","limitedVisibility","error","updateFork","createMergeRequest","viewMergeRequest","successMessage","GlIcon","GlLink","GlSprintf","GlSkeletonLoader","ConflictsModal","GlLoadingIcon","apollo","project","query","forkDetailsQuery","notifyOnNetworkStatusChange","variables","forkDetailsQueryVariables","skip","createAlert","message","captureError","result","isSyncing","increasePollInterval","isForkUpdated","variant","VARIANT_INFO","eventHub","$emit","FORK_UPDATED_EVENT","pollInterval","projectPath","canSyncBranch","aheadComparePath","behindComparePath","createMrPath","viewMrPath","currentPollInterval","isLoading","$apollo","queries","forkDetails","_this$project","hasConflicts","_this$forkDetails","_this$forkDetails2","isUpToDate","_this$project2","_this$project3","behindText","commit_word","n__","aheadText","isUnknownDivergence","behindAheadMessage","messages","join","hasBehindAheadMessage","hasUpdateButton","hasCreateMrButton","hasViewMrButton","forkDivergenceMessage","watch","newVal","showConflictsModal","_this","mutate","mutation","syncForkMutation","targetBranch","update","store","projectSyncFork","details","writeQuery","id","startSyncing","syncForkWithPolling","checkIfSyncIsPossible","backoff","POLLING_INTERVAL_BACKOFF","interval","newInterval","Math","min","FIVE_MINUTES_IN_MS","POLLING_INTERVAL_DEFAULT","_e","GlTooltip","GlTooltipDirective","status","validator","icon","startsWith","showStatusText","showTooltip","useLink","componentType","href","title","_this$status","ariaLabel","_this$status2","detailsPath","details_path","component","rawName","modifiers","tag","class","TRANSITION_PROPS","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","TRANSITION_HANDLERS","enter","scrollHeight","afterEnter","leave","afterLeave","appear","BVCollapse","functional","h","_ref","children","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_EVENT_NAME_ACCORDION","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","mixin","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","defaultValue","accordion","mixins","transitioning","collapse","newValue","oldValue","emitState","listenOnRoot","handleToggleEvent","handleAccordionEvent","$nextTick","safeId","emitSync","emitOnRoot","toggle","openedId","openAccordion","isThis","$content","classObject","normalizeSlot","slotScope","onEnter","onAfterEnter","onLeave","onAfterLeave","and","errorMessage","manageBranchRules","noCodeOwnersText","helpText","learnMore","showAll","hideAll","codeOwnersHelpPath","helpPagePath","helpPopoverId","_uniqueId","GlBadge","GlCollapse","GlPopover","HelpIcon","codeOwnersInfoQuery","filePath","branch","canViewBranchRules","branchRulesPath","isCodeOwnersExpanded","blobInfo","repository","nodes","collapseIcon","codeOwnersPath","codeOwners","_this$blobInfo","codeOwnersTotal","_this$blobInfo2","toggleText","hasCodeOwners","codeOwnersSprintfMessage","map","codeOwner","index","refetch","toggleCodeOwners","getCodeOwner","Number","webPath","generateHistoryUrl","historyLink","refType","url","URL","window","location","pathname","joinPaths","removeParams","escapeFileUrl","searchParams"],"mappings":"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","file":"commons-pages.projects.blob.show-pages.projects.tree.show-treeList.3c117d30.chunk.js","sourcesContent":["\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getForkDetails\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"forkDetails\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ahead\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"behind\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isSyncing\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasConflicts\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":200}};\n doc.loc.source = {\"body\":\"query getForkDetails($projectPath: ID!, $ref: String) {\\n project(fullPath: $projectPath) {\\n id\\n forkDetails(ref: $ref) {\\n ahead\\n behind\\n isSyncing\\n hasConflicts\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getForkDetails\"] = oneQuery(doc, \"getForkDetails\");\n \n","const TEXT_NODE = 3;\n\nconst isTextNode = ({ nodeType }) => nodeType === TEXT_NODE;\n\nconst isBlank = (str) => !str || /^\\s*$/.test(str);\n\nconst isMatch = (s1, s2) => !isBlank(s1) && s1.trim() === s2.trim();\n\nconst createSpan = (content, classList) => {\n const span = document.createElement('span');\n span.innerText = content;\n span.classList = classList || '';\n return span;\n};\n\nconst wrapSpacesWithSpans = (text) =>\n text.replace(/ /g, createSpan(' ').outerHTML).replace(/\\t/g, createSpan('\t').outerHTML);\n\n// eslint-disable-next-line max-params\nconst wrapTextWithSpan = (el, text, classList, dataset) => {\n if (isTextNode(el) && isMatch(el.textContent, text)) {\n const newEl = createSpan(text.trim(), classList);\n Object.assign(newEl.dataset, dataset);\n el.replaceWith(newEl);\n }\n};\n\nconst wrapNodes = (text, classList, dataset) => {\n const wrapper = createSpan();\n // eslint-disable-next-line no-unsanitized/property\n wrapper.innerHTML = wrapSpacesWithSpans(text);\n wrapper.childNodes.forEach((el) => wrapTextWithSpan(el, text, classList, dataset));\n return wrapper.childNodes;\n};\n\nexport { wrapNodes, isTextNode };\n","import { wrapNodes, isTextNode } from './dom_utils';\n\nexport const cachedData = new Map();\n\nconst wrappedLines = new WeakSet();\n\nexport const getCurrentHoverElement = () => cachedData.get('current');\nexport const setCurrentHoverElement = (el) => cachedData.set('current', el);\n\nconst deprecatedNodeUpdate = ({ d, line, wrapTextNodes }) => {\n let charCount = 0;\n\n if (wrapTextNodes) {\n line.childNodes.forEach((elm) => {\n // Highlight.js does not wrap all text nodes by default\n // We need all text nodes to be wrapped in order to append code nav attributes\n elm.replaceWith(...wrapNodes(elm.textContent, elm.classList, elm.dataset));\n });\n wrappedLines.add(line);\n }\n\n const el = [...line.childNodes].find(({ textContent }) => {\n if (charCount === d.start_char) return true;\n charCount += textContent.length;\n return false;\n });\n\n if (el && !isTextNode(el)) {\n el.dataset.charIndex = d.start_char;\n el.dataset.lineIndex = d.start_line;\n el.classList.add('cursor-pointer', 'code-navigation', 'js-code-navigation');\n el.closest('.line').classList.add('code-navigation-line');\n }\n};\n\nexport const addInteractionClass = ({ path, d, wrapTextNodes }) => {\n const lineNumber = d.start_line + 1;\n const lines = document\n .querySelector(`[data-path=\"${path}\"]`)\n .querySelectorAll(`.blob-content #LC${lineNumber}, .line_content:not(.old) #LC${lineNumber}`);\n if (!lines?.length) return;\n\n lines.forEach((line) => {\n if (d.end_line === undefined) {\n // For old cached data we should use the old way of parsing\n deprecatedNodeUpdate({ d, line, wrapTextNodes });\n } else {\n // For new data we can parse slightly differently\n const walker = document.createTreeWalker(line, NodeFilter.SHOW_TEXT);\n let startCharIndex = 0;\n let currentNode = walker.nextNode();\n while (currentNode) {\n if (\n d.start_char >= startCharIndex &&\n d.end_char <= startCharIndex + currentNode.textContent.length\n ) {\n break;\n }\n startCharIndex += currentNode.textContent.length;\n currentNode = walker.nextNode();\n }\n\n if (currentNode && d.start_char !== d.end_char) {\n const text = currentNode.textContent;\n const textLength = d.end_char - d.start_char;\n const startIndex = d.start_char - startCharIndex;\n const span = document.createElement('span');\n\n span.textContent = text.slice(startIndex, startIndex + textLength);\n span.dataset.charIndex = d.start_char;\n span.dataset.lineIndex = d.start_line;\n span.classList.add('gl-cursor-pointer', 'code-navigation', 'js-code-navigation');\n\n currentNode.replaceWith(\n text.slice(0, startIndex),\n span,\n text.slice(startIndex + textLength),\n );\n\n line.classList.add('code-navigation-line');\n }\n }\n });\n};\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getCodeOwnersInfo\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filePath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"repository\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"codeOwnersPath\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}}}],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"paths\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filePath\"}}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"codeOwners\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":363}};\n doc.loc.source = {\"body\":\"query getCodeOwnersInfo($projectPath: ID!, $filePath: String!, $ref: String!) {\\n project(fullPath: $projectPath) {\\n id\\n repository {\\n codeOwnersPath(ref: $ref)\\n blobs(paths: [$filePath], ref: $ref) {\\n nodes {\\n id\\n codeOwners {\\n id\\n name\\n webPath\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getCodeOwnersInfo\"] = oneQuery(doc, \"getCodeOwnersInfo\");\n \n","import axios from '~/lib/utils/axios_utils';\nimport { getCurrentHoverElement, setCurrentHoverElement, addInteractionClass } from '../utils';\nimport * as types from './mutation_types';\n\nexport default {\n setInitialData({ commit }, data) {\n commit(types.SET_INITIAL_DATA, data);\n },\n requestDataError({ commit }) {\n commit(types.REQUEST_DATA_ERROR);\n },\n fetchData({ commit, dispatch, state }) {\n commit(types.REQUEST_DATA);\n\n state.blobs.forEach(({ path, codeNavigationPath }) => {\n axios\n .get(codeNavigationPath)\n .then(({ data }) => {\n const normalizedData = data.reduce((acc, d) => {\n if (d.hover) {\n acc[`${d.start_line}:${d.start_char}`] = {\n ...d,\n definitionLineNumber: parseInt(d.definition_path?.split('#L').pop() || 0, 10),\n };\n }\n return acc;\n }, {});\n\n commit(types.REQUEST_DATA_SUCCESS, { path, normalizedData });\n })\n .catch(() => dispatch('requestDataError'));\n });\n },\n showBlobInteractionZones({ state }, path) {\n if (state.data && state.data[path]) {\n Object.values(state.data[path]).forEach((d) =>\n addInteractionClass({ path, d, wrapTextNodes: state.wrapTextNodes }),\n );\n }\n },\n showDefinition({ commit, state }, { target: el }) {\n let definition;\n let position;\n\n if (!state.data) return;\n\n const isCurrentElementPopoverOpen = el.classList.contains('hll');\n\n if (getCurrentHoverElement()) {\n getCurrentHoverElement().classList.remove('hll');\n }\n\n const blobEl = el.closest('[data-path]');\n\n if (!blobEl) {\n commit(types.SET_CURRENT_DEFINITION, { definition, position });\n\n return;\n }\n\n const blobPath = blobEl.dataset.path;\n const data = state.data[blobPath];\n\n if (!data) return;\n\n if (el.closest('.js-code-navigation') && !isCurrentElementPopoverOpen) {\n const { lineIndex, charIndex } = el.dataset;\n\n position = {\n x: el.offsetLeft || 0,\n y: el.offsetTop + (el.closest('pre.code')?.offsetTop || 0) || 0,\n height: el.offsetHeight,\n lineIndex: parseInt(lineIndex, 10),\n };\n definition = data[`${lineIndex}:${charIndex}`];\n\n el.classList.add('hll');\n\n setCurrentHoverElement(el);\n }\n\n commit(types.SET_CURRENT_DEFINITION, { definition, position, blobPath });\n },\n};\n","export const SET_INITIAL_DATA = 'SET_INITIAL_DATA';\nexport const REQUEST_DATA = 'REQUEST_DATA';\nexport const REQUEST_DATA_SUCCESS = 'REQUEST_DATA_SUCCESS';\nexport const REQUEST_DATA_ERROR = 'REQUEST_DATA_ERROR';\nexport const SET_CURRENT_DEFINITION = 'SET_CURRENT_DEFINITION';\n","import * as types from './mutation_types';\n\nexport default {\n [types.SET_INITIAL_DATA](state, { blobs, definitionPathPrefix, wrapTextNodes }) {\n state.blobs = blobs;\n state.definitionPathPrefix = definitionPathPrefix;\n state.wrapTextNodes = wrapTextNodes;\n },\n [types.REQUEST_DATA](state) {\n state.loading = true;\n },\n [types.REQUEST_DATA_SUCCESS](state, { path, normalizedData }) {\n state.loading = false;\n state.data = { ...state.data, [path]: normalizedData };\n },\n [types.REQUEST_DATA_ERROR](state) {\n state.loading = false;\n },\n [types.SET_CURRENT_DEFINITION](state, { definition, position, blobPath }) {\n state.currentDefinition = definition;\n state.currentDefinitionPosition = position;\n state.currentBlobPath = blobPath;\n },\n};\n","// eslint-disable-next-line no-restricted-imports\nimport Vuex from 'vuex';\nimport actions from './actions';\nimport mutations from './mutations';\nimport createState from './state';\n\nexport default () =>\n new Vuex.Store({\n actions,\n mutations,\n state: createState(),\n });\n","export default () => ({\n blobs: [],\n loading: false,\n data: null,\n wrapTextNodes: false,\n currentDefinition: null,\n currentDefinitionPosition: null,\n currentBlobPath: null,\n});\n","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","import { sprintf, s__ } from '~/locale';\n\n/**\n * Combines each given item into a noun series sentence fragment. It does this\n * in a way that supports i18n by giving context and punctuation to the locale\n * functions.\n *\n * **Examples:**\n *\n * - `[\"A\", \"B\"] => \"A and B\"`\n * - `[\"A\", \"B\", \"C\"] => \"A, B, and C\"`\n *\n * **Why only nouns?**\n *\n * Some languages need a bit more context to translate other series.\n *\n * @param {String[]} items\n */\nexport const toNounSeriesText = (items, { onlyCommas = false } = {}) => {\n if (items.length === 0) {\n return '';\n }\n if (items.length === 1) {\n return sprintf(s__(`nounSeries|%{item}`), { item: items[0] }, false);\n }\n if (items.length === 2 && !onlyCommas) {\n return sprintf(\n s__('nounSeries|%{firstItem} and %{lastItem}'),\n {\n firstItem: items[0],\n lastItem: items[1],\n },\n false,\n );\n }\n\n return items.reduce((item, nextItem, idx) =>\n idx === items.length - 1 && !onlyCommas\n ? sprintf(s__('nounSeries|%{item}, and %{lastItem}'), { item, lastItem: nextItem }, false)\n : sprintf(s__('nounSeries|%{item}, %{nextItem}'), { item, nextItem }, false),\n );\n};\n\nexport default {\n toNounSeriesText,\n};\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"syncFork\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranch\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"projectSyncFork\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranch\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranch\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"details\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ahead\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"behind\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isSyncing\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasConflicts\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":247}};\n doc.loc.source = {\"body\":\"mutation syncFork($projectPath: ID!, $targetBranch: String!) {\\n projectSyncFork(input: { projectPath: $projectPath, targetBranch: $targetBranch }) {\\n details {\\n ahead\\n behind\\n isSyncing\\n hasConflicts\\n }\\n errors\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"syncFork\"] = oneQuery(doc, \"syncFork\");\n \n","import { BCollapse } from '../../../vendor/bootstrap-vue/src/components/collapse/collapse';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n name: 'GlCollapse',\n components: {\n BCollapse\n },\n model: {\n prop: 'visible',\n event: 'input'\n },\n props: {\n visible: {\n type: Boolean,\n default: false,\n required: false\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-collapse',_vm._g(_vm._b({attrs:{\"visible\":_vm.visible}},'b-collapse',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","export default function Worker_fn() {\n return new Worker(__webpack_public_path__ + \"highlight_worker.93222705.worker.js\");\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"info-well gl-flex-col sm:gl-flex\"},[_c('div',{staticClass:\"well-segment gl-flex gl-w-full gl-p-5\"},[_c('gl-icon',{staticClass:\"gl-m-4 gl-block gl-text-center\",attrs:{\"name\":\"fork\",\"size\":16}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-grow gl-items-center gl-justify-between\"},[(_vm.sourceName)?_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.forkedFrom)+\"\\n \"),_c('gl-link',{attrs:{\"data-testid\":\"forked-from-link\",\"href\":_vm.sourcePath}},[_vm._v(_vm._s(_vm.sourceName))]),_vm._v(\" \"),(_vm.isLoading)?_c('gl-skeleton-loader',{attrs:{\"lines\":1}}):_c('div',{staticClass:\"gl-text-subtle\",attrs:{\"data-testid\":\"divergence-message\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.forkDivergenceMessage},scopedSlots:_vm._u([{key:\"aheadLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.aheadComparePath}},[_vm._v(_vm._s(content))])]}},{key:\"behindLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.behindComparePath}},[_vm._v(_vm._s(content))])]}}],null,false,921789833)})],1)],1):_c('div',{staticClass:\"gl-flex gl-items-center\",attrs:{\"data-testid\":\"inaccessible-project\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.inaccessibleProject)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"gl-hidden sm:gl-flex\"},[(_vm.hasCreateMrButton)?_c('gl-button',{staticClass:\"gl-ml-4\",attrs:{\"href\":_vm.createMrPath,\"data-testid\":\"create-mr-button\"}},[_c('span',[_vm._v(_vm._s(_vm.$options.i18n.createMergeRequest))])]):_vm._e(),_vm._v(\" \"),(_vm.hasViewMrButton)?_c('gl-button',{staticClass:\"gl-ml-4\",attrs:{\"href\":_vm.viewMrPath,\"data-testid\":\"view-mr-button\"}},[_c('span',[_vm._v(_vm._s(_vm.$options.i18n.viewMergeRequest))])]):_vm._e(),_vm._v(\" \"),(_vm.hasUpdateButton)?_c('gl-button',{staticClass:\"gl-ml-4\",attrs:{\"disabled\":_vm.forkDetails.isSyncing,\"data-testid\":\"update-fork-button\"},on:{\"click\":_vm.checkIfSyncIsPossible}},[(_vm.forkDetails.isSyncing)?_c('gl-loading-icon',{staticClass:\"gl-inline\",attrs:{\"size\":\"sm\"}}):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$options.i18n.updateFork))])],1):_vm._e()],1),_vm._v(\" \"),_c('conflicts-modal',{ref:\"modal\",attrs:{\"selected-branch\":_vm.selectedBranch,\"source-name\":_vm.sourceName,\"source-path\":_vm.sourcePath,\"source-default-branch\":_vm.sourceDefaultBranch}})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\n/* eslint-disable @gitlab/require-i18n-strings */\nimport { GlModal, GlButton } from '@gitlab/ui';\nimport { __, s__ } from '~/locale';\nimport ModalCopyButton from '~/vue_shared/components/modal_copy_button.vue';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { getBaseURL } from '~/lib/utils/url_utility';\n\nexport const i18n = {\n modalTitle: s__('ForksDivergence|Resolve merge conflicts manually'),\n modalMessage: s__(\n 'ForksDivergence|The upstream changes could not be synchronized to this project due to file conflicts in the default branch. You must resolve the conflicts manually:',\n ),\n step1: __('Step 1.'),\n step2: __('Step 2.'),\n step3: __('Step 3.'),\n step4: __('Step 4.'),\n step1Text: s__(\n \"ForksDivergence|Fetch the latest changes from the upstream repository's default branch:\",\n ),\n step2Text: s__(\n \"ForksDivergence|Check out to a branch, and merge the changes from the upstream project's default branch. You likely need to resolve conflicts during this step.\",\n ),\n step3Text: s__('ForksDivergence|Push the updates to remote:'),\n copyToClipboard: __('Copy to clipboard'),\n close: __('Close'),\n};\n\nexport default {\n name: 'ForkSyncConflictsModal',\n components: {\n GlModal,\n GlButton,\n ModalCopyButton,\n },\n directives: {\n SafeHtml,\n },\n props: {\n sourceDefaultBranch: {\n type: String,\n required: false,\n default: '',\n },\n sourceName: {\n type: String,\n required: false,\n default: '',\n },\n sourcePath: {\n type: String,\n required: false,\n default: '',\n },\n selectedBranch: {\n type: String,\n required: true,\n default: '',\n },\n },\n computed: {\n instructionsStep1() {\n const baseUrl = getBaseURL();\n return `git fetch ${baseUrl}${this.sourcePath} ${this.sourceDefaultBranch}`;\n },\n instructionsStep2() {\n return `git checkout ${this.selectedBranch}\\ngit merge FETCH_HEAD`;\n },\n },\n methods: {\n show() {\n this.$refs.modal.show();\n },\n hide() {\n this.$refs.modal.hide();\n },\n },\n i18n,\n instructionsStep3: 'git push',\n};\n</script>\n<template>\n <gl-modal\n ref=\"modal\"\n modal-id=\"fork-sync-conflicts-modal\"\n :title=\"$options.i18n.modalTitle\"\n size=\"md\"\n >\n <p>{{ $options.i18n.modalMessage }}</p>\n <p>\n <b> {{ $options.i18n.step1 }}</b> {{ $options.i18n.modalMessage }}\n </p>\n <div class=\"gl-mb-4 gl-flex\">\n <pre class=\"gl-mb-0 gl-mr-3 gl-w-full\" data-testid=\"resolve-conflict-instructions\">{{\n instructionsStep1\n }}</pre>\n <modal-copy-button\n modal-id=\"fork-sync-conflicts-modal\"\n :text=\"instructionsStep1\"\n :title=\"$options.i18n.copyToClipboard\"\n class=\"gl-shrink-0 !gl-bg-transparent !gl-shadow-none\"\n />\n </div>\n <p>\n <b> {{ $options.i18n.step2 }}</b> {{ $options.i18n.step2Text }}\n </p>\n <div class=\"gl-mb-4 gl-flex\">\n <pre class=\"gl-mb-0 gl-mr-3 gl-w-full\" data-testid=\"resolve-conflict-instructions\">{{\n instructionsStep2\n }}</pre>\n <modal-copy-button\n modal-id=\"fork-sync-conflicts-modal\"\n :text=\"instructionsStep2\"\n :title=\"$options.i18n.copyToClipboard\"\n class=\"gl-shrink-0 !gl-bg-transparent !gl-shadow-none\"\n />\n </div>\n <p>\n <b> {{ $options.i18n.step3 }}</b> {{ $options.i18n.step3Text }}\n </p>\n <div class=\"gl-mb-4 gl-flex\">\n <pre class=\"gl-mb-0 gl-w-full\" data-testid=\"resolve-conflict-instructions\"\n >{{ $options.instructionsStep3 }}\n</pre\n >\n <modal-copy-button\n modal-id=\"fork-sync-conflicts-modal\"\n :text=\"$options.instructionsStep3\"\n :title=\"$options.i18n.copyToClipboard\"\n class=\"gl-ml-3 gl-shrink-0 !gl-bg-transparent !gl-shadow-none\"\n />\n </div>\n <template #modal-footer>\n <gl-button @click=\"hide\" @keydown.esc=\"hide\">{{ $options.i18n.close }}</gl-button>\n </template>\n </gl-modal>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./fork_sync_conflicts_modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./fork_sync_conflicts_modal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./fork_sync_conflicts_modal.vue?vue&type=template&id=530a33c8\"\nimport script from \"./fork_sync_conflicts_modal.vue?vue&type=script&lang=js\"\nexport * from \"./fork_sync_conflicts_modal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',{ref:\"modal\",attrs:{\"modal-id\":\"fork-sync-conflicts-modal\",\"title\":_vm.$options.i18n.modalTitle,\"size\":\"md\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('gl-button',{on:{\"click\":_vm.hide,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.hide.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.$options.i18n.close))])]},proxy:true}])},[_c('p',[_vm._v(_vm._s(_vm.$options.i18n.modalMessage))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(\" \"+_vm._s(_vm.$options.i18n.step1))]),_vm._v(\" \"+_vm._s(_vm.$options.i18n.modalMessage)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"gl-mb-4 gl-flex\"},[_c('pre',{staticClass:\"gl-mb-0 gl-mr-3 gl-w-full\",attrs:{\"data-testid\":\"resolve-conflict-instructions\"}},[_vm._v(_vm._s(_vm.instructionsStep1))]),_vm._v(\" \"),_c('modal-copy-button',{staticClass:\"gl-shrink-0 !gl-bg-transparent !gl-shadow-none\",attrs:{\"modal-id\":\"fork-sync-conflicts-modal\",\"text\":_vm.instructionsStep1,\"title\":_vm.$options.i18n.copyToClipboard}})],1),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(\" \"+_vm._s(_vm.$options.i18n.step2))]),_vm._v(\" \"+_vm._s(_vm.$options.i18n.step2Text)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"gl-mb-4 gl-flex\"},[_c('pre',{staticClass:\"gl-mb-0 gl-mr-3 gl-w-full\",attrs:{\"data-testid\":\"resolve-conflict-instructions\"}},[_vm._v(_vm._s(_vm.instructionsStep2))]),_vm._v(\" \"),_c('modal-copy-button',{staticClass:\"gl-shrink-0 !gl-bg-transparent !gl-shadow-none\",attrs:{\"modal-id\":\"fork-sync-conflicts-modal\",\"text\":_vm.instructionsStep2,\"title\":_vm.$options.i18n.copyToClipboard}})],1),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(\" \"+_vm._s(_vm.$options.i18n.step3))]),_vm._v(\" \"+_vm._s(_vm.$options.i18n.step3Text)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"gl-mb-4 gl-flex\"},[_c('pre',{staticClass:\"gl-mb-0 gl-w-full\",attrs:{\"data-testid\":\"resolve-conflict-instructions\"}},[_vm._v(_vm._s(_vm.$options.instructionsStep3)+\"\\n\")]),_vm._v(\" \"),_c('modal-copy-button',{staticClass:\"gl-ml-3 gl-shrink-0 !gl-bg-transparent !gl-shadow-none\",attrs:{\"modal-id\":\"fork-sync-conflicts-modal\",\"text\":_vm.$options.instructionsStep3,\"title\":_vm.$options.i18n.copyToClipboard}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlIcon, GlLink, GlSkeletonLoader, GlLoadingIcon, GlSprintf, GlButton } from '@gitlab/ui';\nimport { s__, sprintf, n__ } from '~/locale';\nimport { createAlert, VARIANT_INFO } from '~/alert';\nimport syncForkMutation from '~/repository/mutations/sync_fork.mutation.graphql';\nimport eventHub from '../event_hub';\nimport {\n POLLING_INTERVAL_DEFAULT,\n POLLING_INTERVAL_BACKOFF,\n FIVE_MINUTES_IN_MS,\n FORK_UPDATED_EVENT,\n} from '../constants';\nimport forkDetailsQuery from '../queries/fork_details.query.graphql';\nimport ConflictsModal from './fork_sync_conflicts_modal.vue';\n\nexport const i18n = {\n forkedFrom: s__('ForkedFromProjectPath|Forked from'),\n inaccessibleProject: s__('ForkedFromProjectPath|Forked from an inaccessible project.'),\n upToDate: s__('ForksDivergence|Up to date with the upstream repository.'),\n unknown: s__('ForksDivergence|This fork has diverged from the upstream repository.'),\n behind: s__('ForksDivergence|%{behindLinkStart}%{behind} %{commit_word} behind%{behindLinkEnd}'),\n ahead: s__('ForksDivergence|%{aheadLinkStart}%{ahead} %{commit_word} ahead%{aheadLinkEnd} of'),\n behindAhead: s__('ForksDivergence|%{messages} the upstream repository.'),\n limitedVisibility: s__('ForksDivergence|Source project has a limited visibility.'),\n error: s__('ForksDivergence|Failed to fetch fork details. Try again later.'),\n updateFork: s__('ForksDivergence|Update fork'),\n createMergeRequest: s__('ForksDivergence|Create merge request'),\n viewMergeRequest: s__('ForksDivergence|View merge request'),\n successMessage: s__(\n 'ForksDivergence|Successfully fetched and merged from the upstream repository.',\n ),\n};\n\nexport default {\n i18n,\n components: {\n GlIcon,\n GlLink,\n GlButton,\n GlSprintf,\n GlSkeletonLoader,\n ConflictsModal,\n GlLoadingIcon,\n },\n apollo: {\n project: {\n query: forkDetailsQuery,\n notifyOnNetworkStatusChange: true,\n variables() {\n return this.forkDetailsQueryVariables;\n },\n skip() {\n return !this.sourceName;\n },\n error(error) {\n createAlert({\n message: this.$options.i18n.error,\n captureError: true,\n error,\n });\n },\n result({ loading }) {\n if (!loading && this.isSyncing) {\n this.increasePollInterval();\n }\n if (this.isForkUpdated) {\n createAlert({\n message: this.$options.i18n.successMessage,\n variant: VARIANT_INFO,\n });\n eventHub.$emit(FORK_UPDATED_EVENT);\n }\n },\n pollInterval() {\n return this.pollInterval;\n },\n },\n },\n props: {\n projectPath: {\n type: String,\n required: true,\n },\n selectedBranch: {\n type: String,\n required: true,\n },\n sourceDefaultBranch: {\n type: String,\n required: false,\n default: '',\n },\n sourceName: {\n type: String,\n required: false,\n default: '',\n },\n sourcePath: {\n type: String,\n required: false,\n default: '',\n },\n canSyncBranch: {\n type: Boolean,\n required: false,\n default: false,\n },\n aheadComparePath: {\n type: String,\n required: false,\n default: '',\n },\n behindComparePath: {\n type: String,\n required: false,\n default: '',\n },\n createMrPath: {\n type: String,\n required: false,\n default: '',\n },\n viewMrPath: {\n type: String,\n required: false,\n default: '',\n },\n },\n data() {\n return {\n project: {},\n currentPollInterval: null,\n };\n },\n computed: {\n forkDetailsQueryVariables() {\n return {\n projectPath: this.projectPath,\n ref: this.selectedBranch,\n };\n },\n pollInterval() {\n return this.isSyncing ? this.currentPollInterval : 0;\n },\n isLoading() {\n return this.$apollo.queries.project.loading;\n },\n forkDetails() {\n return this.project?.forkDetails;\n },\n hasConflicts() {\n return this.forkDetails?.hasConflicts;\n },\n isSyncing() {\n return this.forkDetails?.isSyncing;\n },\n isForkUpdated() {\n return this.isUpToDate && this.currentPollInterval;\n },\n ahead() {\n return this.project?.forkDetails?.ahead;\n },\n behind() {\n return this.project?.forkDetails?.behind;\n },\n behindText() {\n return sprintf(this.$options.i18n.behind, {\n behind: this.behind,\n commit_word: n__('commit', 'commits', this.behind),\n });\n },\n aheadText() {\n return sprintf(this.$options.i18n.ahead, {\n ahead: this.ahead,\n commit_word: n__('commit', 'commits', this.ahead),\n });\n },\n isUnknownDivergence() {\n return this.sourceName && this.ahead === null && this.behind === null;\n },\n isUpToDate() {\n return this.ahead === 0 && this.behind === 0;\n },\n behindAheadMessage() {\n const messages = [];\n if (this.behind > 0) {\n messages.push(this.behindText);\n }\n if (this.ahead > 0) {\n messages.push(this.aheadText);\n }\n return messages.join(', ');\n },\n hasBehindAheadMessage() {\n return this.behindAheadMessage.length > 0;\n },\n hasUpdateButton() {\n return (\n this.canSyncBranch &&\n ((this.sourceName && this.forkDetails && this.behind) || this.isUnknownDivergence)\n );\n },\n hasCreateMrButton() {\n return this.ahead && this.createMrPath;\n },\n hasViewMrButton() {\n return this.viewMrPath;\n },\n forkDivergenceMessage() {\n if (!this.forkDetails) {\n return this.$options.i18n.limitedVisibility;\n }\n if (this.isUnknownDivergence) {\n return this.$options.i18n.unknown;\n }\n if (this.hasBehindAheadMessage) {\n return sprintf(\n this.$options.i18n.behindAhead,\n {\n messages: this.behindAheadMessage,\n },\n false,\n );\n }\n return this.$options.i18n.upToDate;\n },\n },\n watch: {\n hasConflicts(newVal) {\n if (newVal && this.currentPollInterval) {\n this.showConflictsModal();\n }\n },\n },\n methods: {\n async syncForkWithPolling() {\n await this.$apollo.mutate({\n mutation: syncForkMutation,\n variables: {\n projectPath: this.projectPath,\n targetBranch: this.selectedBranch,\n },\n error(error) {\n createAlert({\n message: error.message,\n captureError: true,\n error,\n });\n },\n update: (store, { data: { projectSyncFork } }) => {\n const { details } = projectSyncFork;\n\n store.writeQuery({\n query: forkDetailsQuery,\n variables: this.forkDetailsQueryVariables,\n data: {\n project: {\n id: this.project.id,\n forkDetails: details,\n },\n },\n });\n },\n });\n },\n showConflictsModal() {\n this.$refs.modal.show();\n },\n startSyncing() {\n this.syncForkWithPolling();\n },\n checkIfSyncIsPossible() {\n if (this.hasConflicts) {\n this.showConflictsModal();\n } else {\n this.startSyncing();\n }\n },\n increasePollInterval() {\n const backoff = POLLING_INTERVAL_BACKOFF;\n const interval = this.currentPollInterval;\n const newInterval = Math.min(interval * backoff, FIVE_MINUTES_IN_MS);\n this.currentPollInterval = this.currentPollInterval ? newInterval : POLLING_INTERVAL_DEFAULT;\n },\n },\n};\n</script>\n\n<template>\n <div class=\"info-well gl-flex-col sm:gl-flex\">\n <div class=\"well-segment gl-flex gl-w-full gl-p-5\">\n <gl-icon name=\"fork\" :size=\"16\" class=\"gl-m-4 gl-block gl-text-center\" />\n <div class=\"gl-flex gl-grow gl-items-center gl-justify-between\">\n <div v-if=\"sourceName\">\n {{ $options.i18n.forkedFrom }}\n <gl-link data-testid=\"forked-from-link\" :href=\"sourcePath\">{{ sourceName }}</gl-link>\n <gl-skeleton-loader v-if=\"isLoading\" :lines=\"1\" />\n <div v-else class=\"gl-text-subtle\" data-testid=\"divergence-message\">\n <gl-sprintf :message=\"forkDivergenceMessage\">\n <template #aheadLink=\"{ content }\">\n <gl-link :href=\"aheadComparePath\">{{ content }}</gl-link>\n </template>\n <template #behindLink=\"{ content }\">\n <gl-link :href=\"behindComparePath\">{{ content }}</gl-link>\n </template>\n </gl-sprintf>\n </div>\n </div>\n <div v-else data-testid=\"inaccessible-project\" class=\"gl-flex gl-items-center\">\n {{ $options.i18n.inaccessibleProject }}\n </div>\n <div class=\"gl-hidden sm:gl-flex\">\n <gl-button\n v-if=\"hasCreateMrButton\"\n class=\"gl-ml-4\"\n :href=\"createMrPath\"\n data-testid=\"create-mr-button\"\n >\n <span>{{ $options.i18n.createMergeRequest }}</span>\n </gl-button>\n <gl-button\n v-if=\"hasViewMrButton\"\n class=\"gl-ml-4\"\n :href=\"viewMrPath\"\n data-testid=\"view-mr-button\"\n >\n <span>{{ $options.i18n.viewMergeRequest }}</span>\n </gl-button>\n <gl-button\n v-if=\"hasUpdateButton\"\n class=\"gl-ml-4\"\n :disabled=\"forkDetails.isSyncing\"\n data-testid=\"update-fork-button\"\n @click=\"checkIfSyncIsPossible\"\n >\n <gl-loading-icon v-if=\"forkDetails.isSyncing\" class=\"gl-inline\" size=\"sm\" />\n <span>{{ $options.i18n.updateFork }}</span>\n </gl-button>\n </div>\n <conflicts-modal\n ref=\"modal\"\n :selected-branch=\"selectedBranch\"\n :source-name=\"sourceName\"\n :source-path=\"sourcePath\"\n :source-default-branch=\"sourceDefaultBranch\"\n />\n </div>\n </div>\n </div>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./fork_info.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./fork_info.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./fork_info.vue?vue&type=template&id=31dc0202\"\nimport script from \"./fork_info.vue?vue&type=script&lang=js\"\nexport * from \"./fork_info.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.componentType,{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],tag:\"component\",staticClass:\"ci-icon gl-inline-flex gl-items-center gl-text-sm\",class:`ci-icon-variant-${_vm.variant}`,attrs:{\"variant\":_vm.variant,\"title\":_vm.title,\"aria-label\":_vm.ariaLabel,\"href\":_vm.href,\"data-testid\":\"ci-icon\"},on:{\"click\":function($event){return _vm.$emit('ciStatusBadgeClick')}}},[_c('span',{staticClass:\"ci-icon-gl-icon-wrapper\"},[_c('gl-icon',{attrs:{\"name\":_vm.icon}})],1),(_vm.showStatusText)?_c('span',{staticClass:\"gl-ml-2 gl-mr-3 gl-self-center gl-whitespace-nowrap gl-leading-1\",attrs:{\"data-testid\":\"ci-icon-text\"}},[_vm._v(_vm._s(_vm.status.text))]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ci_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ci_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlIcon } from '@gitlab/ui';\nimport { sprintf, __ } from '~/locale';\n\n/**\n * Renders CI icon based on API response shared between all places where it is used.\n *\n * Receives status object containing:\n * status: {\n * icon: \"status_running\" // used to render the icon and CSS class\n * text: \"Running\",\n * detailsPath: '/project1/jobs/1' // can also be details_path\n * }\n *\n * You may use ~/graphql_shared/fragments/ci_icon.fragment.graphql to fetch this\n * from the GraphQL API.\n *\n */\n\nexport default {\n components: {\n GlIcon,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n status: {\n type: Object,\n required: true,\n validator(status) {\n const { icon } = status;\n return typeof icon === 'string' && icon.startsWith('status');\n },\n },\n showStatusText: {\n type: Boolean,\n required: false,\n default: false,\n },\n showTooltip: {\n type: Boolean,\n required: false,\n default: true,\n },\n useLink: {\n type: Boolean,\n default: true,\n required: false,\n },\n },\n computed: {\n componentType() {\n return this.href ? 'a' : 'span';\n },\n title() {\n if (this.showTooltip) {\n // show tooltip only when not showing text already\n return !this.showStatusText ? this.status?.text : null;\n }\n return null;\n },\n ariaLabel() {\n return sprintf(__('Status: %{status}'), { status: this.status?.text });\n },\n href() {\n // href can come from GraphQL (camelCase) or REST API (snake_case)\n if (this.useLink) {\n return this.status.detailsPath || this.status.details_path;\n }\n return null;\n },\n icon() {\n if (this.status.icon) {\n return `${this.status.icon}_borderless`;\n }\n return null;\n },\n variant() {\n switch (this.status.icon) {\n case 'status_success':\n return 'success';\n case 'status_warning':\n case 'status_pending':\n return 'warning';\n case 'status_failed':\n return 'danger';\n case 'status_running':\n return 'info';\n // default covers the styles for the remainder of CI\n // statuses that are not explicitly stated here\n default:\n return 'neutral';\n }\n },\n },\n};\n</script>\n<template>\n <component\n :is=\"componentType\"\n v-gl-tooltip.viewport.left\n class=\"ci-icon gl-inline-flex gl-items-center gl-text-sm\"\n :class=\"`ci-icon-variant-${variant}`\"\n :variant=\"variant\"\n :title=\"title\"\n :aria-label=\"ariaLabel\"\n :href=\"href\"\n data-testid=\"ci-icon\"\n @click=\"$emit('ciStatusBadgeClick')\"\n >\n <span class=\"ci-icon-gl-icon-wrapper\"><gl-icon :name=\"icon\" /></span\n ><span\n v-if=\"showStatusText\"\n class=\"gl-ml-2 gl-mr-3 gl-self-center gl-whitespace-nowrap gl-leading-1\"\n data-testid=\"ci-icon-text\"\n >{{ status.text }}</span\n >\n </component>\n</template>\n","import { render, staticRenderFns } from \"./ci_icon.vue?vue&type=template&id=884042fa\"\nimport script from \"./ci_icon.vue?vue&type=script&lang=js\"\nexport * from \"./ci_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { extend, mergeData } from '../../../vue';\nimport { NAME_COLLAPSE_HELPER } from '../../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { setStyle, requestAF, reflow, removeStyle, getBCR } from '../../../utils/dom';\nimport { makeProp } from '../../../utils/props';\n\n// Generic collapse transion helper component\n\n// --- Helper methods ---\n\n// Transition event handler helpers\nconst onEnter = el => {\n setStyle(el, 'height', 0);\n // In a `requestAF()` for `appear` to work\n requestAF(() => {\n reflow(el);\n setStyle(el, 'height', `${el.scrollHeight}px`);\n });\n};\nconst onAfterEnter = el => {\n removeStyle(el, 'height');\n};\nconst onLeave = el => {\n setStyle(el, 'height', 'auto');\n setStyle(el, 'display', 'block');\n setStyle(el, 'height', `${getBCR(el).height}px`);\n reflow(el);\n setStyle(el, 'height', 0);\n};\nconst onAfterLeave = el => {\n removeStyle(el, 'height');\n};\n\n// --- Constants ---\n\n// Default transition props\n// `appear` will use the enter classes\nconst TRANSITION_PROPS = {\n css: true,\n enterClass: '',\n enterActiveClass: 'collapsing',\n enterToClass: 'collapse show',\n leaveClass: 'collapse show',\n leaveActiveClass: 'collapsing',\n leaveToClass: 'collapse'\n};\n\n// Default transition handlers\n// `appear` will use the enter handlers\nconst TRANSITION_HANDLERS = {\n enter: onEnter,\n afterEnter: onAfterEnter,\n leave: onLeave,\n afterLeave: onAfterLeave\n};\n\n// --- Main component ---\n\nconst props = {\n // // If `true` (and `visible` is `true` on mount), animate initially visible\n appear: makeProp(PROP_TYPE_BOOLEAN, false)\n};\n\n// --- Main component ---\n\n// @vue/component\nconst BVCollapse = /*#__PURE__*/extend({\n name: NAME_COLLAPSE_HELPER,\n functional: true,\n props,\n render(h, _ref) {\n let {\n props,\n data,\n children\n } = _ref;\n return h('transition',\n // We merge in the `appear` prop last\n mergeData(data, {\n props: TRANSITION_PROPS,\n on: TRANSITION_HANDLERS\n }, {\n props\n }),\n // Note: `<transition>` supports a single root element only\n children);\n }\n});\n\nexport { BVCollapse, props };\n","import { extend } from '../../vue';\nimport { NAME_COLLAPSE } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_HIDE, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVCollapse } from './helpers/bv-collapse';\n\n// --- Constants ---\nconst ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nconst ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nconst ROOT_EVENT_NAME_ACCORDION = getRootEventName(NAME_COLLAPSE, 'accordion');\nconst ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nconst ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\nconst {\n mixin: modelMixin,\n props: modelProps,\n prop: MODEL_PROP_NAME,\n event: MODEL_EVENT_NAME\n} = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false\n});\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n ...props$1,\n ...modelProps,\n // If `true` (and `visible` is `true` on mount), animate initially visible\n accordion: makeProp(PROP_TYPE_STRING),\n appear: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}), NAME_COLLAPSE);\n\n// --- Main component ---\n\n// @vue/component\nconst BCollapse = /*#__PURE__*/extend({\n name: NAME_COLLAPSE,\n mixins: [idMixin, modelMixin, normalizeSlotMixin, listenOnRootMixin],\n props,\n data() {\n return {\n show: this[MODEL_PROP_NAME],\n transitioning: false\n };\n },\n computed: {\n classObject() {\n const {\n transitioning\n } = this;\n return {\n collapse: !transitioning,\n show: this.show && !transitioning\n };\n },\n slotScope() {\n return {\n visible: this.show,\n close: () => {\n this.show = false;\n }\n };\n }\n },\n watch: {\n [MODEL_PROP_NAME](newValue) {\n if (newValue !== this.show) {\n this.show = newValue;\n }\n },\n show(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState();\n }\n }\n },\n created() {\n this.show = this[MODEL_PROP_NAME];\n },\n mounted() {\n this.show = this[MODEL_PROP_NAME];\n // Listen for toggle events to open/close us\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggleEvent);\n // Listen to other collapses for accordion events\n this.listenOnRoot(ROOT_EVENT_NAME_ACCORDION, this.handleAccordionEvent);\n this.$nextTick(() => {\n this.emitState();\n });\n // Listen for \"Sync state\" requests from `v-b-toggle`\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, id => {\n if (id === this.safeId()) {\n this.$nextTick(this.emitSync);\n }\n });\n },\n updated() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitSync();\n },\n beforeDestroy() {\n // Trigger state emit if needed\n this.show = false;\n },\n methods: {\n toggle() {\n this.show = !this.show;\n },\n onEnter() {\n this.transitioning = true;\n // This should be moved out so we can add cancellable events\n this.$emit(EVENT_NAME_SHOW);\n },\n onAfterEnter() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_SHOWN);\n },\n onLeave() {\n this.transitioning = true;\n // This should be moved out so we can add cancellable events\n this.$emit(EVENT_NAME_HIDE);\n },\n onAfterLeave() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n emitState() {\n const {\n show,\n accordion\n } = this;\n const id = this.safeId();\n this.$emit(MODEL_EVENT_NAME, show);\n\n // Let `v-b-toggle` know the state of this collapse\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, id, show);\n if (accordion && show) {\n // Tell the other collapses in this accordion to close\n this.emitOnRoot(ROOT_EVENT_NAME_ACCORDION, id, accordion);\n }\n },\n emitSync() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), this.show);\n },\n handleToggleEvent(id) {\n if (id === this.safeId()) {\n this.toggle();\n }\n },\n handleAccordionEvent(openedId, openAccordion) {\n const {\n accordion,\n show\n } = this;\n if (!accordion || accordion !== openAccordion) {\n return;\n }\n const isThis = openedId === this.safeId();\n // Open this collapse if not shown or\n // close this collapse if shown\n if (isThis && !show || !isThis && show) {\n this.toggle();\n }\n }\n },\n render(h) {\n const {\n appear\n } = this;\n const $content = h(this.tag, {\n class: this.classObject,\n directives: [{\n name: 'show',\n value: this.show\n }],\n attrs: {\n id: this.safeId()\n }\n }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope));\n return h(BVCollapse, {\n props: {\n appear\n },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [$content]);\n }\n});\n\nexport { BCollapse, props };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.filePath)?_c('div',{staticClass:\"well-segment blob-auxiliary-viewer file-owner-content gl-flex gl-items-baseline gl-justify-between\"},[_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-pr-3\"},[_c('div',[_c('gl-icon',{attrs:{\"name\":\"users\"}}),_vm._v(\" \"),_c(_vm.hasCodeOwners ? 'gl-link' : 'span',{tag:\"component\",staticClass:\"gl-font-bold !gl-text-default\",attrs:{\"href\":_vm.codeOwnersPath,\"data-testid\":\"codeowners-file-link\"}},[_vm._v(_vm._s(_vm.$options.i18n.title)+\"\\n \")])],1),_vm._v(\" \"),(!_vm.hasCodeOwners && !_vm.isLoading)?_c('div',{staticClass:\"gl-ml-3\"},[_c('span',{attrs:{\"data-testid\":\"no-codeowners-text\"}},[_vm._v(_vm._s(_vm.$options.i18n.noCodeOwnersText))]),_vm._v(\" \"),_c('gl-link',{attrs:{\"data-testid\":\"codeowners-docs-link\",\"target\":\"_blank\",\"href\":_vm.$options.codeOwnersHelpPath}},[_vm._v(_vm._s(_vm.$options.i18n.learnMore))])],1):_vm._e(),_vm._v(\" \"),(_vm.hasCodeOwners && !_vm.isLoading)?[_c('gl-badge',{staticClass:\"gl-mx-3 gl-self-center\"},[_vm._v(_vm._s(_vm.codeOwnersTotal))]),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-mr-3\",attrs:{\"variant\":\"link\",\"size\":\"small\",\"data-testid\":\"collapse-toggle\",\"icon\":_vm.collapseIcon},on:{\"click\":_vm.toggleCodeOwners}},[_vm._v(\"\\n \"+_vm._s(_vm.toggleText)+\"\\n \")]),_vm._v(\" \"),_c('gl-collapse',{attrs:{\"visible\":_vm.isCodeOwnersExpanded,\"data-testid\":\"code-owners-list\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.codeOwnersSprintfMessage},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.getCodeOwner(content).webPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.getCodeOwner(content).name))])]}}],null,false,1800976543)})],1)]:_vm._e()],2),_vm._v(\" \"),(_vm.hasCodeOwners)?_c('help-icon',{staticClass:\"gl-my-3 gl-ml-auto gl-mr-3 gl-shrink-0\",attrs:{\"id\":_vm.$options.helpPopoverId,\"aria-label\":_vm.$options.i18n.helpText,\"data-testid\":\"help-popover-trigger\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasCodeOwners)?_c('gl-popover',{attrs:{\"target\":_vm.$options.helpPopoverId,\"placement\":\"top\",\"triggers\":\"hover focus\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.helpText)+\"\\n \"),_c('gl-link',{attrs:{\"href\":_vm.$options.codeOwnersHelpPath}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.learnMore)+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.canViewBranchRules)?_c('gl-button',{staticClass:\"gl-ml-2\",attrs:{\"size\":\"small\",\"href\":_vm.branchRulesPath,\"data-testid\":\"branch-rules-link\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.manageBranchRules)+\"\\n \")]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { uniqueId } from 'lodash';\nimport { GlIcon, GlLink, GlButton, GlCollapse, GlBadge, GlPopover, GlSprintf } from '@gitlab/ui';\nimport { __, s__ } from '~/locale';\nimport { createAlert } from '~/alert';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { toNounSeriesText } from '~/lib/utils/grammar';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport codeOwnersInfoQuery from '../../../graphql_shared/queries/code_owners_info.query.graphql';\n\nexport const i18n = {\n title: s__('CodeOwners|Code owners'),\n and: __('and'),\n errorMessage: s__('CodeOwners|An error occurred while loading code owners.'),\n manageBranchRules: __('Manage branch rules'),\n noCodeOwnersText: s__(\n 'CodeOwners|Assign users and groups as approvers for specific file changes.',\n ),\n helpText: s__(\n 'CodeOwners|Code owners are users and groups that can approve specific file changes.',\n ),\n learnMore: s__('CodeOwners|Learn more.'),\n showAll: s__('CodeOwners|Show all'),\n hideAll: s__('CodeOwners|Hide all'),\n};\n\nexport const codeOwnersHelpPath = helpPagePath('user/project/codeowners/index.md');\n\nexport default {\n i18n,\n codeOwnersHelpPath,\n helpPopoverId: uniqueId('help-popover-'),\n components: {\n GlIcon,\n GlLink,\n GlButton,\n GlBadge,\n GlCollapse,\n GlPopover,\n GlSprintf,\n HelpIcon,\n },\n apollo: {\n project: {\n query: codeOwnersInfoQuery,\n variables() {\n return {\n projectPath: this.projectPath,\n filePath: this.filePath,\n ref: this.branch,\n };\n },\n skip() {\n return !this.filePath;\n },\n error() {\n createAlert({ message: this.$options.i18n.errorMessage });\n },\n },\n },\n props: {\n projectPath: {\n type: String,\n required: true,\n },\n filePath: {\n type: String,\n required: false,\n default: '',\n },\n branch: {\n type: String,\n required: false,\n default: '',\n },\n canViewBranchRules: {\n type: Boolean,\n required: false,\n default: false,\n },\n branchRulesPath: {\n type: String,\n required: false,\n default: '',\n },\n },\n data() {\n return {\n isCodeOwnersExpanded: false,\n project: {},\n };\n },\n computed: {\n blobInfo() {\n return this.project?.repository?.blobs?.nodes[0];\n },\n collapseIcon() {\n return this.isCodeOwnersExpanded ? 'chevron-down' : 'chevron-right';\n },\n codeOwnersPath() {\n return this.project?.repository?.codeOwnersPath;\n },\n codeOwners() {\n return this.blobInfo?.codeOwners || [];\n },\n codeOwnersTotal() {\n return this.blobInfo?.codeOwners?.length;\n },\n toggleText() {\n return this.isCodeOwnersExpanded ? this.$options.i18n.hideAll : this.$options.i18n.showAll;\n },\n hasCodeOwners() {\n return this.filePath && Boolean(this.codeOwners.length);\n },\n codeOwnersSprintfMessage() {\n return toNounSeriesText(\n this.codeOwners.map((codeOwner, index) => `%{linkStart}${index}%{linkEnd}`),\n );\n },\n isLoading() {\n return this.$apollo.queries.project.loading;\n },\n },\n watch: {\n filePath() {\n this.$apollo.queries.project.refetch();\n },\n },\n methods: {\n toggleCodeOwners() {\n this.isCodeOwnersExpanded = !this.isCodeOwnersExpanded;\n },\n getCodeOwner(idx) {\n // what: idx could be a str coming from sprintf so we transform it to a number\n return this.codeOwners[Number(idx)];\n },\n },\n};\n</script>\n\n<template>\n <div\n v-if=\"filePath\"\n class=\"well-segment blob-auxiliary-viewer file-owner-content gl-flex gl-items-baseline gl-justify-between\"\n >\n <div class=\"gl-flex gl-flex-wrap gl-pr-3\">\n <div>\n <gl-icon name=\"users\" />\n <component\n :is=\"hasCodeOwners ? 'gl-link' : 'span'\"\n class=\"gl-font-bold !gl-text-default\"\n :href=\"codeOwnersPath\"\n data-testid=\"codeowners-file-link\"\n >{{ $options.i18n.title }}\n </component>\n </div>\n <div v-if=\"!hasCodeOwners && !isLoading\" class=\"gl-ml-3\">\n <span data-testid=\"no-codeowners-text\">{{ $options.i18n.noCodeOwnersText }}</span>\n <gl-link\n data-testid=\"codeowners-docs-link\"\n target=\"_blank\"\n :href=\"$options.codeOwnersHelpPath\"\n >{{ $options.i18n.learnMore }}</gl-link\n >\n </div>\n\n <template v-if=\"hasCodeOwners && !isLoading\">\n <gl-badge class=\"gl-mx-3 gl-self-center\">{{ codeOwnersTotal }}</gl-badge>\n <gl-button\n variant=\"link\"\n size=\"small\"\n data-testid=\"collapse-toggle\"\n class=\"gl-mr-3\"\n :icon=\"collapseIcon\"\n @click=\"toggleCodeOwners\"\n >\n {{ toggleText }}\n </gl-button>\n <gl-collapse :visible=\"isCodeOwnersExpanded\" data-testid=\"code-owners-list\">\n <gl-sprintf :message=\"codeOwnersSprintfMessage\">\n <template #link=\"{ content }\">\n <gl-link :href=\"getCodeOwner(content).webPath\" target=\"_blank\">{{\n getCodeOwner(content).name\n }}</gl-link>\n </template>\n </gl-sprintf>\n </gl-collapse>\n </template>\n </div>\n\n <help-icon\n v-if=\"hasCodeOwners\"\n :id=\"$options.helpPopoverId\"\n :aria-label=\"$options.i18n.helpText\"\n class=\"gl-my-3 gl-ml-auto gl-mr-3 gl-shrink-0\"\n data-testid=\"help-popover-trigger\"\n />\n <gl-popover\n v-if=\"hasCodeOwners\"\n :target=\"$options.helpPopoverId\"\n placement=\"top\"\n triggers=\"hover focus\"\n >\n {{ $options.i18n.helpText }}\n <gl-link :href=\"$options.codeOwnersHelpPath\">\n {{ $options.i18n.learnMore }}\n </gl-link>\n </gl-popover>\n\n <gl-button\n v-if=\"canViewBranchRules\"\n size=\"small\"\n :href=\"branchRulesPath\"\n class=\"gl-ml-2\"\n data-testid=\"branch-rules-link\"\n >\n {{ $options.i18n.manageBranchRules }}\n </gl-button>\n </div>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code_owners.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code_owners.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./code_owners.vue?vue&type=template&id=042ff9f3\"\nimport script from \"./code_owners.vue?vue&type=script&lang=js\"\nexport * from \"./code_owners.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { joinPaths, escapeFileUrl, removeParams } from '~/lib/utils/url_utility';\n\nexport function generateHistoryUrl(historyLink, path, refType) {\n const url = new URL(window.location.href);\n\n url.pathname = joinPaths(\n removeParams(['ref_type'], historyLink),\n path ? escapeFileUrl(path) : '',\n );\n\n if (refType && !url.searchParams.get('ref_type')) {\n url.searchParams.set('ref_type', refType);\n }\n\n return url;\n}\n"],"sourceRoot":""}