{"version":3,"sources":["webpack:////build/source/ee/app/assets/javascripts/graphql_shared/fragments/merge_request.approval_rule.fragment.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/popover/popover.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/popover/popover.js","webpack:////build/source/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_rules_wrapper.vue","webpack:////build/source/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_rules.vue?916e","webpack:///../../../ee/app/assets/javascripts/merge_requests/components/reviewers/approval_rules.vue","webpack:////build/source/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_rules.vue?7abb","webpack:////build/source/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_rules.vue","webpack:////build/source/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_rules_wrapper.vue?7fc5","webpack:///../../../ee/app/assets/javascripts/merge_requests/components/reviewers/approval_rules_wrapper.vue","webpack:////build/source/ee/app/assets/javascripts/merge_requests/components/reviewers/approval_rules_wrapper.vue?f8ca","webpack:////build/source/ee/app/assets/javascripts/approvals/components/rules/empty_rule_approvers.vue","webpack:////build/source/ee/app/assets/javascripts/approvals/components/rules/empty_rule_approvers.vue?8dd1","webpack:///../../../ee/app/assets/javascripts/approvals/components/rules/empty_rule_approvers.vue","webpack:////build/source/ee/app/assets/javascripts/approvals/components/rules/empty_rule_approvers.vue?bd36","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/queries/approval_rules.subscription.graphql","webpack:////build/source/ee/app/assets/javascripts/approvals/constants.js","webpack:///./vue_shared/components/help_icon/help_icon.vue","webpack:///./vue_shared/components/help_icon/help_icon.vue?3f9a","webpack:///vue_shared/components/help_icon/help_icon.vue","webpack:///./vue_shared/components/help_icon/help_icon.vue?affe","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/queries/approval_rules.query.graphql"],"names":["doc","loc","source","names","definitions","concat","filter","def","kind","name","value","definitionRefs","findOperation","i","length","element","forEach","refs","Set","collectFragmentReferences","node","add","type","selectionSet","selections","selection","variableDefinitions","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","push","oneQuery","BVPopoverTemplate","extends","computed","templateType","methods","h","title","content","this","$title","$content","titleDomProps","html","innerHTML","contentDomProps","staticClass","class","templateClasses","attrs","templateAttributes","on","templateListeners","ref","domProps","BVPopover","getTemplate","placement","triggers","BPopover","inheritAttrs","props","getComponent","setContent","normalizeSlot","setTitle","__vue_script__","components","CloseButton","mixins","cssClasses","Array","required","default","String","showCloseButton","Boolean","top","boundaryPadding","Number","$scopedSlots","hasTitle","join","e","$refs","doClose","$emit","popoverRefName","__vue_component__","render","_vm","_h","$createElement","_c","_self","_g","_b","$options","customClass","scopedSlots","_u","key","fn","_t","_v","_s","close","_e","proxy","$attrs","$listeners","staticRenderFns","undefined","apollo","userPermissions","query","userPermissionsQuery","variables","fullPath","projectPath","iid","issuableIid","update","data","_data$project","project","mergeRequest","GlButton","ReviewerDropdown","EmptyRuleApprovers","UncollapsedReviewerList","inject","group","Object","reviewers","showApprovalSections","relativeUrlRoot","_gon$relative_url_roo","gon","relative_url_root","mappedRules","rules","_this","map","rule","reviewersForApprovalRule","getApprovalsLeftText","sprintf","__","approvals","approvedBy","nodes","approvalRequired","approvalsRequired","r","mergeRequestInteraction","applicableApprovalRules","find","a","id","toggleApprovalSections","visibleReviewersForRule","visible","toLowerCase","RULE_TYPE_ANY_APPROVER","ANY_APPROVER","toUpperCase","CODE_OWNERS","RULE_TYPE_CODE_OWNER","_l","sections","section","label","eligibleApprovers","adminMergeRequest","approvalRules","approvalRulesQuery","skip","multipleApprovalRulesAvailable","approvalState","subscribeToMore","document","approvalRulesSubscription","issuableId","convertToGraphQLId","TYPENAME_MERGE_REQUEST","updateQuery","_","subscriptionData","mergeRequestApprovalStateUpdated","queryResult","_queryResult$approval","ApprovalRules","isLoading","_this$$apollo","$apollo","queries","loading","mappedApprovalRules","codeOwners","regular","RULE_TYPE_REGULAR","RULE_TYPE_REPORT_APPROVER","GlPopover","GlLink","HelpIcon","eligibleApproversDocsPath","popoverId","popoverContainerId","component","TYPE_USER","TYPE_GROUP","TYPE_HIDDEN_GROUPS","RULE_TYPE_FALLBACK","RULE_NAME_ANY_APPROVER","COVERAGE_CHECK_NAME","APPROVAL_RULE_CONFIGS","s__","popoverText","documentationText","reportType","APPROVAL_SETTINGS_I18N","learnMore","approvalSettingsHeader","approvalSettingsDescription","saveChanges","loadingErrorMessage","savingErrorMessage","savingSuccessMessage","lockedByAdmin","lockedByGroupOwner","PROJECT_APPROVAL_SETTINGS_LABELS_I18N","authorApprovalLabel","preventMrApprovalRuleEditLabel","preventCommittersApprovalLabel","requireUserPasswordLabel","whenCommitAddedLabel","keepApprovalsLabel","removeApprovalsOnPushLabel","selectiveCodeOwnerRemovalsLabel","GROUP_APPROVAL_SETTINGS_LABELS_I18N","APPROVAL_DIALOG_I18N","form","approvalsRequiredLabel","approvalTypeLabel","approversLabel","nameLabel","nameDescription","protectedBranchLabel","protectedBranchDescription","validations","approvalsRequiredNegativeNumber","approvalsRequiredNotNumber","approvalsRequiredMinimum","approversRequired","branchesRequired","ruleNameTaken","ruleNameMissing","ruleNameTooLong","MR_APPROVALS_PROMO_DISMISSED","MR_APPROVALS_PROMO_TRACKING_EVENTS","learnMoreClick","action","tryNowClick","collapsePromo","expandPromo","MR_APPROVALS_PROMO_I18N","accordionTitle","promoTitle","summary","tryNow","valueStatements","DROPDOWN_OPTION_PROJECT_GROUPS","TABLE_HEADERS","members","branches","actions","GlIcon"],"mappings":"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","file":"1224.16490ac7.chunk.js","sourcesContent":["\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestApprovalRule\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequest\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalState\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"invalidApproversRules\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rules\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approved\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsRequired\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"invalid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"allowMergeWhenInvalid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"section\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commentedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eligibleApprovers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scanResultPolicies\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsRequired\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":614}};\n doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/user.fragment.graphql\\\"\\n\\nfragment MergeRequestApprovalRule on MergeRequest {\\n id\\n approvalState {\\n invalidApproversRules {\\n id\\n }\\n rules {\\n id\\n type\\n approved\\n approvalsRequired\\n invalid\\n allowMergeWhenInvalid\\n name\\n section\\n approvedBy {\\n nodes {\\n ...User\\n }\\n }\\n commentedBy {\\n nodes {\\n ...User\\n }\\n }\\n eligibleApprovers {\\n ...User\\n }\\n scanResultPolicies {\\n approvalsRequired\\n name\\n reportType\\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 doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/user.fragment.graphql\").definitions));\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[\"MergeRequestApprovalRule\"] = oneQuery(doc, \"MergeRequestApprovalRule\");\n \n","import { extend } from '../../../vue';\nimport { NAME_POPOVER_TEMPLATE } from '../../../constants/components';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { BVTooltipTemplate } from '../../tooltip/helpers/bv-tooltip-template';\n\n// @vue/component\nconst BVPopoverTemplate = /*#__PURE__*/extend({\n name: NAME_POPOVER_TEMPLATE,\n extends: BVTooltipTemplate,\n computed: {\n templateType() {\n return 'popover';\n }\n },\n methods: {\n renderTemplate(h) {\n const {\n title,\n content\n } = this;\n\n // Title and content could be a scoped slot function\n const $title = isFunction(title) ? title({}) : title;\n const $content = isFunction(content) ? content({}) : content;\n\n // Directive usage only\n const titleDomProps = this.html && !isFunction(title) ? {\n innerHTML: title\n } : {};\n const contentDomProps = this.html && !isFunction(content) ? {\n innerHTML: content\n } : {};\n return h('div', {\n staticClass: 'popover b-popover',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n }, [h('div', {\n staticClass: 'arrow',\n ref: 'arrow'\n }), isUndefinedOrNull($title) || $title === '' ? /* istanbul ignore next */h() : h('h3', {\n staticClass: 'popover-header',\n domProps: titleDomProps\n }, [$title]), isUndefinedOrNull($content) || $content === '' ? /* istanbul ignore next */h() : h('div', {\n staticClass: 'popover-body',\n domProps: contentDomProps\n }, [$content])]);\n }\n }\n});\n\nexport { BVPopoverTemplate };\n","import { extend } from '../../../vue';\nimport { NAME_POPOVER_HELPER } from '../../../constants/components';\nimport { BVTooltip } from '../../tooltip/helpers/bv-tooltip';\nimport { BVPopoverTemplate } from './bv-popover-template';\n\n// Popover \"Class\" (Built as a renderless Vue instance)\n\n// @vue/component\nconst BVPopover = /*#__PURE__*/extend({\n name: NAME_POPOVER_HELPER,\n extends: BVTooltip,\n computed: {\n // Overwrites BVTooltip\n templateType() {\n return 'popover';\n }\n },\n methods: {\n getTemplate() {\n // Overwrites BVTooltip\n return BVPopoverTemplate;\n }\n }\n});\n\nexport { BVPopover };\n","import { extend } from '../../vue';\nimport { NAME_POPOVER } from '../../constants/components';\nimport { EVENT_NAME_CLICK } from '../../constants/events';\nimport { PROP_TYPE_STRING, PROP_TYPE_ARRAY_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, BTooltip } from '../tooltip/tooltip';\nimport { BVPopover } from './helpers/bv-popover';\nimport { sortKeys } from '../../utils/object';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n ...props$1,\n content: makeProp(PROP_TYPE_STRING),\n placement: makeProp(PROP_TYPE_STRING, 'right'),\n triggers: makeProp(PROP_TYPE_ARRAY_STRING, EVENT_NAME_CLICK)\n}), NAME_POPOVER);\n\n// --- Main component ---\n\n// @vue/component\nconst BPopover = /*#__PURE__*/extend({\n name: NAME_POPOVER,\n extends: BTooltip,\n inheritAttrs: false,\n props,\n methods: {\n getComponent() {\n // Overridden by BPopover\n return BVPopover;\n },\n updateContent() {\n // Tooltip: Default slot is `title`\n // Popover: Default slot is `content`, `title` slot is title\n // We pass a scoped slot function references by default (Vue v2.6x)\n // And pass the title prop as a fallback\n this.setContent(this.normalizeSlot() || this.content);\n this.setTitle(this.normalizeSlot(SLOT_NAME_TITLE) || this.title);\n }\n }\n // Render function provided by BTooltip\n});\n\nexport { BPopover, props };\n","import { BPopover } from '../../../vendor/bootstrap-vue/src/components/popover/popover';\nimport tooltipMixin from '../../mixins/tooltip_mixin';\nimport CloseButton from '../../shared_components/close_button/close_button';\nimport { popoverPlacements } from '../../../utils/constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst popoverRefName = 'bPopover';\nvar script = {\n name: 'GlPopover',\n components: {\n BPopover,\n CloseButton\n },\n mixins: [tooltipMixin(popoverRefName)],\n inheritAttrs: false,\n props: {\n cssClasses: {\n type: Array,\n required: false,\n default: () => []\n },\n /**\n * Space-separated triggers for the popover.\n *\n * @values click, hover, focus, manual\n */\n triggers: {\n type: String,\n required: false,\n default: 'hover focus'\n },\n title: {\n type: String,\n required: false,\n default: ''\n },\n showCloseButton: {\n type: Boolean,\n required: false,\n default: false\n },\n placement: {\n type: String,\n required: false,\n default: popoverPlacements.top\n },\n boundaryPadding: {\n type: [Number, String],\n required: false,\n default: 5\n }\n },\n computed: {\n hasTitle() {\n return this.$scopedSlots.title || this.title;\n },\n customClass() {\n return ['gl-popover', this.hasTitle && 'has-title', this.showCloseButton && 'has-close-button', ...this.cssClasses].filter(Boolean).join(' ');\n },\n shouldShowTitle() {\n return this.hasTitle || this.showCloseButton;\n }\n },\n methods: {\n close(e) {\n this.$refs[popoverRefName].doClose();\n /**\n * Emitted when the close button is clicked (requires showCloseButton to be `true`).\n */\n this.$emit('close-button-clicked', e);\n }\n },\n popoverRefName\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-popover',_vm._g(_vm._b({ref:_vm.$options.popoverRefName,attrs:{\"custom-class\":_vm.customClass,\"triggers\":_vm.triggers,\"title\":_vm.title,\"placement\":_vm.placement,\"boundary-padding\":_vm.boundaryPadding},scopedSlots:_vm._u([(_vm.shouldShowTitle)?{key:\"title\",fn:function(){return [_vm._t(\"title\",function(){return [_vm._v(\"\\n \"+_vm._s(_vm.title)+\"\\n \")]}),_vm._v(\" \"),(_vm.showCloseButton)?_c('div',{staticClass:\"-gl-mr-3 -gl-mt-2 gl-ml-3 gl-h-0\"},[_c('close-button',{class:{ 'gl-float-right gl-mt-2': !_vm.hasTitle },attrs:{\"data-testid\":\"close-button\"},on:{\"click\":_vm.close}})],1):_vm._e()]},proxy:true}:null],null,true)},'b-popover',_vm.$attrs,false),_vm.$listeners),[_vm._v(\" \"),_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","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isLoading)?_c('div',[_c('div',{staticClass:\"gl-animate-skeleton-loader gl-mb-3 gl-h-4 !gl-max-w-30 gl-rounded-base\"}),_vm._v(\" \"),_c('div',{staticClass:\"gl-animate-skeleton-loader gl-mb-3 gl-h-4 !gl-max-w-30 gl-rounded-base\"}),_vm._v(\" \"),_c('div',{staticClass:\"gl-animate-skeleton-loader gl-mb-3 gl-h-4 !gl-max-w-30 gl-rounded-base\"}),_vm._v(\" \"),_c('div',{staticClass:\"gl-animate-skeleton-loader gl-mb-3 gl-h-4 !gl-max-w-30 gl-rounded-base\"})]):_c('div',{staticClass:\"!gl-p-0\"},_vm._l((_vm.mappedApprovalRules),function(group){return _c('approval-rules',{key:group.key,attrs:{\"reviewers\":_vm.reviewers,\"group\":group},on:{\"request-review\":(data) => _vm.$emit('request-review', data),\"remove-reviewer\":(data) => _vm.$emit('remove-reviewer', data)}})}),1)\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!./approval_rules.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!./approval_rules.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { sprintf, __ } from '~/locale';\nimport ReviewerDropdown from '~/merge_requests/components/reviewers/reviewer_dropdown.vue';\nimport EmptyRuleApprovers from 'ee/approvals/components/rules/empty_rule_approvers.vue';\nimport UncollapsedReviewerList from '~/sidebar/components/reviewers/uncollapsed_reviewer_list.vue';\nimport userPermissionsQuery from '~/merge_requests/components/reviewers/queries/user_permissions.query.graphql';\nimport { RULE_TYPE_ANY_APPROVER, RULE_TYPE_CODE_OWNER } from 'ee/approvals/constants';\n\nexport default {\n apollo: {\n userPermissions: {\n query: userPermissionsQuery,\n variables() {\n return {\n fullPath: this.projectPath,\n iid: this.issuableIid,\n };\n },\n update: (data) => data.project?.mergeRequest?.userPermissions || {},\n },\n },\n components: {\n GlButton,\n ReviewerDropdown,\n EmptyRuleApprovers,\n UncollapsedReviewerList,\n },\n inject: ['projectPath', 'issuableIid'],\n props: {\n group: {\n type: Object,\n required: true,\n },\n reviewers: {\n type: Array,\n required: true,\n },\n },\n data() {\n return {\n userPermissions: {},\n showApprovalSections: this.group.key !== 'optional',\n };\n },\n computed: {\n relativeUrlRoot() {\n return gon.relative_url_root ?? '';\n },\n },\n methods: {\n mappedRules(rules) {\n return rules.map((rule) => ({\n ...rule,\n reviewers: this.reviewersForApprovalRule(rule),\n }));\n },\n getApprovalsLeftText(rule) {\n return sprintf(__('%{approvals} of %{approvalRequired}'), {\n approvals: rule.approvedBy.nodes.length,\n approvalRequired: rule.approvalsRequired,\n });\n },\n reviewersForApprovalRule(rule) {\n return this.reviewers.filter((r) =>\n r.mergeRequestInteraction.applicableApprovalRules.find((a) => a.id === rule.id),\n );\n },\n toggleApprovalSections() {\n this.showApprovalSections = !this.showApprovalSections;\n },\n visibleReviewersForRule(rule) {\n let visible = rule.reviewers;\n\n if (rule.type.toLowerCase() === RULE_TYPE_ANY_APPROVER) {\n visible = this.reviewers;\n }\n\n return visible;\n },\n },\n ANY_APPROVER: RULE_TYPE_ANY_APPROVER.toUpperCase(),\n CODE_OWNERS: RULE_TYPE_CODE_OWNER.toUpperCase(),\n};\n</script>\n\n<template>\n <div>\n <div\n v-if=\"group.key === 'optional'\"\n class=\"gl-border-b-1 gl-border-b-default gl-px-5 gl-py-3 gl-border-b-solid\"\n >\n <gl-button\n category=\"tertiary\"\n size=\"small\"\n :icon=\"showApprovalSections ? 'chevron-down' : 'chevron-right'\"\n data-testid=\"optional-rules-toggle\"\n @click=\"toggleApprovalSections\"\n >\n {{ __('Optional approvals') }}\n </gl-button>\n </div>\n <template v-if=\"showApprovalSections\">\n <table\n v-for=\"section in group.sections\"\n :key=\"section.key\"\n class=\"!gl-mb-0 gl-w-full gl-table-fixed\"\n >\n <thead>\n <tr class=\"gl-border-b-1 gl-border-b-default gl-border-b-solid\">\n <th class=\"w-60p gl-px-5 gl-py-3 gl-text-sm gl-font-semibold gl-text-subtle\">\n {{ section.label }}\n </th>\n <th class=\"w-30p gl-px-5 gl-py-3 gl-text-sm gl-font-semibold gl-text-subtle\">\n {{ __('Approvals') }}\n </th>\n <th class=\"w-30p gl-px-5 gl-py-3\"></th>\n </tr>\n </thead>\n <tbody>\n <template v-for=\"rule in mappedRules(section.rules)\">\n <tr\n :key=\"rule.id\"\n class=\"gl-border-b-1 gl-bg-gray-10\"\n :class=\"{\n 'gl-border-b-default gl-border-b-solid': !rule.reviewers.length,\n }\"\n >\n <td class=\"gl-px-5 gl-py-3\">\n <empty-rule-approvers\n v-if=\"rule.type === $options.ANY_APPROVER\"\n popover-id=\"sidebar-pop-approver\"\n popover-container-id=\"sidebar-popover-container\"\n />\n <template v-else>\n <span\n v-if=\"rule.section && rule.section !== 'codeowners'\"\n class=\"gl-block\"\n data-testid=\"section-name\"\n >\n {{ rule.section }}\n </span>\n <span\n :class=\"{\n 'gl-break-all gl-text-sm gl-font-monospace':\n rule.type === $options.CODE_OWNERS,\n }\"\n >\n {{ rule.name }}\n </span>\n </template>\n </td>\n <td class=\"gl-px-5 gl-py-3\">\n {{ getApprovalsLeftText(rule) }}\n </td>\n <td class=\"gl-px-5 gl-py-3\">\n <div class=\"gl-flex gl-justify-end\">\n <reviewer-dropdown\n :selected-reviewers=\"reviewers\"\n :visible-reviewers=\"visibleReviewersForRule(rule)\"\n :users=\"rule.eligibleApprovers\"\n />\n </div>\n </td>\n </tr>\n <tr\n v-if=\"rule.reviewers.length\"\n :key=\"`${rule.id}-reviewers`\"\n class=\"gl-border-b-1 gl-border-b-default gl-bg-gray-10 gl-border-b-solid\"\n >\n <td colspan=\"3\" class=\"gl-px-5 gl-pb-3\">\n <uncollapsed-reviewer-list\n :users=\"rule.reviewers\"\n :root-path=\"relativeUrlRoot\"\n :is-editable=\"userPermissions.adminMergeRequest\"\n @request-review=\"(data) => $emit('request-review', data)\"\n @remove-reviewer=\"(data) => $emit('remove-reviewer', data)\"\n />\n </td>\n </tr>\n </template>\n </tbody>\n </table>\n </template>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./approval_rules.vue?vue&type=template&id=5007691f\"\nimport script from \"./approval_rules.vue?vue&type=script&lang=js\"\nexport * from \"./approval_rules.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('div',[(_vm.group.key === 'optional')?_c('div',{staticClass:\"gl-border-b-1 gl-border-b-default gl-px-5 gl-py-3 gl-border-b-solid\"},[_c('gl-button',{attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"icon\":_vm.showApprovalSections ? 'chevron-down' : 'chevron-right',\"data-testid\":\"optional-rules-toggle\"},on:{\"click\":_vm.toggleApprovalSections}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Optional approvals'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.showApprovalSections)?_vm._l((_vm.group.sections),function(section){return _c('table',{key:section.key,staticClass:\"!gl-mb-0 gl-w-full gl-table-fixed\"},[_c('thead',[_c('tr',{staticClass:\"gl-border-b-1 gl-border-b-default gl-border-b-solid\"},[_c('th',{staticClass:\"w-60p gl-px-5 gl-py-3 gl-text-sm gl-font-semibold gl-text-subtle\"},[_vm._v(\"\\n \"+_vm._s(section.label)+\"\\n \")]),_vm._v(\" \"),_c('th',{staticClass:\"w-30p gl-px-5 gl-py-3 gl-text-sm gl-font-semibold gl-text-subtle\"},[_vm._v(\"\\n \"+_vm._s(_vm.__('Approvals'))+\"\\n \")]),_vm._v(\" \"),_c('th',{staticClass:\"w-30p gl-px-5 gl-py-3\"})])]),_vm._v(\" \"),_c('tbody',[_vm._l((_vm.mappedRules(section.rules)),function(rule){return [_c('tr',{key:rule.id,staticClass:\"gl-border-b-1 gl-bg-gray-10\",class:{\n 'gl-border-b-default gl-border-b-solid': !rule.reviewers.length,\n }},[_c('td',{staticClass:\"gl-px-5 gl-py-3\"},[(rule.type === _vm.$options.ANY_APPROVER)?_c('empty-rule-approvers',{attrs:{\"popover-id\":\"sidebar-pop-approver\",\"popover-container-id\":\"sidebar-popover-container\"}}):[(rule.section && rule.section !== 'codeowners')?_c('span',{staticClass:\"gl-block\",attrs:{\"data-testid\":\"section-name\"}},[_vm._v(\"\\n \"+_vm._s(rule.section)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('span',{class:{\n 'gl-break-all gl-text-sm gl-font-monospace':\n rule.type === _vm.$options.CODE_OWNERS,\n }},[_vm._v(\"\\n \"+_vm._s(rule.name)+\"\\n \")])]],2),_vm._v(\" \"),_c('td',{staticClass:\"gl-px-5 gl-py-3\"},[_vm._v(\"\\n \"+_vm._s(_vm.getApprovalsLeftText(rule))+\"\\n \")]),_vm._v(\" \"),_c('td',{staticClass:\"gl-px-5 gl-py-3\"},[_c('div',{staticClass:\"gl-flex gl-justify-end\"},[_c('reviewer-dropdown',{attrs:{\"selected-reviewers\":_vm.reviewers,\"visible-reviewers\":_vm.visibleReviewersForRule(rule),\"users\":rule.eligibleApprovers}})],1)])]),_vm._v(\" \"),(rule.reviewers.length)?_c('tr',{key:`${rule.id}-reviewers`,staticClass:\"gl-border-b-1 gl-border-b-default gl-bg-gray-10 gl-border-b-solid\"},[_c('td',{staticClass:\"gl-px-5 gl-pb-3\",attrs:{\"colspan\":\"3\"}},[_c('uncollapsed-reviewer-list',{attrs:{\"users\":rule.reviewers,\"root-path\":_vm.relativeUrlRoot,\"is-editable\":_vm.userPermissions.adminMergeRequest},on:{\"request-review\":(data) => _vm.$emit('request-review', data),\"remove-reviewer\":(data) => _vm.$emit('remove-reviewer', data)}})],1)]):_vm._e()]})],2)])}):_vm._e()],2)\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!./approval_rules_wrapper.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!./approval_rules_wrapper.vue?vue&type=script&lang=js\"","<script>\nimport { __ } from '~/locale';\nimport { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport approvalRulesQuery from 'ee/vue_merge_request_widget/components/approvals/queries/approval_rules.query.graphql';\nimport approvalRulesSubscription from 'ee/vue_merge_request_widget/components/approvals/queries/approval_rules.subscription.graphql';\nimport {\n RULE_TYPE_ANY_APPROVER,\n RULE_TYPE_REGULAR,\n RULE_TYPE_REPORT_APPROVER,\n RULE_TYPE_CODE_OWNER,\n} from 'ee/approvals/constants';\nimport ApprovalRules from './approval_rules.vue';\n\nexport default {\n apollo: {\n approvalRules: {\n query: approvalRulesQuery,\n variables() {\n return {\n projectPath: this.projectPath,\n iid: this.issuableIid,\n };\n },\n skip() {\n return !this.multipleApprovalRulesAvailable;\n },\n update: (data) => data.project?.mergeRequest?.approvalState?.rules || [],\n subscribeToMore: {\n document: approvalRulesSubscription,\n variables() {\n return {\n issuableId: convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.issuableId),\n };\n },\n updateQuery(\n _,\n {\n subscriptionData: {\n data: { mergeRequestApprovalStateUpdated: queryResult },\n },\n },\n ) {\n if (queryResult) {\n this.approvalRules = queryResult.approvalState?.rules || [];\n }\n },\n },\n },\n },\n components: {\n ApprovalRules,\n },\n inject: ['projectPath', 'issuableIid', 'issuableId', 'multipleApprovalRulesAvailable'],\n props: {\n reviewers: {\n type: Array,\n required: true,\n },\n },\n data() {\n return {\n approvalRules: [],\n };\n },\n computed: {\n isLoading() {\n return this.$apollo?.queries.approvalRules.loading;\n },\n mappedApprovalRules() {\n const codeOwners = this.approvalRules.filter(\n ({ type }) => type.toLowerCase() === RULE_TYPE_CODE_OWNER,\n );\n const regular = this.approvalRules.filter((r) => {\n const type = r.type.toLowerCase();\n\n return (\n type === RULE_TYPE_REGULAR ||\n type === RULE_TYPE_ANY_APPROVER ||\n type === RULE_TYPE_REPORT_APPROVER\n );\n });\n\n return [\n {\n key: 'required',\n sections: [\n {\n key: 'regular',\n label: __('Approval Rules'),\n rules: regular.filter((r) => r.approvalsRequired),\n },\n {\n key: 'code_owner',\n label: __('Code Owners'),\n rules: codeOwners.filter((r) => r.approvalsRequired),\n },\n ].filter(({ rules }) => rules.length),\n },\n {\n key: 'optional',\n sections: [\n {\n key: 'regular',\n label: __('Approval Rules'),\n rules: regular.filter((r) => !r.approvalsRequired),\n },\n {\n key: 'code_owner',\n label: __('Code Owners'),\n rules: codeOwners.filter((r) => !r.approvalsRequired),\n },\n ].filter(({ rules }) => rules.length),\n },\n ].filter(({ sections }) => sections.length);\n },\n },\n};\n</script>\n\n<template>\n <div v-if=\"isLoading\">\n <div class=\"gl-animate-skeleton-loader gl-mb-3 gl-h-4 !gl-max-w-30 gl-rounded-base\"></div>\n <div class=\"gl-animate-skeleton-loader gl-mb-3 gl-h-4 !gl-max-w-30 gl-rounded-base\"></div>\n <div class=\"gl-animate-skeleton-loader gl-mb-3 gl-h-4 !gl-max-w-30 gl-rounded-base\"></div>\n <div class=\"gl-animate-skeleton-loader gl-mb-3 gl-h-4 !gl-max-w-30 gl-rounded-base\"></div>\n </div>\n <div v-else class=\"!gl-p-0\">\n <approval-rules\n v-for=\"group in mappedApprovalRules\"\n :key=\"group.key\"\n :reviewers=\"reviewers\"\n :group=\"group\"\n @request-review=\"(data) => $emit('request-review', data)\"\n @remove-reviewer=\"(data) => $emit('remove-reviewer', data)\"\n />\n </div>\n</template>\n","import { render, staticRenderFns } from \"./approval_rules_wrapper.vue?vue&type=template&id=5738988f\"\nimport script from \"./approval_rules_wrapper.vue?vue&type=script&lang=js\"\nexport * from \"./approval_rules_wrapper.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('div',{staticClass:\"gl-flex gl-items-center\"},[_c('span',[_vm._v(_vm._s(_vm.__('Any eligible user')))]),_vm._v(\" \"),_c('span',{staticClass:\"gl-ml-2 gl-inline-flex\",attrs:{\"id\":_vm.popoverContainerId}},[_c('help-icon',{staticClass:\"author-link\",attrs:{\"id\":_vm.popoverId,\"tabindex\":\"0\",\"aria-label\":_vm.__('help')}}),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":_vm.popoverId,\"container\":_vm.popoverContainerId,\"placement\":\"top\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(_vm._s(_vm.__('Who can approve?')))]},proxy:true}])},[_vm._v(\" \"),_c('ul',{staticClass:\"gl-pl-5\"},[_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.__('Any member with at least Developer permissions on the project.'))+\"\\n \")]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.__('Members listed as CODEOWNERS of affected files.')))]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.__(\"Users or groups set as approvers in the project's or merge request's settings.\"))+\"\\n \")])]),_vm._v(\" \"),_c('gl-link',{staticClass:\"text-1\",attrs:{\"href\":_vm.eligibleApproversDocsPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.__('More information')))])],1)],1)])\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!./empty_rule_approvers.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!./empty_rule_approvers.vue?vue&type=script&lang=js\"","<script>\nimport { GlPopover, GlLink } from '@gitlab/ui';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\n\nexport default {\n components: {\n GlPopover,\n GlLink,\n HelpIcon,\n },\n props: {\n eligibleApproversDocsPath: {\n type: String,\n required: false,\n default: '',\n },\n popoverId: {\n type: String,\n required: false,\n default: 'pop-approver',\n },\n popoverContainerId: {\n type: String,\n required: false,\n default: 'popovercontainer',\n },\n },\n};\n</script>\n\n<template>\n <div class=\"gl-flex gl-items-center\">\n <span>{{ __('Any eligible user') }}</span>\n <span :id=\"popoverContainerId\" class=\"gl-ml-2 gl-inline-flex\">\n <help-icon :id=\"popoverId\" tabindex=\"0\" :aria-label=\"__('help')\" class=\"author-link\" />\n <gl-popover :target=\"popoverId\" :container=\"popoverContainerId\" placement=\"top\">\n <template #title>{{ __('Who can approve?') }}</template>\n <ul class=\"gl-pl-5\">\n <li>\n {{ __('Any member with at least Developer permissions on the project.') }}\n </li>\n <li>{{ __('Members listed as CODEOWNERS of affected files.') }}</li>\n <li>\n {{\n __(\"Users or groups set as approvers in the project's or merge request's settings.\")\n }}\n </li>\n </ul>\n <gl-link :href=\"eligibleApproversDocsPath\" class=\"text-1\" target=\"_blank\">{{\n __('More information')\n }}</gl-link>\n </gl-popover>\n </span>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./empty_rule_approvers.vue?vue&type=template&id=00f0f20a\"\nimport script from \"./empty_rule_approvers.vue?vue&type=script&lang=js\"\nexport * from \"./empty_rule_approvers.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","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalRulesApprovalStateUpdatedEE\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"issuableId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestApprovalStateUpdated\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"issuableId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"issuableId\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequest\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestApprovalRule\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":295}};\n doc.loc.source = {\"body\":\"#import \\\"ee/graphql_shared/fragments/merge_request.approval_rule.fragment.graphql\\\"\\n\\nsubscription approvalRulesApprovalStateUpdatedEE($issuableId: IssuableID!) {\\n mergeRequestApprovalStateUpdated(issuableId: $issuableId) {\\n ... on MergeRequest {\\n ...MergeRequestApprovalRule\\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 doc.definitions = doc.definitions.concat(unique(require(\"ee/graphql_shared/fragments/merge_request.approval_rule.fragment.graphql\").definitions));\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[\"approvalRulesApprovalStateUpdatedEE\"] = oneQuery(doc, \"approvalRulesApprovalStateUpdatedEE\");\n \n","import { __, s__ } from '~/locale';\n\nexport const TYPE_USER = 'user';\nexport const TYPE_GROUP = 'group';\nexport const TYPE_HIDDEN_GROUPS = 'hidden_groups';\n\nexport const RULE_TYPE_FALLBACK = 'fallback';\nexport const RULE_TYPE_REGULAR = 'regular';\nexport const RULE_TYPE_REPORT_APPROVER = 'report_approver';\nexport const RULE_TYPE_CODE_OWNER = 'code_owner';\nexport const RULE_TYPE_ANY_APPROVER = 'any_approver';\nexport const RULE_NAME_ANY_APPROVER = 'All Members';\n\nexport const LICENSE_CHECK_NAME = 'License-Check';\nexport const COVERAGE_CHECK_NAME = 'Coverage-Check';\n\nexport const REPORT_TYPE_LICENSE_SCANNING = 'license_scanning';\nexport const REPORT_TYPE_CODE_COVERAGE = 'code_coverage';\n\nexport const APPROVAL_RULE_CONFIGS = {\n [COVERAGE_CHECK_NAME]: {\n title: s__('SecurityApprovals|Coverage-Check'),\n popoverText: s__(\n 'SecurityApprovals|A merge request approval is required when test coverage declines.',\n ),\n documentationText: s__('SecurityApprovals|Learn more about Coverage-Check'),\n reportType: REPORT_TYPE_CODE_COVERAGE,\n },\n};\n\nexport const APPROVAL_SETTINGS_I18N = {\n learnMore: __('Learn more.'),\n approvalSettingsHeader: __('Approval settings'),\n approvalSettingsDescription: __('Define how approval rules are applied to merge requests.'),\n saveChanges: __('Save changes'),\n loadingErrorMessage: s__(\n 'ApprovalSettings|There was an error loading merge request approval settings.',\n ),\n savingErrorMessage: s__(\n 'ApprovalSettings|There was an error updating merge request approval settings.',\n ),\n savingSuccessMessage: s__('ApprovalSettings|Merge request approval settings have been updated.'),\n lockedByAdmin: s__(\n 'ApprovalSettings|This setting is configured at the instance level and can only be changed by an administrator.',\n ),\n lockedByGroupOwner: s__(\n 'ApprovalSettings|This setting is configured in %{groupName} and can only be changed in the group settings by an administrator or group owner.',\n ),\n};\n\nexport const PROJECT_APPROVAL_SETTINGS_LABELS_I18N = {\n authorApprovalLabel: s__('ApprovalSettings|Prevent approval by author'),\n preventMrApprovalRuleEditLabel: s__(\n 'ApprovalSettings|Prevent editing approval rules in merge requests',\n ),\n preventCommittersApprovalLabel: s__(\n 'ApprovalSettings|Prevent approvals by users who add commits',\n ),\n requireUserPasswordLabel: s__(\n 'ApprovalSettings|Require user re-authentication (password or SAML) to approve',\n ),\n whenCommitAddedLabel: s__('ApprovalSettings|When a commit is added:'),\n keepApprovalsLabel: s__('ApprovalSettings|Keep approvals'),\n removeApprovalsOnPushLabel: s__('ApprovalSettings|Remove all approvals'),\n selectiveCodeOwnerRemovalsLabel: s__(\n 'ApprovalSettings|Remove approvals by Code Owners if their files changed',\n ),\n};\n\nexport const GROUP_APPROVAL_SETTINGS_LABELS_I18N = {\n ...PROJECT_APPROVAL_SETTINGS_LABELS_I18N,\n preventMrApprovalRuleEditLabel: s__(\n 'ApprovalSettings|Prevent editing approval rules in projects and merge requests.',\n ),\n};\n\nexport const APPROVAL_DIALOG_I18N = {\n form: {\n approvalsRequiredLabel: s__('ApprovalRule|Required number of approvals'),\n approvalTypeLabel: s__('ApprovalRule|Approver Type'),\n approversLabel: s__('ApprovalRule|Add approvers'),\n nameLabel: s__('ApprovalRule|Rule name'),\n nameDescription: s__('ApprovalRule|Examples: QA, Security.'),\n protectedBranchLabel: s__('ApprovalRule|Target branch'),\n protectedBranchDescription: __(\n 'Apply this approval rule to all branches or a specific protected branch.',\n ),\n },\n validations: {\n approvalsRequiredNegativeNumber: __('Please enter a non-negative number'),\n approvalsRequiredNotNumber: __('Please enter a valid number'),\n approvalsRequiredMinimum: __(\n 'Please enter a number greater than %{number} (from the project settings)',\n ),\n approversRequired: __('Please select and add a member'),\n branchesRequired: __('Please select a valid target branch'),\n ruleNameTaken: __('Rule name is already taken.'),\n ruleNameMissing: __('Please provide a name'),\n ruleNameTooLong: __('Please enter a name with less than %{number} characters.'),\n },\n};\n\nexport const MR_APPROVALS_PROMO_DISMISSED = 'mr_approvals_promo.dismissed';\nexport const MR_APPROVALS_PROMO_TRACKING_EVENTS = {\n learnMoreClick: { action: 'click_link', label: 'learn_more_merge_approval' },\n tryNowClick: { action: 'click_button', label: 'start_trial' },\n collapsePromo: { action: 'click_button', label: 'collapse_approval_rules' },\n expandPromo: { action: 'click_button', label: 'expand_approval_rules' },\n};\nexport const MR_APPROVALS_PROMO_I18N = {\n accordionTitle: s__('ApprovalRule|Approval rules'),\n learnMore: __('Learn more'),\n promoTitle: s__(\"ApprovalRule|Improve your organization's code review with required approvals.\"),\n summary: __('Approvals are optional.'),\n tryNow: s__('ApprovalRule|Try for free'),\n valueStatements: [\n s__('ApprovalRule|Select eligible approvers by expertise or files changed.'),\n s__('ApprovalRule|Increase quality and maintain standards.'),\n s__('ApprovalRule|Reduce your time to merge.'),\n ],\n};\n\nexport const SEARCH_PLACEHOLDER = s__('ApprovalRule|Search users or groups');\n\nexport const DROPDOWN_OPTION_PROJECT_GROUPS = s__('ApprovalRule|Search in project groups');\n\nexport const DROPDOWN_OPTION_ALL_GROUPS = s__('ApprovalRule|Search in all groups');\n\nexport const GROUP_OPTIONS = [DROPDOWN_OPTION_ALL_GROUPS, DROPDOWN_OPTION_PROJECT_GROUPS];\n\nexport const TABLE_HEADERS = {\n name: s__('ApprovalRule|Rule'),\n members: s__('ApprovalRule|Approvers'),\n approvalsRequired: s__('ApprovalRule|Approvals required'),\n branches: __('Target branch'),\n actions: __('Actions'),\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-icon',_vm._b({staticClass:\"gl-cursor-help\",attrs:{\"name\":\"question-o\",\"size\":16,\"variant\":\"info\"}},'gl-icon',_vm.$attrs,false))\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!./help_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!./help_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\n\nexport default {\n components: {\n GlIcon,\n },\n};\n</script>\n<template>\n <gl-icon v-bind=\"$attrs\" name=\"question-o\" :size=\"16\" variant=\"info\" class=\"gl-cursor-help\" />\n</template>\n","import { render, staticRenderFns } from \"./help_icon.vue?vue&type=template&id=200e29f0\"\nimport script from \"./help_icon.vue?vue&type=script&lang=js\"\nexport * from \"./help_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","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalRules\"},\"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\":\"iid\"}},\"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\":\"mergeRequest\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestApprovalRule\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":259}};\n doc.loc.source = {\"body\":\"#import \\\"ee/graphql_shared/fragments/merge_request.approval_rule.fragment.graphql\\\"\\n\\nquery approvalRules($projectPath: ID!, $iid: String!) {\\n project(fullPath: $projectPath) {\\n id\\n mergeRequest(iid: $iid) {\\n ...MergeRequestApprovalRule\\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 doc.definitions = doc.definitions.concat(unique(require(\"ee/graphql_shared/fragments/merge_request.approval_rule.fragment.graphql\").definitions));\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[\"approvalRules\"] = oneQuery(doc, \"approvalRules\");\n \n"],"sourceRoot":""}