{"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":""}