{"version":3,"sources":["webpack:///./vue_shared/components/smart_virtual_list.vue","webpack:///./vue_shared/components/smart_virtual_list.vue?6cd4","webpack:///vue_shared/components/smart_virtual_list.vue","webpack:///./vue_shared/components/smart_virtual_list.vue?7c81","webpack:///./ci/reports/components/report_section.vue","webpack:///ci/reports/components/issues_list.vue","webpack:///./ci/reports/components/issues_list.vue?2213","webpack:///./ci/reports/components/issues_list.vue?1ff0","webpack:///./ci/reports/components/issues_list.vue","webpack:///./ci/reports/components/report_section.vue?e333","webpack:///ci/reports/components/report_section.vue","webpack:///./ci/reports/components/report_section.vue?58a2","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/components/license_status_icon.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/components/license_status_icon.vue?06fe","webpack:///../../../ee/app/assets/javascripts/vue_shared/license_compliance/components/license_status_icon.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/components/license_status_icon.vue?3fcb","webpack:///./ci/reports/components/issue_status_icon.vue?00ce","webpack:///ci/reports/components/issue_status_icon.vue","webpack:///./ci/reports/components/issue_status_icon.vue?8016","webpack:///./ci/reports/components/issue_status_icon.vue","webpack:///./ci/reports/components/issue_body.js","webpack:////build/source/ee/app/assets/javascripts/ci/reports/components/issue_body.js","webpack:///./ci/reports/components/report_item.vue","webpack:///./ci/reports/components/report_item.vue?b22d","webpack:///ci/reports/components/report_item.vue","webpack:///./ci/reports/components/report_item.vue?c5d4","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/queries/blocking_merge_requests.query.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/blocking_merge_requests/blocking_merge_requests_report.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/blocking_merge_requests/blocking_merge_requests_report.vue?e76e","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/blocking_merge_requests/blocking_merge_requests_report.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/blocking_merge_requests/blocking_merge_requests_report.vue?afdc"],"names":["name","components","VirtualList","props","size","type","Number","required","length","remain","rtag","String","default","wtag","wclass","component","_vm","this","_c","_self","_b","staticClass","attrs","$attrs","_t","tag","class","wrapIssueWithState","status","isNew","issue","SmartVirtualList","ReportItem","typicalReportItemHeight","maxShownReportItems","newIssues","Array","unresolvedIssues","resolvedIssues","neutralIssues","showReportSectionStatusIcon","Boolean","issuesUlElementClass","issueItemClass","nestedLevel","validator","value","includes","computed","issuesWithState","map","STATUS_FAILED","STATUS_NEUTRAL","STATUS_SUCCESS","listClasses","$options","_l","wrapped","index","key","GlButton","IssuesList","HelpPopover","StatusIcon","mixins","glFeatureFlagsMixin","alwaysOpen","loadingText","errorText","successText","infoText","hasIssues","popoverOptions","Object","undefined","issuesListContainerClass","shouldEmitToggleEvent","trackAction","data","isCollapsed","isLoading","LOADING","loadingFailed","ERROR","isSuccess","SUCCESS","isCollapsible","isExpanded","statusIconName","headerText","hasPopover","keys","slotName","SLOT_SUCCESS","SLOT_LOADING","SLOT_ERROR","methods","toggleCollapsed","api","trackRedisHllUserEvent","$emit","_v","_s","_e","on","directives","rawName","expression","GlIcon","statusIconSize","iconName","isStatusFailed","isStatusSuccess","isStatusNeutral","failed","success","neutral","CodequalityIssueBody","iconComponents","IssueStatusIcon","iconComponentNames","componentsCE","LicenseIssueBody","BlockingMergeRequestsBody","componentNames","iconComponentsCE","LicenseStatusIcon","iconComponentNamesCE","values","iconComponent","doc","loc","source","definitionRefs","findOperation","i","definitions","element","forEach","def","refs","Set","collectFragmentReferences","node","kind","add","selectionSet","selections","selection","variableDefinitions","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","has","childRef","op","push","oneQuery","apollo","$subscribe","state","query","getStateSubscription","skip","_this$mr","mr","id","variables","_this$mr2","issuableId","convertToGraphQLId","TYPENAME_MERGE_REQUEST","result","mergeRequestMergeStatusUpdated","detailedMergeStatus","DETAILED_MERGE_STATUS","BLOCKED_STATUS","$apollo","queries","blockingMergeRequests","refetch","blockingMergeRequestsQuery","mergeRequestQueryVariables","update","_data$project","project","mergeRequest","ReportSection","GlSprintf","mergeRequestQueryVariablesMixin","visibleMergeRequests","_this$blockingMergeRe","reduce","acc","shouldRenderBlockingMergeRequests","_this$blockingMergeRe2","totalCount","openBlockingMergeRequests","opened","closedBlockingMergeRequests","closed","mergedBlockingMergeRequests","merged","unmergedBlockingMergeRequests","_this","filter","STATUS_MERGED","unmergedBlockingMRs","STATUS_CLOSED","hiddenCount","isBlocked","closedCount","unmergedCount","blockedByText","sprintf","n__","mainText","reportStatus","scopedSlots","_u","fn","__","mrCount","proxy","content"],"mappings":"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","file":"1244.c5285dba.chunk.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.length > _vm.remain)?_c('virtual-list',_vm._b({staticClass:\"js-virtual-list\",attrs:{\"size\":_vm.remain,\"remain\":_vm.remain,\"rtag\":_vm.rtag,\"wtag\":_vm.wtag,\"wclass\":_vm.wclass}},'virtual-list',_vm.$attrs,false),[_vm._t(\"default\")],2):_c(_vm.rtag,{tag:\"component\",staticClass:\"js-plain-element\"},[_c(_vm.wtag,{tag:\"component\",class:_vm.wclass},[_vm._t(\"default\")],2)],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!./smart_virtual_list.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!./smart_virtual_list.vue?vue&type=script&lang=js\"","<script>\nimport VirtualList from 'vue-virtual-scroll-list';\n\nexport default {\n  name: 'SmartVirtualList',\n  components: { VirtualList },\n  props: {\n    size: { type: Number, required: true },\n    length: { type: Number, required: true },\n    remain: { type: Number, required: true },\n    rtag: { type: String, default: 'div', required: false },\n    wtag: { type: String, default: 'div', required: false },\n    wclass: { type: String, default: null, required: false },\n  },\n};\n</script>\n<template>\n  <virtual-list\n    v-if=\"length > remain\"\n    v-bind=\"$attrs\"\n    :size=\"remain\"\n    :remain=\"remain\"\n    :rtag=\"rtag\"\n    :wtag=\"wtag\"\n    :wclass=\"wclass\"\n    class=\"js-virtual-list\"\n  >\n    <slot></slot>\n  </virtual-list>\n  <component :is=\"rtag\" v-else class=\"js-plain-element\">\n    <component :is=\"wtag\" :class=\"wclass\"> <slot></slot> </component>\n  </component>\n</template>\n","import { render, staticRenderFns } from \"./smart_virtual_list.vue?vue&type=template&id=6a8e8eeb\"\nimport script from \"./smart_virtual_list.vue?vue&type=script&lang=js\"\nexport * from \"./smart_virtual_list.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('section',{staticClass:\"media-section\"},[_c('div',{staticClass:\"gl-flex gl-py-4 gl-pl-5 gl-pr-4\"},[_c('status-icon',{staticClass:\"align-self-center\",attrs:{\"status\":_vm.statusIconName,\"size\":24}}),_vm._v(\" \"),_c('div',{staticClass:\"media-body gl-flex !gl-flex-row gl-items-start\"},[_c('div',{staticClass:\"js-code-text code-text gl-grow gl-self-center\"},[_c('div',{staticClass:\"gl-flex gl-items-center\"},[_c('p',{staticClass:\"gl-m-0 gl-leading-normal\"},[_vm._v(_vm._s(_vm.headerText))]),_vm._v(\" \"),_vm._t(_vm.slotName),_vm._v(\" \"),(_vm.hasPopover)?_c('help-popover',{staticClass:\"gl-ml-2 gl-inline-flex\",attrs:{\"options\":_vm.popoverOptions}}):_vm._e()],2),_vm._v(\" \"),_vm._t(\"sub-heading\")],2),_vm._v(\" \"),_vm._t(\"action-buttons\",null,{\"isCollapsible\":_vm.isCollapsible}),_vm._v(\" \"),(_vm.isCollapsible)?_c('div',{staticClass:\"gl-border-l gl-ml-3 gl-pl-3\"},[_c('gl-button',{attrs:{\"data-testid\":\"report-section-expand-button\",\"category\":\"tertiary\",\"size\":\"small\",\"icon\":_vm.isExpanded ? 'chevron-lg-up' : 'chevron-lg-down'},on:{\"click\":_vm.toggleCollapsed}})],1):_vm._e()],2)],1),_vm._v(\" \"),(_vm.hasIssues)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isExpanded),expression:\"isExpanded\"}],staticClass:\"js-report-section-container\"},[_vm._t(\"body\",function(){return [_c('issues-list',{class:_vm.issuesListContainerClass,attrs:{\"unresolved-issues\":_vm.unresolvedIssues,\"resolved-issues\":_vm.resolvedIssues,\"neutral-issues\":_vm.neutralIssues,\"component\":_vm.component,\"show-report-section-status-icon\":_vm.showReportSectionStatusIcon,\"issues-ul-element-class\":_vm.issuesUlElementClass,\"issue-item-class\":_vm.issueItemClass}})]})],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport ReportItem from '~/ci/reports/components/report_item.vue';\nimport { STATUS_FAILED, STATUS_NEUTRAL, STATUS_SUCCESS } from '~/ci/reports/constants';\nimport SmartVirtualList from '~/vue_shared/components/smart_virtual_list.vue';\n\nconst wrapIssueWithState =\n  (status, isNew = false) =>\n  (issue) => ({\n    status: issue.status || status,\n    isNew,\n    issue,\n  });\n\n/**\n * Renders block of issues\n */\nexport default {\n  components: {\n    SmartVirtualList,\n    ReportItem,\n  },\n  // Typical height of a report item in px\n  typicalReportItemHeight: 32,\n  /*\n   The maximum amount of shown issues. This is calculated by\n   ( max-height of report-block-list / typicalReportItemHeight ) + some safety margin\n   We will use VirtualList if we have more items than this number.\n   For entries lower than this number, the virtual scroll list calculates the total height of the element wrongly.\n   */\n  maxShownReportItems: 20,\n  props: {\n    newIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    unresolvedIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    resolvedIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    neutralIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    component: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showReportSectionStatusIcon: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    issuesUlElementClass: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    issueItemClass: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    nestedLevel: {\n      type: Number,\n      required: false,\n      default: 0,\n      validator: (value) => [0, 1, 2].includes(value),\n    },\n  },\n  computed: {\n    issuesWithState() {\n      return [\n        ...this.newIssues.map(wrapIssueWithState(STATUS_FAILED, true)),\n        ...this.unresolvedIssues.map(wrapIssueWithState(STATUS_FAILED)),\n        ...this.neutralIssues.map(wrapIssueWithState(STATUS_NEUTRAL)),\n        ...this.resolvedIssues.map(wrapIssueWithState(STATUS_SUCCESS)),\n      ];\n    },\n    wclass() {\n      return `report-block-list ${this.issuesUlElementClass}`;\n    },\n    listClasses() {\n      return {\n        'gl-pl-9': this.nestedLevel === 1,\n        'gl-pl-11-5': this.nestedLevel === 2,\n      };\n    },\n  },\n};\n</script>\n<template>\n  <smart-virtual-list\n    :length=\"issuesWithState.length\"\n    :remain=\"$options.maxShownReportItems\"\n    :size=\"$options.typicalReportItemHeight\"\n    class=\"report-block-container\"\n    :class=\"listClasses\"\n    wtag=\"ul\"\n    :wclass=\"wclass\"\n  >\n    <report-item\n      v-for=\"(wrapped, index) in issuesWithState\"\n      :key=\"index\"\n      :issue=\"wrapped.issue\"\n      :status=\"wrapped.status\"\n      :component=\"component\"\n      :is-new=\"wrapped.isNew\"\n      :show-report-section-status-icon=\"showReportSectionStatusIcon\"\n      :class=\"issueItemClass\"\n    />\n  </smart-virtual-list>\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!./issues_list.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!./issues_list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./issues_list.vue?vue&type=template&id=5a703cbf\"\nimport script from \"./issues_list.vue?vue&type=script&lang=js\"\nexport * from \"./issues_list.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('smart-virtual-list',{staticClass:\"report-block-container\",class:_vm.listClasses,attrs:{\"length\":_vm.issuesWithState.length,\"remain\":_vm.$options.maxShownReportItems,\"size\":_vm.$options.typicalReportItemHeight,\"wtag\":\"ul\",\"wclass\":_vm.wclass}},_vm._l((_vm.issuesWithState),function(wrapped,index){return _c('report-item',{key:index,class:_vm.issueItemClass,attrs:{\"issue\":wrapped.issue,\"status\":wrapped.status,\"component\":_vm.component,\"is-new\":wrapped.isNew,\"show-report-section-status-icon\":_vm.showReportSectionStatusIcon}})}),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!./report_section.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!./report_section.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport api from '~/api';\nimport StatusIcon from '~/vue_merge_request_widget/components/mr_widget_status_icon.vue';\nimport HelpPopover from '~/vue_shared/components/help_popover.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { status, SLOT_SUCCESS, SLOT_LOADING, SLOT_ERROR } from '../constants';\nimport IssuesList from './issues_list.vue';\n\nexport default {\n  name: 'ReportSection',\n  components: {\n    GlButton,\n    IssuesList,\n    HelpPopover,\n    StatusIcon,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  props: {\n    alwaysOpen: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    component: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    status: {\n      type: String,\n      required: true,\n    },\n    loadingText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    errorText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    successText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    unresolvedIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    resolvedIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    neutralIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    infoText: {\n      type: [String, Boolean],\n      required: false,\n      default: false,\n    },\n    hasIssues: {\n      type: Boolean,\n      required: true,\n    },\n    popoverOptions: {\n      type: Object,\n      default: () => ({}),\n      required: false,\n    },\n    showReportSectionStatusIcon: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    issuesUlElementClass: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    issuesListContainerClass: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    issueItemClass: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    shouldEmitToggleEvent: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    trackAction: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n\n  data() {\n    return {\n      isCollapsed: true,\n    };\n  },\n\n  computed: {\n    isLoading() {\n      return this.status === status.LOADING;\n    },\n    loadingFailed() {\n      return this.status === status.ERROR;\n    },\n    isSuccess() {\n      return this.status === status.SUCCESS;\n    },\n    isCollapsible() {\n      return !this.alwaysOpen && this.hasIssues;\n    },\n    isExpanded() {\n      return this.alwaysOpen || !this.isCollapsed;\n    },\n    statusIconName() {\n      if (this.isLoading) {\n        return 'loading';\n      }\n      if (this.loadingFailed || this.unresolvedIssues.length || this.neutralIssues.length) {\n        return 'warning';\n      }\n      return 'success';\n    },\n    headerText() {\n      if (this.isLoading) {\n        return this.loadingText;\n      }\n\n      if (this.isSuccess) {\n        return this.successText;\n      }\n\n      if (this.loadingFailed) {\n        return this.errorText;\n      }\n\n      return '';\n    },\n    hasPopover() {\n      return Object.keys(this.popoverOptions).length > 0;\n    },\n    slotName() {\n      if (this.isSuccess) {\n        return SLOT_SUCCESS;\n      }\n      if (this.isLoading) {\n        return SLOT_LOADING;\n      }\n\n      return SLOT_ERROR;\n    },\n  },\n  methods: {\n    toggleCollapsed() {\n      if (this.trackAction) {\n        api.trackRedisHllUserEvent(this.trackAction);\n      }\n\n      if (this.shouldEmitToggleEvent) {\n        this.$emit('toggleEvent');\n      }\n      this.isCollapsed = !this.isCollapsed;\n    },\n  },\n};\n</script>\n<template>\n  <section class=\"media-section\">\n    <div class=\"gl-flex gl-py-4 gl-pl-5 gl-pr-4\">\n      <status-icon :status=\"statusIconName\" :size=\"24\" class=\"align-self-center\" />\n      <div class=\"media-body gl-flex !gl-flex-row gl-items-start\">\n        <div class=\"js-code-text code-text gl-grow gl-self-center\">\n          <div class=\"gl-flex gl-items-center\">\n            <p class=\"gl-m-0 gl-leading-normal\">{{ headerText }}</p>\n            <slot :name=\"slotName\"></slot>\n            <help-popover\n              v-if=\"hasPopover\"\n              :options=\"popoverOptions\"\n              class=\"gl-ml-2 gl-inline-flex\"\n            />\n          </div>\n          <slot name=\"sub-heading\"></slot>\n        </div>\n\n        <slot name=\"action-buttons\" :is-collapsible=\"isCollapsible\"></slot>\n\n        <div v-if=\"isCollapsible\" class=\"gl-border-l gl-ml-3 gl-pl-3\">\n          <gl-button\n            data-testid=\"report-section-expand-button\"\n            category=\"tertiary\"\n            size=\"small\"\n            :icon=\"isExpanded ? 'chevron-lg-up' : 'chevron-lg-down'\"\n            @click=\"toggleCollapsed\"\n          />\n        </div>\n      </div>\n    </div>\n\n    <div v-if=\"hasIssues\" v-show=\"isExpanded\" class=\"js-report-section-container\">\n      <slot name=\"body\">\n        <issues-list\n          :unresolved-issues=\"unresolvedIssues\"\n          :resolved-issues=\"resolvedIssues\"\n          :neutral-issues=\"neutralIssues\"\n          :component=\"component\"\n          :show-report-section-status-icon=\"showReportSectionStatusIcon\"\n          :issues-ul-element-class=\"issuesUlElementClass\"\n          :class=\"issuesListContainerClass\"\n          :issue-item-class=\"issueItemClass\"\n        />\n      </slot>\n    </div>\n  </section>\n</template>\n","import { render, staticRenderFns } from \"./report_section.vue?vue&type=template&id=52ac4d2f\"\nimport script from \"./report_section.vue?vue&type=script&lang=js\"\nexport * from \"./report_section.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:\"report-block-list-icon\",class:{\n    failed: _vm.isStatusFailed,\n    success: _vm.isStatusSuccess,\n    neutral: _vm.isStatusNeutral,\n  }},[_c('gl-icon',{staticClass:\"gl-mb-1\",attrs:{\"name\":_vm.iconName,\"size\":_vm.statusIconSize,\"data-testid\":`status-${_vm.status}-icon`}})],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!./license_status_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!./license_status_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { STATUS_FAILED, STATUS_NEUTRAL, STATUS_SUCCESS } from '~/ci/reports/constants';\n\nexport default {\n  name: 'LicenseStatusIcon',\n  components: {\n    GlIcon,\n  },\n  props: {\n    status: {\n      type: String,\n      required: true,\n    },\n    statusIconSize: {\n      type: Number,\n      required: false,\n      default: 12,\n    },\n  },\n  computed: {\n    iconName() {\n      if (this.isStatusFailed) {\n        return 'status-failed';\n      }\n      if (this.isStatusSuccess) {\n        return 'status-success';\n      }\n\n      return 'status-alert';\n    },\n    isStatusFailed() {\n      return this.status === STATUS_FAILED;\n    },\n    isStatusSuccess() {\n      return this.status === STATUS_SUCCESS;\n    },\n    isStatusNeutral() {\n      return this.status === STATUS_NEUTRAL;\n    },\n  },\n};\n</script>\n<template>\n  <div\n    :class=\"{\n      failed: isStatusFailed,\n      success: isStatusSuccess,\n      neutral: isStatusNeutral,\n    }\"\n    class=\"report-block-list-icon\"\n  >\n    <gl-icon\n      class=\"gl-mb-1\"\n      :name=\"iconName\"\n      :size=\"statusIconSize\"\n      :data-testid=\"`status-${status}-icon`\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./license_status_icon.vue?vue&type=template&id=6ea5e745\"\nimport script from \"./license_status_icon.vue?vue&type=script&lang=js\"\nexport * from \"./license_status_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 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!./issue_status_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!./issue_status_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { STATUS_FAILED, STATUS_NEUTRAL, STATUS_SUCCESS } from '../constants';\n\nexport default {\n  name: 'IssueStatusIcon',\n  components: {\n    GlIcon,\n  },\n  props: {\n    status: {\n      type: String,\n      required: true,\n    },\n    statusIconSize: {\n      type: Number,\n      required: false,\n      default: 24,\n    },\n  },\n  computed: {\n    iconName() {\n      if (this.isStatusFailed) {\n        return 'status_failed_borderless';\n      }\n      if (this.isStatusSuccess) {\n        return 'status_success_borderless';\n      }\n\n      return 'dash';\n    },\n    isStatusFailed() {\n      return this.status === STATUS_FAILED;\n    },\n    isStatusSuccess() {\n      return this.status === STATUS_SUCCESS;\n    },\n    isStatusNeutral() {\n      return this.status === STATUS_NEUTRAL;\n    },\n  },\n};\n</script>\n<template>\n  <div\n    :class=\"{\n      failed: isStatusFailed,\n      success: isStatusSuccess,\n      neutral: isStatusNeutral,\n    }\"\n    class=\"report-block-list-icon\"\n  >\n    <gl-icon :name=\"iconName\" :size=\"statusIconSize\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./issue_status_icon.vue?vue&type=template&id=3d10e10c\"\nimport script from \"./issue_status_icon.vue?vue&type=script&lang=js\"\nexport * from \"./issue_status_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"report-block-list-icon\",class:{\n    failed: _vm.isStatusFailed,\n    success: _vm.isStatusSuccess,\n    neutral: _vm.isStatusNeutral,\n  }},[_c('gl-icon',{attrs:{\"name\":_vm.iconName,\"size\":_vm.statusIconSize}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import IssueStatusIcon from '~/ci/reports/components/issue_status_icon.vue';\n\nexport const components = {\n  CodequalityIssueBody: () => import('../codequality_report/components/codequality_issue_body.vue'),\n};\n\nexport const componentNames = {\n  CodequalityIssueBody: 'CodequalityIssueBody',\n};\n\nexport const iconComponents = {\n  IssueStatusIcon,\n};\n\nexport const iconComponentNames = {\n  IssueStatusIcon: IssueStatusIcon.name,\n};\n","import LicenseStatusIcon from 'ee/vue_shared/license_compliance/components/license_status_icon.vue';\nimport {\n  components as componentsCE,\n  componentNames as componentNamesCE,\n  iconComponents as iconComponentsCE,\n  iconComponentNames as iconComponentNamesCE,\n} from '~/ci/reports/components/issue_body';\n\nexport const components = {\n  ...componentsCE,\n  LicenseIssueBody: () =>\n    import('ee/vue_shared/license_compliance/components/license_issue_body.vue'),\n  BlockingMergeRequestsBody: () =>\n    import(\n      'ee/vue_merge_request_widget/components/blocking_merge_requests/blocking_merge_request_body.vue'\n    ),\n};\n\nexport const componentNames = {\n  ...componentNamesCE,\n  LicenseIssueBody: 'LicenseIssueBody',\n  BlockingMergeRequestsBody: 'BlockingMergeRequestsBody',\n};\n\nexport const iconComponents = {\n  ...iconComponentsCE,\n  LicenseStatusIcon,\n};\n\nexport const iconComponentNames = {\n  ...iconComponentNamesCE,\n  LicenseStatusIcon: LicenseStatusIcon.name,\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"report-block-list-issue !gl-p-3\",attrs:{\"data-testid\":\"report-item-row\"}},[(_vm.showReportSectionStatusIcon)?_c(_vm.iconComponent,{tag:\"component\",staticClass:\"gl-mr-2\",attrs:{\"status\":_vm.status,\"status-icon-size\":_vm.statusIconSize}}):_vm._e(),_vm._v(\" \"),(_vm.component)?_c(_vm.component,{tag:\"component\",attrs:{\"issue\":_vm.issue,\"status\":_vm.status,\"is-new\":_vm.isNew}}):_vm._e()],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!./report_item.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!./report_item.vue?vue&type=script&lang=js\"","<script>\nimport {\n  components,\n  componentNames,\n  iconComponents,\n  iconComponentNames,\n} from 'ee_else_ce/ci/reports/components/issue_body';\n\nexport default {\n  name: 'ReportItem',\n  components: {\n    ...components,\n    ...iconComponents,\n  },\n  props: {\n    issue: {\n      type: Object,\n      required: true,\n    },\n    component: {\n      type: String,\n      required: false,\n      default: '',\n      validator: (value) => value === '' || Object.values(componentNames).includes(value),\n    },\n    iconComponent: {\n      type: String,\n      required: false,\n      default: iconComponentNames.IssueStatusIcon,\n      validator: (value) => Object.values(iconComponentNames).includes(value),\n    },\n    // failed || success\n    status: {\n      type: String,\n      required: true,\n    },\n    statusIconSize: {\n      type: Number,\n      required: false,\n      default: 24,\n    },\n    isNew: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showReportSectionStatusIcon: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n};\n</script>\n<template>\n  <li class=\"report-block-list-issue !gl-p-3\" data-testid=\"report-item-row\">\n    <component\n      :is=\"iconComponent\"\n      v-if=\"showReportSectionStatusIcon\"\n      :status=\"status\"\n      :status-icon-size=\"statusIconSize\"\n      class=\"gl-mr-2\"\n    />\n\n    <component :is=\"component\" v-if=\"component\" :issue=\"issue\" :status=\"status\" :is-new=\"isNew\" />\n  </li>\n</template>\n","import { render, staticRenderFns } from \"./report_item.vue?vue&type=template&id=32fd7bf0\"\nimport script from \"./report_item.vue?vue&type=script&lang=js\"\nexport * from \"./report_item.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\":\"getBlockingMergeRequests\"},\"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\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blockingMergeRequests\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hiddenCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibleMergeRequests\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reference\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"milestone\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dueDate\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startDate\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignees\"},\"arguments\":[],\"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\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headPipeline\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasDetails\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":897}};\n    doc.loc.source = {\"body\":\"query getBlockingMergeRequests($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      id\\n      blockingMergeRequests {\\n        hiddenCount\\n        totalCount\\n        visibleMergeRequests {\\n          id\\n          iid\\n          reference\\n          milestone {\\n            id\\n            title\\n            dueDate\\n            startDate\\n          }\\n          assignees {\\n            nodes {\\n              id\\n              name\\n              username\\n              webUrl\\n              avatarUrl\\n            }\\n          }\\n          headPipeline {\\n            id\\n            detailedStatus {\\n              id\\n              label\\n              hasDetails\\n              detailsPath\\n              icon\\n            }\\n          }\\n          createdAt\\n          mergedAt\\n          webUrl\\n          state\\n          title\\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[\"getBlockingMergeRequests\"] = oneQuery(doc, \"getBlockingMergeRequests\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.shouldRenderBlockingMergeRequests)?_c('report-section',{staticClass:\"mr-widget-border-top mr-report blocking-mrs-report\",attrs:{\"status\":_vm.status,\"has-issues\":true,\"unresolved-issues\":_vm.unresolvedIssues,\"resolved-issues\":_vm.mergedBlockingMergeRequests,\"component\":_vm.$options.componentNames.BlockingMergeRequestsBody,\"show-report-section-status-icon\":false,\"issues-ul-element-class\":\"content-list\",\"issues-list-container-class\":\"p-0\",\"issue-item-class\":\"p-0\"},scopedSlots:_vm._u([{key:\"success\",fn:function(){return [_vm._v(\"\\n    \"+_vm._s(_vm.__('All merge request dependencies have been merged'))+\"\\n    \"),_c('span',{staticClass:\"gl-ml-1 gl-text-subtle\"},[_vm._v(\"\\n      \"+_vm._s(_vm.sprintf(_vm.__('(%{mrCount} merged)'), {\n          mrCount: _vm.blockingMergeRequests.totalCount - _vm.unmergedBlockingMergeRequests.length,\n        }))+\"\\n    \")])]},proxy:true},{key:\"error\",fn:function(){return [_c('span',[_c('gl-sprintf',{attrs:{\"message\":_vm.blockedByText},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('strong',[_vm._v(_vm._s(content))])]}}],null,false,3347598221)})],1)]},proxy:true}],null,false,1694530682)}):_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!./blocking_merge_requests_report.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!./blocking_merge_requests_report.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf } from '@gitlab/ui';\nimport { componentNames } from 'ee/ci/reports/components/issue_body';\nimport { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport mergeRequestQueryVariablesMixin from '~/vue_merge_request_widget/mixins/merge_request_query_variables';\nimport getStateSubscription from '~/vue_merge_request_widget/queries/get_state.subscription.graphql';\nimport { DETAILED_MERGE_STATUS } from '~/vue_merge_request_widget/constants';\nimport { STATUS_CLOSED, STATUS_MERGED } from '~/issues/constants';\nimport { n__, sprintf } from '~/locale';\nimport ReportSection from '~/ci/reports/components/report_section.vue';\nimport { status as reportStatus } from '~/ci/reports/constants';\nimport blockingMergeRequestsQuery from '../../queries/blocking_merge_requests.query.graphql';\n\nexport default {\n  name: 'BlockingMergeRequestsReport',\n  apollo: {\n    $subscribe: {\n      // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n      state: {\n        query: getStateSubscription,\n        skip() {\n          return !this.mr?.id;\n        },\n        variables() {\n          return {\n            issuableId: convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.mr?.id),\n          };\n        },\n        result({ data: { mergeRequestMergeStatusUpdated } }) {\n          if (\n            mergeRequestMergeStatusUpdated?.detailedMergeStatus ===\n            DETAILED_MERGE_STATUS.BLOCKED_STATUS\n          ) {\n            this.$apollo.queries.blockingMergeRequests.refetch();\n          }\n        },\n      },\n    },\n    blockingMergeRequests: {\n      query: blockingMergeRequestsQuery,\n      variables() {\n        return this.mergeRequestQueryVariables;\n      },\n      update: (data) => data.project?.mergeRequest?.blockingMergeRequests,\n    },\n  },\n  components: { ReportSection, GlSprintf },\n  mixins: [mergeRequestQueryVariablesMixin],\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      blockingMergeRequests: {},\n    };\n  },\n  computed: {\n    visibleMergeRequests() {\n      return this.blockingMergeRequests.visibleMergeRequests?.reduce((acc, mr) => {\n        if (!acc[mr.state]) acc[mr.state] = [];\n\n        acc[mr.state].push(mr);\n\n        return acc;\n      }, {});\n    },\n    shouldRenderBlockingMergeRequests() {\n      return this.blockingMergeRequests?.totalCount > 0;\n    },\n    openBlockingMergeRequests() {\n      return this.visibleMergeRequests.opened || [];\n    },\n    closedBlockingMergeRequests() {\n      return this.visibleMergeRequests.closed || [];\n    },\n    mergedBlockingMergeRequests() {\n      return this.visibleMergeRequests.merged || [];\n    },\n    unmergedBlockingMergeRequests() {\n      return Object.keys(this.visibleMergeRequests)\n        .filter((state) => state !== STATUS_MERGED)\n        .reduce(\n          (unmergedBlockingMRs, state) =>\n            state === STATUS_CLOSED\n              ? [...this.visibleMergeRequests[state], ...unmergedBlockingMRs]\n              : [...unmergedBlockingMRs, ...this.visibleMergeRequests[state]],\n          [],\n        );\n    },\n    unresolvedIssues() {\n      return this.blockingMergeRequests.hiddenCount > 0\n        ? [\n            { hiddenCount: this.blockingMergeRequests.hiddenCount },\n            ...this.unmergedBlockingMergeRequests,\n          ]\n        : this.unmergedBlockingMergeRequests;\n    },\n    isBlocked() {\n      return (\n        this.blockingMergeRequests.hiddenCount > 0 || this.unmergedBlockingMergeRequests.length > 0\n      );\n    },\n    closedCount() {\n      return this.closedBlockingMergeRequests.length;\n    },\n    unmergedCount() {\n      return this.unmergedBlockingMergeRequests.length + this.blockingMergeRequests.hiddenCount;\n    },\n    blockedByText() {\n      if (this.closedCount > 0 && this.closedCount === this.unmergedCount) {\n        return sprintf(\n          n__(\n            'Depends on %{strongStart}%{closedCount} closed%{strongEnd} merge request.',\n            'Depends on %{strongStart}%{closedCount} closed%{strongEnd} merge requests.',\n            this.closedCount,\n          ),\n          { closedCount: this.closedCount },\n        );\n      }\n\n      const mainText = n__(\n        'Depends on %d merge request being merged',\n        'Depends on %d merge requests being merged',\n        this.unmergedCount,\n      );\n\n      return this.closedCount > 0\n        ? `${mainText} %{strongStart}${n__(\n            '(%d closed)',\n            '(%d closed)',\n            this.closedCount,\n          )}%{strongEnd}`\n        : mainText;\n    },\n    status() {\n      return this.isBlocked ? reportStatus.ERROR : reportStatus.SUCCESS;\n    },\n  },\n  componentNames,\n};\n</script>\n\n<template>\n  <report-section\n    v-if=\"shouldRenderBlockingMergeRequests\"\n    class=\"mr-widget-border-top mr-report blocking-mrs-report\"\n    :status=\"status\"\n    :has-issues=\"true\"\n    :unresolved-issues=\"unresolvedIssues\"\n    :resolved-issues=\"mergedBlockingMergeRequests\"\n    :component=\"$options.componentNames.BlockingMergeRequestsBody\"\n    :show-report-section-status-icon=\"false\"\n    issues-ul-element-class=\"content-list\"\n    issues-list-container-class=\"p-0\"\n    issue-item-class=\"p-0\"\n  >\n    <template #success>\n      {{ __('All merge request dependencies have been merged') }}\n      <span class=\"gl-ml-1 gl-text-subtle\">\n        {{\n          sprintf(__('(%{mrCount} merged)'), {\n            mrCount: blockingMergeRequests.totalCount - unmergedBlockingMergeRequests.length,\n          })\n        }}\n      </span>\n    </template>\n    <template #error>\n      <span>\n        <gl-sprintf :message=\"blockedByText\">\n          <template #strong=\"{ content }\">\n            <strong>{{ content }}</strong>\n          </template>\n        </gl-sprintf>\n      </span>\n    </template>\n  </report-section>\n</template>\n","import { render, staticRenderFns } from \"./blocking_merge_requests_report.vue?vue&type=template&id=d01c2daa\"\nimport script from \"./blocking_merge_requests_report.vue?vue&type=script&lang=js\"\nexport * from \"./blocking_merge_requests_report.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"],"sourceRoot":""}