{"version":3,"sources":["webpack:///./ref/constants.js","webpack:///./contributors/utils.js","webpack:///./contributors/components/contributor_area_chart.vue","webpack:///./contributors/components/contributor_area_chart.vue?596b","webpack:///contributors/components/contributor_area_chart.vue","webpack:///./contributors/components/contributor_area_chart.vue?bc43","webpack:///./contributors/components/individual_chart.vue?bfc5","webpack:///contributors/components/individual_chart.vue","webpack:///./contributors/constants.js","webpack:///./contributors/components/individual_chart.vue?e812","webpack:///./contributors/components/individual_chart.vue","webpack:///contributors/components/contributors.vue","webpack:///./contributors/components/contributors.vue?847f","webpack:///./contributors/components/contributors.vue?fea7","webpack:///./contributors/components/contributors.vue","webpack:///./contributors/services/contributors_service.js","webpack:///./contributors/stores/mutation_types.js","webpack:///./contributors/stores/actions.js","webpack:///./contributors/stores/getters.js","webpack:///./contributors/stores/mutations.js","webpack:///./contributors/stores/index.js","webpack:///./contributors/stores/state.js","webpack:///./contributors/index.js","webpack:///./pages/projects/graphs/show/index.js","webpack:////build/source/node_modules/lodash/_arrayIncludesWith.js","webpack:///./ref/stores/mutation_types.js","webpack:///./ref/stores/actions.js","webpack:///./ref/stores/getters.js","webpack:///./ref/stores/mutations.js","webpack:///./ref/stores/index.js","webpack:///./ref/stores/state.js","webpack:////build/source/node_modules/lodash/_createSet.js","webpack:///./lib/utils/http_status.js","webpack:////build/source/node_modules/lodash/uniq.js","webpack:////build/source/node_modules/lodash/_baseUniq.js","webpack:///./ref/format_refs.js","webpack:///ref/components/ref_selector.vue","webpack:///./ref/components/ref_selector.vue?1e36","webpack:///./ref/components/ref_selector.vue?3221","webpack:///./ref/components/ref_selector.vue"],"names":["REF_TYPE_BRANCHES","REF_TYPE_TAGS","REF_TYPE_COMMITS","ALL_REF_TYPES","Object","freeze","BRANCH_REF_TYPE","TAG_REF_TYPE","TAG_REF_TYPE_ICON","BRANCH_REF_TYPE_ICON","REF_TYPE_PARAM_NAME","X_TOTAL_HEADER","SEARCH_DEBOUNCE_MS","DEFAULT_DEBOUNCE_AND_THROTTLE_MS","DEFAULT_I18N","defaultLabelText","__","dropdownHeader","searchPlaceholder","noResultsWithQuery","noResults","branchesErrorMessage","tagsErrorMessage","commitsErrorMessage","branches","tags","commits","noRefSelected","totalCountLabel","s__","xAxisLabelFormatter","val","date","Date","month","getUTCMonth","year","getUTCFullYear","getMonthNames","name","components","GlAreaChart","props","data","type","Array","required","option","height","Number","tooltipTitle","tooltipValue","computed","tooltipLabel","_this$option$yAxis","yAxis","methods","formatTooltipText","seriesData","dateTime","value","localeDateFormat","asDate","format","newDate","_vm","this","_c","_self","attrs","on","$event","$emit","scopedSlots","_u","key","fn","_v","_s","proxy","staticClass","INDIVIDUAL_CHART_HEIGHT","ContributorAreaChart","contributor","chartOptions","zoom","chart","hasZoom","startValue","endValue","_isNumber","commitCount","start","end","dates","filter","count","isInTimePeriod","map","reduce","acc","watch","syncChartZoom","onChartCreated","setOption","dataZoom","show","lazyUpdate","n__","email","$options","GRAPHS_PATH_REGEX","MASTER_CHART_HEIGHT","i18n","history","refSelectorTranslations","GlButton","GlLoadingIcon","IndividualChart","RefSelector","endpoint","String","branch","projectId","commitsPath","refTypes","masterChart","individualCharts","individualChartZoom","selectedBranch","mapState","mapGetters","masterChartData","_this","xAxisRange","forEach","parsedData","total","entries","masterChartOptions","getCommonChartOptions","grid","bottom","left","right","top","individualChartsData","_this2","keys","byAuthorEmail","author","sort","a","b","slice","individualChartOptions","max","individualChartYAxisMax","item","values","Math","firstContributionDate","lastContributionDate","length","getDatesInRange","toISODateFormat","charts","_uniq","mounted","fetchChartData","mapActions","isMasterChart","xAxis","axisLabel","formatter","showMaxLabel","showMinLabel","boundaryGap","splitNumber","minInterval","min","onMasterChartCreated","_this3","_debounce","getOption","visitBranch","selected","_this$endpoint$match","graphsPathPrefix","match","visitUrl","loading","showChart","model","callback","$$v","expression","_l","index","_e","axios","get","commit","service","then","res","catch","createAlert","message","state","Boolean","chartData","author_name","author_email","normalizedEmail","toLowerCase","authorData","assign","Vue","use","Vuex","createStore","defaultBranch","Store","actions","mutations","getters","el","document","querySelector","projectGraphPath","projectBranch","dataset","store","render","createElement","ContributorsGraphs","initContributorsGraphs","module","exports","array","comparator","setEnabledRefTypes","setParams","params","setUseSymbolicRefNames","useSymbolicRefNames","setProjectId","setSelectedRef","selectedRef","search","dispatch","query","dispatchIfRefTypeEnabled","refType","action","enabledRefTypes","includes","searchBranches","Api","response","error","finally","searchTags","searchCommits","isQueryPossiblyASha","test","isLoading","requestCount","matches","list","convertObjectPropsToCamelCase","undefined","default","protected","totalCount","parseInt","headers","shortId","id","subtitle","title","_error$response","status","HTTP_STATUS_NOT_FOUND","createRefModule","namespaced","Set","noop","setToArray","createSet","HTTP_STATUS_ABORTED","HTTP_STATUS_OK","HTTP_STATUS_CREATED","HTTP_STATUS_NO_CONTENT","HTTP_STATUS_BAD_REQUEST","HTTP_STATUS_UNAUTHORIZED","HTTP_STATUS_FORBIDDEN","HTTP_STATUS_CONFLICT","HTTP_STATUS_GONE","HTTP_STATUS_PAYLOAD_TOO_LARGE","HTTP_STATUS_UNPROCESSABLE_ENTITY","HTTP_STATUS_TOO_MANY_REQUESTS","HTTP_STATUS_INTERNAL_SERVER_ERROR","successCodes","baseUniq","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","iteratee","isCommon","result","seen","set","outer","seenIndex","push","convertToListBoxItems","items","text","GlBadge","GlIcon","GlCollapsibleListbox","ProtectedBadge","inheritAttrs","disabled","validator","_isArray","every","size","queryParams","translations","toggleButtonClass","lastQuery","listBoxItems","addToFinalResult","header","options","formatListBoxItems","extendedToggleButtonClass","classes","isArray","footerSlotProps","errors","errorsList","formatErrors","selectedRefForDisplay","replace","buttonText","noResultsMessage","sprintf","dropdownIcon","icon","immediate","handler","beforeCreate","$store","created","debouncedSearch","$watch","storeSearch","onSearchBoxInput","searchQuery","trim","selectRef","ref","totalCountText","component","_g","_b","group","_t","errorMessage","$attrs","$listeners","domProps"],"mappings":"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","file":"pages.projects.graphs.show.a2fa7618.chunk.js","sourcesContent":["import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport { s__, __ } from '~/locale';\n\nexport const REF_TYPE_BRANCHES = 'REF_TYPE_BRANCHES';\nexport const REF_TYPE_TAGS = 'REF_TYPE_TAGS';\nexport const REF_TYPE_COMMITS = 'REF_TYPE_COMMITS';\nexport const ALL_REF_TYPES = Object.freeze([REF_TYPE_BRANCHES, REF_TYPE_TAGS, REF_TYPE_COMMITS]);\nexport const BRANCH_REF_TYPE = 'heads';\nexport const TAG_REF_TYPE = 'tags';\nexport const TAG_REF_TYPE_ICON = 'tag';\nexport const BRANCH_REF_TYPE_ICON = 'branch';\nexport const SEARCH_ICON = 'search';\nexport const REF_TYPE_PARAM_NAME = 'ref_type';\n\nexport const X_TOTAL_HEADER = 'x-total';\n\nexport const SEARCH_DEBOUNCE_MS = DEFAULT_DEBOUNCE_AND_THROTTLE_MS;\n\nexport const DEFAULT_I18N = Object.freeze({\n defaultLabelText: __('default'),\n dropdownHeader: __('Select Git revision'),\n searchPlaceholder: __('Search by Git revision'),\n noResultsWithQuery: __('No matching results for \"%{query}\"'),\n noResults: __('No matching results'),\n branchesErrorMessage: __('An error occurred while fetching branches. Retry the search.'),\n tagsErrorMessage: __('An error occurred while fetching tags. Retry the search.'),\n commitsErrorMessage: __('An error occurred while fetching commits. Retry the search.'),\n branches: __('Branches'),\n tags: __('Tags'),\n commits: __('Commits'),\n noRefSelected: __('No ref selected'),\n totalCountLabel: s__('TotalRefCountIndicator|1000+'),\n});\n","import { getMonthNames } from '~/lib/utils/datetime_utility';\n\n/**\n * Converts provided string to date and returns formatted value as a year for date in January and month name for the rest\n * @param {String}\n * @returns {String} - formatted value\n *\n * xAxisLabelFormatter('01-12-2019') will return '2019'\n * xAxisLabelFormatter('02-12-2019') will return 'Feb'\n * xAxisLabelFormatter('07-12-2019') will return 'Jul'\n */\nexport const xAxisLabelFormatter = (val) => {\n const date = new Date(val);\n const month = date.getUTCMonth();\n const year = date.getUTCFullYear();\n return month === 0 ? `${year}` : getMonthNames(true)[month];\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-area-chart',{attrs:{\"responsive\":\"\",\"width\":\"auto\",\"data\":_vm.data,\"option\":_vm.option,\"height\":_vm.height,\"format-tooltip-text\":_vm.formatTooltipText},on:{\"created\":function($event){return _vm.$emit('created', $event)}},scopedSlots:_vm._u([{key:\"tooltip-title\",fn:function(){return [_c('div',{attrs:{\"data-testid\":\"tooltip-title\"}},[_vm._v(_vm._s(_vm.tooltipTitle))])]},proxy:true},{key:\"tooltip-content\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-justify-between gl-gap-6\"},[_c('span',{attrs:{\"data-testid\":\"tooltip-label\"}},[_vm._v(_vm._s(_vm.tooltipLabel))]),_vm._v(\" \"),_c('span',{attrs:{\"data-testid\":\"tooltip-value\"}},[_vm._v(_vm._s(_vm.tooltipValue))])])]},proxy:true}])})\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!./contributor_area_chart.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!./contributor_area_chart.vue?vue&type=script&lang=js\"","<script>\nimport { GlAreaChart } from '@gitlab/ui/dist/charts';\nimport { localeDateFormat, newDate } from '~/lib/utils/datetime_utility';\nimport { __ } from '~/locale';\n\nexport default {\n name: 'ContributorAreaChart',\n components: {\n GlAreaChart,\n },\n props: {\n data: {\n type: Array,\n required: true,\n },\n option: {\n type: Object,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n },\n data() {\n return {\n tooltipTitle: '',\n tooltipValue: [],\n };\n },\n computed: {\n tooltipLabel() {\n return this.option.yAxis?.name || __('Value');\n },\n },\n methods: {\n formatTooltipText({ seriesData }) {\n const [dateTime, value] = seriesData[0].data;\n this.tooltipTitle = localeDateFormat.asDate.format(newDate(dateTime));\n this.tooltipValue = value;\n },\n },\n};\n</script>\n\n<template>\n <gl-area-chart\n responsive\n width=\"auto\"\n :data=\"data\"\n :option=\"option\"\n :height=\"height\"\n :format-tooltip-text=\"formatTooltipText\"\n @created=\"$emit('created', $event)\"\n >\n <template #tooltip-title>\n <div data-testid=\"tooltip-title\">{{ tooltipTitle }}</div>\n </template>\n\n <template #tooltip-content>\n <div class=\"gl-flex gl-justify-between gl-gap-6\">\n <span data-testid=\"tooltip-label\">{{ tooltipLabel }}</span>\n <span data-testid=\"tooltip-value\">{{ tooltipValue }}</span>\n </div>\n </template>\n </gl-area-chart>\n</template>\n","import { render, staticRenderFns } from \"./contributor_area_chart.vue?vue&type=template&id=731d6a04\"\nimport script from \"./contributor_area_chart.vue?vue&type=script&lang=js\"\nexport * from \"./contributor_area_chart.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!./individual_chart.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!./individual_chart.vue?vue&type=script&lang=js\"","<script>\nimport { isNumber } from 'lodash';\nimport { isInTimePeriod } from '~/lib/utils/datetime/date_calculation_utility';\nimport { INDIVIDUAL_CHART_HEIGHT } from '../constants';\nimport ContributorAreaChart from './contributor_area_chart.vue';\n\nexport default {\n INDIVIDUAL_CHART_HEIGHT,\n components: {\n ContributorAreaChart,\n },\n props: {\n contributor: {\n type: Object,\n required: true,\n },\n chartOptions: {\n type: Object,\n required: true,\n },\n zoom: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n chart: null,\n };\n },\n computed: {\n hasZoom() {\n const { startValue, endValue } = this.zoom;\n return isNumber(startValue) && isNumber(endValue);\n },\n commitCount() {\n if (!this.hasZoom) return this.contributor.commits;\n\n const start = new Date(this.zoom.startValue);\n const end = new Date(this.zoom.endValue);\n\n return this.contributor.dates[0].data\n .filter(([date, count]) => count > 0 && isInTimePeriod(new Date(date), start, end))\n .map(([, count]) => count)\n .reduce((acc, count) => acc + count, 0);\n },\n },\n watch: {\n chart() {\n this.syncChartZoom();\n },\n zoom() {\n this.syncChartZoom();\n },\n },\n methods: {\n onChartCreated(chart) {\n this.chart = chart;\n },\n syncChartZoom() {\n if (!this.hasZoom || !this.chart) return;\n\n const { startValue, endValue } = this.zoom;\n this.chart.setOption(\n { dataZoom: { startValue, endValue, show: false } },\n { lazyUpdate: true },\n );\n },\n },\n};\n</script>\n\n<template>\n <div class=\"col-lg-6 col-12 gl-my-5\">\n <h4 class=\"gl-mb-2 gl-mt-0\" data-testid=\"chart-header\">{{ contributor.name }}</h4>\n <p class=\"gl-mb-3\" data-testid=\"commit-count\">\n {{ n__('%d commit', '%d commits', commitCount) }} ({{ contributor.email }})\n </p>\n <contributor-area-chart\n :data=\"contributor.dates\"\n :option=\"chartOptions\"\n :height=\"$options.INDIVIDUAL_CHART_HEIGHT\"\n @created=\"onChartCreated\"\n />\n </div>\n</template>\n","export const MASTER_CHART_HEIGHT = 264;\nexport const INDIVIDUAL_CHART_HEIGHT = 216;\n","import { render, staticRenderFns } from \"./individual_chart.vue?vue&type=template&id=2316ceba\"\nimport script from \"./individual_chart.vue?vue&type=script&lang=js\"\nexport * from \"./individual_chart.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:\"col-lg-6 col-12 gl-my-5\"},[_c('h4',{staticClass:\"gl-mb-2 gl-mt-0\",attrs:{\"data-testid\":\"chart-header\"}},[_vm._v(_vm._s(_vm.contributor.name))]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-3\",attrs:{\"data-testid\":\"commit-count\"}},[_vm._v(\"\\n \"+_vm._s(_vm.n__('%d commit', '%d commits', _vm.commitCount))+\" (\"+_vm._s(_vm.contributor.email)+\")\\n \")]),_vm._v(\" \"),_c('contributor-area-chart',{attrs:{\"data\":_vm.contributor.dates,\"option\":_vm.chartOptions,\"height\":_vm.$options.INDIVIDUAL_CHART_HEIGHT},on:{\"created\":_vm.onChartCreated}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport { GlButton, GlLoadingIcon } from '@gitlab/ui';\nimport { debounce, uniq } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapState, mapGetters } from 'vuex';\nimport { visitUrl } from '~/lib/utils/url_utility';\nimport { getDatesInRange, toISODateFormat } from '~/lib/utils/datetime_utility';\nimport { __ } from '~/locale';\nimport RefSelector from '~/ref/components/ref_selector.vue';\nimport { REF_TYPE_BRANCHES, REF_TYPE_TAGS } from '~/ref/constants';\nimport { xAxisLabelFormatter } from '../utils';\nimport { MASTER_CHART_HEIGHT } from '../constants';\nimport ContributorAreaChart from './contributor_area_chart.vue';\nimport IndividualChart from './individual_chart.vue';\n\nconst GRAPHS_PATH_REGEX = /^(.*?)\\/-\\/graphs/g;\n\nexport default {\n MASTER_CHART_HEIGHT,\n i18n: {\n history: __('History'),\n refSelectorTranslations: {\n dropdownHeader: __('Switch branch/tag'),\n searchPlaceholder: __('Search branches and tags'),\n },\n },\n components: {\n GlButton,\n GlLoadingIcon,\n ContributorAreaChart,\n IndividualChart,\n RefSelector,\n },\n props: {\n endpoint: {\n type: String,\n required: true,\n },\n branch: {\n type: String,\n required: true,\n },\n projectId: {\n type: String,\n required: true,\n },\n commitsPath: {\n type: String,\n required: true,\n },\n },\n refTypes: [REF_TYPE_BRANCHES, REF_TYPE_TAGS],\n data() {\n return {\n masterChart: null,\n individualCharts: [],\n individualChartZoom: {},\n selectedBranch: this.branch,\n };\n },\n computed: {\n ...mapState(['chartData', 'loading']),\n ...mapGetters(['showChart', 'parsedData']),\n masterChartData() {\n const data = {};\n this.xAxisRange.forEach((date) => {\n data[date] = this.parsedData.total[date] || 0;\n });\n return [\n {\n name: __('Commits'),\n data: Object.entries(data),\n },\n ];\n },\n masterChartOptions() {\n return {\n ...this.getCommonChartOptions(true),\n yAxis: {\n name: __('Number of commits'),\n },\n grid: {\n bottom: 64,\n left: 64,\n right: 20,\n top: 20,\n },\n };\n },\n individualChartsData() {\n const maxNumberOfIndividualContributorsCharts = 100;\n\n return Object.keys(this.parsedData.byAuthorEmail)\n .map((email) => {\n const author = this.parsedData.byAuthorEmail[email];\n return {\n name: author.name,\n email,\n commits: author.commits,\n dates: [\n {\n name: __('Commits'),\n data: this.xAxisRange.map((date) => [date, author.dates[date] || 0]),\n },\n ],\n };\n })\n .sort((a, b) => b.commits - a.commits)\n .slice(0, maxNumberOfIndividualContributorsCharts);\n },\n individualChartOptions() {\n return {\n ...this.getCommonChartOptions(false),\n yAxis: {\n name: __('Commits'),\n max: this.individualChartYAxisMax,\n },\n grid: {\n bottom: 27,\n left: 64,\n right: 20,\n top: 8,\n },\n };\n },\n individualChartYAxisMax() {\n return this.individualChartsData.reduce((acc, item) => {\n const values = item.dates[0].data.map((value) => value[1]);\n return Math.max(acc, ...values);\n }, 0);\n },\n xAxisRange() {\n const dates = Object.keys(this.parsedData.total).sort((a, b) => new Date(a) - new Date(b));\n\n const firstContributionDate = new Date(dates[0]);\n const lastContributionDate = new Date(dates[dates.length - 1]);\n\n return getDatesInRange(firstContributionDate, lastContributionDate, toISODateFormat);\n },\n firstContributionDate() {\n return this.xAxisRange[0];\n },\n lastContributionDate() {\n return this.xAxisRange[this.xAxisRange.length - 1];\n },\n charts() {\n return uniq(this.individualCharts);\n },\n },\n mounted() {\n this.fetchChartData(this.endpoint);\n },\n methods: {\n ...mapActions(['fetchChartData']),\n getCommonChartOptions(isMasterChart) {\n return {\n xAxis: {\n type: 'time',\n name: '',\n data: this.xAxisRange,\n axisLabel: {\n formatter: xAxisLabelFormatter,\n showMaxLabel: false,\n showMinLabel: false,\n },\n boundaryGap: false,\n splitNumber: isMasterChart ? 24 : 18,\n // 28 days\n minInterval: 28 * 86400 * 1000,\n min: this.firstContributionDate,\n max: this.lastContributionDate,\n },\n };\n },\n onMasterChartCreated(chart) {\n this.masterChart = chart;\n this.masterChart.setOption({\n dataZoom: [{ type: 'slider' }],\n });\n\n this.masterChart.on(\n 'datazoom',\n debounce(() => {\n const [{ startValue, endValue }] = this.masterChart.getOption().dataZoom;\n this.individualChartZoom = { startValue, endValue };\n }, 200),\n );\n },\n visitBranch(selected) {\n const graphsPathPrefix = this.endpoint.match(GRAPHS_PATH_REGEX)?.[0];\n\n visitUrl(`${graphsPathPrefix}/${selected}`);\n },\n },\n};\n</script>\n\n<template>\n <div>\n <div v-if=\"loading\" class=\"gl-pt-13 gl-text-center\">\n <gl-loading-icon :inline=\"true\" size=\"xl\" data-testid=\"loading-app-icon\" />\n </div>\n\n <template v-else-if=\"showChart\">\n <div class=\"gl-flex\">\n <div class=\"gl-mr-3\">\n <ref-selector\n v-model=\"selectedBranch\"\n :project-id=\"projectId\"\n :enabled-ref-types=\"$options.refTypes\"\n :translations=\"$options.i18n.refSelectorTranslations\"\n @input=\"visitBranch\"\n />\n </div>\n <gl-button :href=\"commitsPath\" data-testid=\"history-button\"\n >{{ $options.i18n.history }}\n </gl-button>\n </div>\n\n <h4 class=\"gl-mb-2 gl-mt-5\">\n {{ __('Commits to') }} <code>{{ branch }}</code>\n </h4>\n <span>{{ __('Excluding merge commits. Limited to 6,000 commits.') }}</span>\n <contributor-area-chart\n class=\"gl-mb-5\"\n :data=\"masterChartData\"\n :option=\"masterChartOptions\"\n :height=\"$options.MASTER_CHART_HEIGHT\"\n @created=\"onMasterChartCreated\"\n />\n\n <div class=\"row\">\n <individual-chart\n v-for=\"(contributor, index) in individualChartsData\"\n :key=\"index\"\n :contributor=\"contributor\"\n :chart-options=\"individualChartOptions\"\n :zoom=\"individualChartZoom\"\n />\n </div>\n </template>\n </div>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contributors.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!./contributors.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./contributors.vue?vue&type=template&id=17874264\"\nimport script from \"./contributors.vue?vue&type=script&lang=js\"\nexport * from \"./contributors.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.loading)?_c('div',{staticClass:\"gl-pt-13 gl-text-center\"},[_c('gl-loading-icon',{attrs:{\"inline\":true,\"size\":\"xl\",\"data-testid\":\"loading-app-icon\"}})],1):(_vm.showChart)?[_c('div',{staticClass:\"gl-flex\"},[_c('div',{staticClass:\"gl-mr-3\"},[_c('ref-selector',{attrs:{\"project-id\":_vm.projectId,\"enabled-ref-types\":_vm.$options.refTypes,\"translations\":_vm.$options.i18n.refSelectorTranslations},on:{\"input\":_vm.visitBranch},model:{value:(_vm.selectedBranch),callback:function ($$v) {_vm.selectedBranch=$$v},expression:\"selectedBranch\"}})],1),_vm._v(\" \"),_c('gl-button',{attrs:{\"href\":_vm.commitsPath,\"data-testid\":\"history-button\"}},[_vm._v(_vm._s(_vm.$options.i18n.history)+\"\\n \")])],1),_vm._v(\" \"),_c('h4',{staticClass:\"gl-mb-2 gl-mt-5\"},[_vm._v(\"\\n \"+_vm._s(_vm.__('Commits to'))+\" \"),_c('code',[_vm._v(_vm._s(_vm.branch))])]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.__('Excluding merge commits. Limited to 6,000 commits.')))]),_vm._v(\" \"),_c('contributor-area-chart',{staticClass:\"gl-mb-5\",attrs:{\"data\":_vm.masterChartData,\"option\":_vm.masterChartOptions,\"height\":_vm.$options.MASTER_CHART_HEIGHT},on:{\"created\":_vm.onMasterChartCreated}}),_vm._v(\" \"),_c('div',{staticClass:\"row\"},_vm._l((_vm.individualChartsData),function(contributor,index){return _c('individual-chart',{key:index,attrs:{\"contributor\":contributor,\"chart-options\":_vm.individualChartOptions,\"zoom\":_vm.individualChartZoom}})}),1)]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '~/lib/utils/axios_utils';\n\nexport default {\n fetchChartData(endpoint) {\n return axios.get(endpoint);\n },\n};\n","export const SET_CHART_DATA = 'SET_CHART_DATA';\nexport const SET_LOADING_STATE = 'SET_LOADING_STATE';\nexport const SET_ACTIVE_BRANCH = 'SET_ACTIVE_BRANCH';\n","import { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport service from '../services/contributors_service';\nimport * as types from './mutation_types';\n\nexport const fetchChartData = ({ commit }, endpoint) => {\n commit(types.SET_LOADING_STATE, true);\n\n return service\n .fetchChartData(endpoint)\n .then((res) => res.data)\n .then((data) => {\n commit(types.SET_CHART_DATA, data);\n commit(types.SET_LOADING_STATE, false);\n })\n .catch(() =>\n createAlert({\n message: __('An error occurred while loading chart data'),\n }),\n );\n};\n","export const showChart = (state) => Boolean(!state.loading && state.chartData);\n\nexport const parsedData = (state) => {\n const byAuthorEmail = {};\n const total = {};\n\n state.chartData.forEach(({ date, author_name: name, author_email: email }) => {\n total[date] = total[date] ? total[date] + 1 : 1;\n\n const normalizedEmail = email.toLowerCase();\n const authorData = byAuthorEmail[normalizedEmail];\n\n if (!authorData) {\n byAuthorEmail[normalizedEmail] = {\n name,\n commits: 1,\n dates: {\n [date]: 1,\n },\n };\n } else {\n authorData.commits += 1;\n authorData.dates[date] = authorData.dates[date] ? authorData.dates[date] + 1 : 1;\n }\n });\n\n return {\n total,\n byAuthorEmail,\n };\n};\n","import * as types from './mutation_types';\n\nexport default {\n [types.SET_LOADING_STATE](state, value) {\n state.loading = value;\n },\n [types.SET_CHART_DATA](state, chartData) {\n Object.assign(state, {\n chartData,\n });\n },\n [types.SET_ACTIVE_BRANCH](state, branch) {\n Object.assign(state, {\n branch,\n });\n },\n};\n","import Vue from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport Vuex from 'vuex';\nimport * as actions from './actions';\nimport * as getters from './getters';\nimport mutations from './mutations';\nimport state from './state';\n\nVue.use(Vuex);\n\nexport const createStore = (defaultBranch) =>\n new Vuex.Store({\n actions,\n mutations,\n getters,\n state: state(defaultBranch),\n });\n\nexport default createStore;\n","export default (branch) => ({\n loading: false,\n chartData: null,\n branch,\n});\n","import Vue from 'vue';\nimport ContributorsGraphs from './components/contributors.vue';\nimport { createStore } from './stores';\n\nexport default () => {\n const el = document.querySelector('.js-contributors-graph');\n\n if (!el) return null;\n\n const { projectGraphPath, projectBranch, defaultBranch, projectId, commitsPath } = el.dataset;\n const store = createStore(defaultBranch);\n\n return new Vue({\n el,\n store,\n render(createElement) {\n return createElement(ContributorsGraphs, {\n props: {\n endpoint: projectGraphPath,\n branch: projectBranch,\n projectId,\n commitsPath,\n },\n });\n },\n });\n};\n","import initContributorsGraphs from '~/contributors';\n\ninitContributorsGraphs();\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","export const SET_ENABLED_REF_TYPES = 'SET_ENABLED_REF_TYPES';\nexport const SET_USE_SYMBOLIC_REF_NAMES = 'SET_USE_SYMBOLIC_REF_NAMES';\nexport const SET_PARAMS = 'SET_PARAMS';\n\nexport const SET_PROJECT_ID = 'SET_PROJECT_ID';\nexport const SET_SELECTED_REF = 'SET_SELECTED_REF';\nexport const SET_QUERY = 'SET_QUERY';\n\nexport const REQUEST_START = 'REQUEST_START';\nexport const REQUEST_FINISH = 'REQUEST_FINISH';\n\nexport const RECEIVE_BRANCHES_SUCCESS = 'RECEIVE_BRANCHES_SUCCESS';\nexport const RECEIVE_BRANCHES_ERROR = 'RECEIVE_BRANCHES_ERROR';\n\nexport const RECEIVE_TAGS_SUCCESS = 'RECEIVE_TAGS_SUCCESS';\nexport const RECEIVE_TAGS_ERROR = 'RECEIVE_TAGS_ERROR';\n\nexport const RECEIVE_COMMITS_SUCCESS = 'RECEIVE_COMMITS_SUCCESS';\nexport const RECEIVE_COMMITS_ERROR = 'RECEIVE_COMMITS_ERROR';\nexport const RESET_COMMIT_MATCHES = 'RESET_COMMIT_MATCHES';\n","import Api from '~/api';\nimport { REF_TYPE_BRANCHES, REF_TYPE_TAGS, REF_TYPE_COMMITS } from '../constants';\nimport * as types from './mutation_types';\n\nexport const setEnabledRefTypes = ({ commit }, refTypes) =>\n commit(types.SET_ENABLED_REF_TYPES, refTypes);\n\nexport const setParams = ({ commit }, params) => commit(types.SET_PARAMS, params);\n\nexport const setUseSymbolicRefNames = ({ commit }, useSymbolicRefNames) =>\n commit(types.SET_USE_SYMBOLIC_REF_NAMES, useSymbolicRefNames);\n\nexport const setProjectId = ({ commit }, projectId) => commit(types.SET_PROJECT_ID, projectId);\n\nexport const setSelectedRef = ({ commit }, selectedRef) =>\n commit(types.SET_SELECTED_REF, selectedRef);\n\nexport const search = ({ state, dispatch, commit }, query) => {\n commit(types.SET_QUERY, query);\n\n const dispatchIfRefTypeEnabled = (refType, action) => {\n if (state.enabledRefTypes.includes(refType)) {\n dispatch(action);\n }\n };\n dispatchIfRefTypeEnabled(REF_TYPE_BRANCHES, 'searchBranches');\n dispatchIfRefTypeEnabled(REF_TYPE_TAGS, 'searchTags');\n dispatchIfRefTypeEnabled(REF_TYPE_COMMITS, 'searchCommits');\n};\n\nexport const searchBranches = ({ commit, state }) => {\n commit(types.REQUEST_START);\n\n Api.branches(state.projectId, state.query, state.params)\n .then((response) => {\n commit(types.RECEIVE_BRANCHES_SUCCESS, response);\n })\n .catch((error) => {\n commit(types.RECEIVE_BRANCHES_ERROR, error);\n })\n .finally(() => {\n commit(types.REQUEST_FINISH);\n });\n};\n\nexport const searchTags = ({ commit, state }) => {\n commit(types.REQUEST_START);\n\n Api.tags(state.projectId, state.query)\n .then((response) => {\n commit(types.RECEIVE_TAGS_SUCCESS, response);\n })\n .catch((error) => {\n commit(types.RECEIVE_TAGS_ERROR, error);\n })\n .finally(() => {\n commit(types.REQUEST_FINISH);\n });\n};\n\nexport const searchCommits = ({ commit, state, getters }) => {\n // Only query the Commit API if the search query looks like a commit SHA\n if (getters.isQueryPossiblyASha) {\n commit(types.REQUEST_START);\n\n Api.commit(state.projectId, state.query)\n .then((response) => {\n commit(types.RECEIVE_COMMITS_SUCCESS, response);\n })\n .catch((error) => {\n commit(types.RECEIVE_COMMITS_ERROR, error);\n })\n .finally(() => {\n commit(types.REQUEST_FINISH);\n });\n } else {\n commit(types.RESET_COMMIT_MATCHES);\n }\n};\n","/** Returns `true` if the query string looks like it could be a commit SHA */\nexport const isQueryPossiblyASha = ({ query }) => /^[0-9a-f]{4,40}$/i.test(query);\n\n/** Returns `true` if there is at least one in-progress request */\nexport const isLoading = ({ requestCount }) => requestCount > 0;\n","import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';\nimport { HTTP_STATUS_NOT_FOUND } from '~/lib/utils/http_status';\nimport { X_TOTAL_HEADER } from '../constants';\nimport * as types from './mutation_types';\n\nexport default {\n [types.SET_ENABLED_REF_TYPES](state, refTypes) {\n state.enabledRefTypes = refTypes;\n },\n [types.SET_USE_SYMBOLIC_REF_NAMES](state, useSymbolicRefNames) {\n state.useSymbolicRefNames = useSymbolicRefNames;\n },\n [types.SET_PARAMS](state, params) {\n state.params = params;\n },\n [types.SET_PROJECT_ID](state, projectId) {\n state.projectId = projectId;\n },\n [types.SET_SELECTED_REF](state, selectedRef) {\n state.selectedRef = selectedRef;\n },\n [types.SET_QUERY](state, query) {\n state.query = query;\n },\n\n [types.REQUEST_START](state) {\n state.requestCount += 1;\n },\n [types.REQUEST_FINISH](state) {\n state.requestCount -= 1;\n },\n\n [types.RECEIVE_BRANCHES_SUCCESS](state, response) {\n state.matches.branches = {\n list: convertObjectPropsToCamelCase(response.data).map((b) => ({\n name: b.name,\n value: state.useSymbolicRefNames ? `refs/heads/${b.name}` : undefined,\n default: b.default,\n protected: b.protected,\n })),\n totalCount: parseInt(response.headers[X_TOTAL_HEADER], 10),\n error: null,\n };\n },\n [types.RECEIVE_BRANCHES_ERROR](state, error) {\n state.matches.branches = {\n list: [],\n totalCount: 0,\n error,\n };\n },\n\n [types.RECEIVE_TAGS_SUCCESS](state, response) {\n state.matches.tags = {\n list: convertObjectPropsToCamelCase(response.data).map((b) => ({\n name: b.name,\n value: state.useSymbolicRefNames ? `refs/tags/${b.name}` : undefined,\n protected: b.protected,\n })),\n totalCount: parseInt(response.headers[X_TOTAL_HEADER], 10),\n error: null,\n };\n },\n [types.RECEIVE_TAGS_ERROR](state, error) {\n state.matches.tags = {\n list: [],\n totalCount: 0,\n error,\n };\n },\n\n [types.RECEIVE_COMMITS_SUCCESS](state, response) {\n const commit = convertObjectPropsToCamelCase(response.data);\n\n state.matches.commits = {\n list: [\n {\n name: commit.shortId,\n value: commit.id,\n subtitle: commit.title,\n },\n ],\n totalCount: 1,\n error: null,\n };\n },\n [types.RECEIVE_COMMITS_ERROR](state, error) {\n state.matches.commits = {\n list: [],\n totalCount: 0,\n\n // 404's are expected when the search query doesn't match any commits\n // and shouldn't be treated as an actual error\n error: error.response?.status !== HTTP_STATUS_NOT_FOUND ? error : null,\n };\n },\n [types.RESET_COMMIT_MATCHES](state) {\n state.matches.commits = {\n list: [],\n totalCount: 0,\n error: null,\n };\n },\n};\n","import Vue from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport Vuex from 'vuex';\nimport * as actions from './actions';\nimport * as getters from './getters';\nimport mutations from './mutations';\nimport createState from './state';\n\nVue.use(Vuex);\n\nexport default () =>\n new Vuex.Store({\n actions,\n getters,\n mutations,\n state: createState(),\n });\n\nexport const createRefModule = () => ({\n namespaced: true,\n actions,\n getters,\n mutations,\n state: createState(),\n});\n","const createRefTypeState = () => ({\n list: [],\n totalCount: 0,\n error: null,\n});\n\nexport default () => ({\n enabledRefTypes: [],\n projectId: null,\n\n query: '',\n matches: {\n branches: createRefTypeState(),\n tags: createRefTypeState(),\n commits: createRefTypeState(),\n },\n selectedRef: null,\n params: null,\n requestCount: 0,\n});\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","export const HTTP_STATUS_ABORTED = 0;\nexport const HTTP_STATUS_OK = 200;\nexport const HTTP_STATUS_CREATED = 201;\nexport const HTTP_STATUS_ACCEPTED = 202;\nexport const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203;\nexport const HTTP_STATUS_NO_CONTENT = 204;\nexport const HTTP_STATUS_RESET_CONTENT = 205;\nexport const HTTP_STATUS_PARTIAL_CONTENT = 206;\nexport const HTTP_STATUS_MULTI_STATUS = 207;\nexport const HTTP_STATUS_ALREADY_REPORTED = 208;\nexport const HTTP_STATUS_IM_USED = 226;\nexport const HTTP_STATUS_BAD_REQUEST = 400;\nexport const HTTP_STATUS_UNAUTHORIZED = 401;\nexport const HTTP_STATUS_FORBIDDEN = 403;\nexport const HTTP_STATUS_NOT_FOUND = 404;\nexport const HTTP_STATUS_METHOD_NOT_ALLOWED = 405;\nexport const HTTP_STATUS_CONFLICT = 409;\nexport const HTTP_STATUS_GONE = 410;\nexport const HTTP_STATUS_PAYLOAD_TOO_LARGE = 413;\nexport const HTTP_STATUS_IM_A_TEAPOT = 418;\nexport const HTTP_STATUS_UNPROCESSABLE_ENTITY = 422;\nexport const HTTP_STATUS_TOO_MANY_REQUESTS = 429;\nexport const HTTP_STATUS_INTERNAL_SERVER_ERROR = 500;\nexport const HTTP_STATUS_SERVICE_UNAVAILABLE = 503;\n\nexport const successCodes = [\n HTTP_STATUS_OK,\n HTTP_STATUS_CREATED,\n HTTP_STATUS_ACCEPTED,\n HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION,\n HTTP_STATUS_NO_CONTENT,\n HTTP_STATUS_RESET_CONTENT,\n HTTP_STATUS_PARTIAL_CONTENT,\n HTTP_STATUS_MULTI_STATUS,\n HTTP_STATUS_ALREADY_REPORTED,\n HTTP_STATUS_IM_USED,\n];\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","import { DEFAULT_I18N } from './constants';\n\nfunction convertToListBoxItems(items) {\n return items.map((item) => ({\n text: item.name,\n value: item.value || item.name,\n protected: item.protected,\n default: item.default,\n }));\n}\n\n/**\n * Format multiple lists to array of group options for listbox\n * @param branches list of branches\n * @param tags list of tags\n * @param commits list of commits\n * @returns {*[]} array of group items with header and options\n */\nexport const formatListBoxItems = (branches, tags, commits) => {\n const listBoxItems = [];\n\n const addToFinalResult = (items, header) => {\n if (items && items.length > 0) {\n listBoxItems.push({\n text: header,\n options: convertToListBoxItems(items),\n });\n }\n };\n\n addToFinalResult(branches, DEFAULT_I18N.branches);\n addToFinalResult(tags, DEFAULT_I18N.tags);\n addToFinalResult(commits, DEFAULT_I18N.commits);\n\n return listBoxItems;\n};\n\n/**\n * Check error existence and add to final array\n * @param branches list of branches\n * @param tags list of tags\n * @param commits list of commits\n * @returns {*[]} array of error messages\n */\nexport const formatErrors = (branches, tags, commits) => {\n const errorsList = [];\n\n if (branches && branches.error) {\n errorsList.push(DEFAULT_I18N.branchesErrorMessage);\n }\n\n if (tags && tags.error) {\n errorsList.push(DEFAULT_I18N.tagsErrorMessage);\n }\n\n if (commits && commits.error) {\n errorsList.push(DEFAULT_I18N.commitsErrorMessage);\n }\n\n return errorsList;\n};\n","<script>\nimport { GlBadge, GlIcon, GlCollapsibleListbox } from '@gitlab/ui';\nimport { debounce, isArray } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport { sprintf } from '~/locale';\nimport ProtectedBadge from '~/vue_shared/components/badges/protected_badge.vue';\nimport {\n ALL_REF_TYPES,\n SEARCH_DEBOUNCE_MS,\n DEFAULT_I18N,\n REF_TYPE_BRANCHES,\n REF_TYPE_TAGS,\n REF_TYPE_COMMITS,\n TAG_REF_TYPE,\n BRANCH_REF_TYPE,\n TAG_REF_TYPE_ICON,\n BRANCH_REF_TYPE_ICON,\n} from '../constants';\nimport createStore from '../stores';\nimport { formatListBoxItems, formatErrors } from '../format_refs';\n\nexport default {\n name: 'RefSelector',\n components: {\n GlBadge,\n GlIcon,\n GlCollapsibleListbox,\n ProtectedBadge,\n },\n inheritAttrs: false,\n props: {\n disabled: {\n type: Boolean,\n required: false,\n default: false,\n },\n enabledRefTypes: {\n type: Array,\n required: false,\n default: () => ALL_REF_TYPES,\n validator: (val) =>\n // It has to be an array\n isArray(val) &&\n // with at least one item\n val.length > 0 &&\n // and only \"REF_TYPE_BRANCHES\", \"REF_TYPE_TAGS\", and \"REF_TYPE_COMMITS\" are allowed\n val.every((item) => ALL_REF_TYPES.includes(item)) &&\n // and no duplicates are allowed\n val.length === new Set(val).size,\n },\n value: {\n type: String,\n required: false,\n default: '',\n },\n queryParams: {\n type: Object,\n required: false,\n default: () => {},\n },\n projectId: {\n type: String,\n required: true,\n },\n translations: {\n type: Object,\n required: false,\n default: () => ({}),\n },\n useSymbolicRefNames: {\n type: Boolean,\n required: false,\n default: false,\n },\n\n /** The validation state of this component. */\n state: {\n type: Boolean,\n required: false,\n default: true,\n },\n\n /* Underlying form field name for scenarios where ref_selector\n * is used as part of submitting an HTML form\n */\n name: {\n type: String,\n required: false,\n default: '',\n },\n toggleButtonClass: {\n type: [String, Object, Array],\n required: false,\n default: null,\n },\n },\n data() {\n return {\n query: '',\n };\n },\n computed: {\n ...mapState({\n matches: (state) => state.matches,\n lastQuery: (state) => state.query,\n selectedRef: (state) => state.selectedRef,\n params: (state) => state.params,\n }),\n ...mapGetters(['isLoading', 'isQueryPossiblyASha']),\n i18n() {\n return {\n ...DEFAULT_I18N,\n ...this.translations,\n };\n },\n listBoxItems() {\n return formatListBoxItems(this.branches, this.tags, this.commits);\n },\n branches() {\n return this.enabledRefTypes.includes(REF_TYPE_BRANCHES) ? this.matches.branches.list : [];\n },\n tags() {\n return this.enabledRefTypes.includes(REF_TYPE_TAGS) ? this.matches.tags.list : [];\n },\n commits() {\n return this.enabledRefTypes.includes(REF_TYPE_COMMITS) ? this.matches.commits.list : [];\n },\n extendedToggleButtonClass() {\n const classes = [\n {\n '!gl-shadow-inner-1-red-500': !this.state,\n 'gl-font-monospace': Boolean(this.selectedRef),\n },\n 'gl-mb-0',\n ];\n\n if (Array.isArray(this.toggleButtonClass)) {\n classes.push(...this.toggleButtonClass);\n } else {\n classes.push(this.toggleButtonClass);\n }\n\n return classes;\n },\n footerSlotProps() {\n return {\n isLoading: this.isLoading,\n matches: this.matches,\n query: this.lastQuery,\n };\n },\n errors() {\n return formatErrors(this.matches.branches, this.matches.tags, this.matches.commits);\n },\n selectedRefForDisplay() {\n if (this.useSymbolicRefNames && this.selectedRef) {\n return this.selectedRef.replace(/^refs\\/(tags|heads)\\//, '');\n }\n\n return this.selectedRef;\n },\n buttonText() {\n return this.selectedRefForDisplay || this.i18n.noRefSelected;\n },\n noResultsMessage() {\n return this.lastQuery\n ? sprintf(this.i18n.noResultsWithQuery, {\n query: this.lastQuery,\n })\n : this.i18n.noResults;\n },\n dropdownIcon() {\n let icon;\n\n if (this.selectedRef.includes(`refs/${TAG_REF_TYPE}`)) {\n icon = TAG_REF_TYPE_ICON;\n } else if (this.selectedRef.includes(`refs/${BRANCH_REF_TYPE}`)) {\n icon = BRANCH_REF_TYPE_ICON;\n }\n\n return icon;\n },\n },\n watch: {\n // Keep the Vuex store synchronized if the parent\n // component updates the selected ref through v-model\n value: {\n immediate: true,\n handler() {\n if (this.value !== this.selectedRef) {\n this.setSelectedRef(this.value);\n }\n },\n },\n },\n beforeCreate() {\n // Setting the store here instead of using\n // the built in `store` component option because\n // we need each new `RefSelector` instance to\n // create a new Vuex store instance.\n // See https://github.com/vuejs/vuex/issues/414#issue-184491718.\n this.$store = createStore();\n },\n created() {\n // This method is defined here instead of in `methods`\n // because we need to access the .cancel() method\n // lodash attaches to the function, which is\n // made inaccessible by Vue.\n this.debouncedSearch = debounce(this.search, SEARCH_DEBOUNCE_MS);\n\n this.setProjectId(this.projectId);\n this.setParams(this.queryParams);\n\n this.$watch(\n 'enabledRefTypes',\n () => {\n this.setEnabledRefTypes(this.enabledRefTypes);\n this.search();\n },\n { immediate: true },\n );\n\n this.$watch(\n 'useSymbolicRefNames',\n () => this.setUseSymbolicRefNames(this.useSymbolicRefNames),\n { immediate: true },\n );\n },\n methods: {\n ...mapActions([\n 'setEnabledRefTypes',\n 'setUseSymbolicRefNames',\n 'setParams',\n 'setProjectId',\n 'setSelectedRef',\n ]),\n ...mapActions({ storeSearch: 'search' }),\n onSearchBoxInput(searchQuery = '') {\n this.query = searchQuery?.trim();\n this.debouncedSearch();\n },\n selectRef(ref) {\n if (this.disabled) {\n return;\n }\n\n this.setSelectedRef(ref);\n this.$emit('input', this.selectedRef);\n },\n search() {\n this.storeSearch(this.query);\n },\n totalCountText(count) {\n return count > 999 ? this.i18n.totalCountLabel : `${count}`;\n },\n },\n};\n</script>\n\n<template>\n <div>\n <gl-collapsible-listbox\n class=\"ref-selector gl-w-full\"\n block\n searchable\n :selected=\"selectedRef\"\n :header-text=\"i18n.dropdownHeader\"\n :items=\"listBoxItems\"\n :no-results-text=\"noResultsMessage\"\n :searching=\"isLoading\"\n :search-placeholder=\"i18n.searchPlaceholder\"\n :toggle-class=\"extendedToggleButtonClass\"\n :toggle-text=\"buttonText\"\n :icon=\"dropdownIcon\"\n :disabled=\"disabled\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n @hidden=\"$emit('hide')\"\n @search=\"onSearchBoxInput\"\n @select=\"selectRef\"\n >\n <template #group-label=\"{ group }\">\n {{ group.text }} <gl-badge>{{ totalCountText(group.options.length) }}</gl-badge>\n </template>\n <template #list-item=\"{ item }\">\n {{ item.text }}\n <gl-badge v-if=\"item.default\" variant=\"info\">{{ i18n.defaultLabelText }}</gl-badge>\n <protected-badge v-if=\"item.protected\" />\n </template>\n <template #footer>\n <slot name=\"footer\" v-bind=\"footerSlotProps\"></slot>\n <div\n v-for=\"errorMessage in errors\"\n :key=\"errorMessage\"\n data-testid=\"red-selector-error-list\"\n class=\"gl-mx-4 gl-my-3 gl-flex gl-items-start gl-text-red-500\"\n >\n <gl-icon name=\"error\" class=\"gl-mr-2 gl-mt-2 gl-shrink-0\" />\n <span>{{ errorMessage }}</span>\n </div>\n </template>\n </gl-collapsible-listbox>\n <input\n v-if=\"name\"\n data-testid=\"selected-ref-form-field\"\n type=\"hidden\"\n :value=\"selectedRef\"\n :name=\"name\"\n />\n </div>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ref_selector.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!./ref_selector.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ref_selector.vue?vue&type=template&id=02d8f25e\"\nimport script from \"./ref_selector.vue?vue&type=script&lang=js\"\nexport * from \"./ref_selector.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',[_c('gl-collapsible-listbox',_vm._g(_vm._b({staticClass:\"ref-selector gl-w-full\",attrs:{\"block\":\"\",\"searchable\":\"\",\"selected\":_vm.selectedRef,\"header-text\":_vm.i18n.dropdownHeader,\"items\":_vm.listBoxItems,\"no-results-text\":_vm.noResultsMessage,\"searching\":_vm.isLoading,\"search-placeholder\":_vm.i18n.searchPlaceholder,\"toggle-class\":_vm.extendedToggleButtonClass,\"toggle-text\":_vm.buttonText,\"icon\":_vm.dropdownIcon,\"disabled\":_vm.disabled},on:{\"hidden\":function($event){return _vm.$emit('hide')},\"search\":_vm.onSearchBoxInput,\"select\":_vm.selectRef},scopedSlots:_vm._u([{key:\"group-label\",fn:function({ group }){return [_vm._v(\"\\n \"+_vm._s(group.text)+\" \"),_c('gl-badge',[_vm._v(_vm._s(_vm.totalCountText(group.options.length)))])]}},{key:\"list-item\",fn:function({ item }){return [_vm._v(\"\\n \"+_vm._s(item.text)+\"\\n \"),(item.default)?_c('gl-badge',{attrs:{\"variant\":\"info\"}},[_vm._v(_vm._s(_vm.i18n.defaultLabelText))]):_vm._e(),_vm._v(\" \"),(item.protected)?_c('protected-badge'):_vm._e()]}},{key:\"footer\",fn:function(){return [_vm._t(\"footer\",null,null,_vm.footerSlotProps),_vm._v(\" \"),_vm._l((_vm.errors),function(errorMessage){return _c('div',{key:errorMessage,staticClass:\"gl-mx-4 gl-my-3 gl-flex gl-items-start gl-text-red-500\",attrs:{\"data-testid\":\"red-selector-error-list\"}},[_c('gl-icon',{staticClass:\"gl-mr-2 gl-mt-2 gl-shrink-0\",attrs:{\"name\":\"error\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(errorMessage))])],1)})]},proxy:true}],null,true)},'gl-collapsible-listbox',_vm.$attrs,false),_vm.$listeners)),_vm._v(\" \"),(_vm.name)?_c('input',{attrs:{\"data-testid\":\"selected-ref-form-field\",\"type\":\"hidden\",\"name\":_vm.name},domProps:{\"value\":_vm.selectedRef}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"sourceRoot":""}