{"version":3,"sources":["webpack:////build/source/node_modules/@gitlab/ui/dist/components/charts/column/column.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/shared_components/clear_icon_button/clear_icon_button.js","webpack:////build/source/node_modules/lodash/clamp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/utils.js","webpack:////build/source/node_modules/lodash/isNil.js","webpack:////build/source/node_modules/lodash/_baseClamp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/charts/line/line.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/charts/stacked_column/stacked_column.js","webpack:///projects/pipelines/charts/components/statistics_list.vue","webpack:///./projects/pipelines/charts/components/statistics_list.vue?7f11","webpack:///./projects/pipelines/charts/components/statistics_list.vue?8cc2","webpack:///./projects/pipelines/charts/components/statistics_list.vue","webpack:///projects/pipelines/charts/components/pipelines_dashboard.vue","webpack:///./projects/pipelines/charts/components/pipelines_dashboard.vue?d343","webpack:///./projects/pipelines/charts/constants.js","webpack:///./projects/pipelines/charts/components/pipelines_dashboard.vue?62a0","webpack:///./projects/pipelines/charts/components/pipelines_dashboard.vue","webpack:///./projects/pipelines/charts/components/pipeline_duration_chart.vue?2d25","webpack:///projects/pipelines/charts/components/pipeline_duration_chart.vue","webpack:///./projects/pipelines/charts/components/pipeline_duration_chart.vue?53a4","webpack:///./projects/pipelines/charts/components/pipeline_duration_chart.vue","webpack:///./projects/pipelines/charts/components/pipeline_status_chart.vue?e1f4","webpack:///projects/pipelines/charts/components/pipeline_status_chart.vue","webpack:///./projects/pipelines/charts/components/pipeline_status_chart.vue?4c44","webpack:///./projects/pipelines/charts/components/pipeline_status_chart.vue","webpack:///./projects/pipelines/charts/components/pipelines_dashboard_clickhouse.vue?d085","webpack:///projects/pipelines/charts/components/pipelines_dashboard_clickhouse.vue","webpack:///./projects/pipelines/charts/components/pipelines_dashboard_clickhouse.vue?2349","webpack:///./projects/pipelines/charts/components/pipelines_dashboard_clickhouse.vue","webpack:///projects/pipelines/charts/components/app.vue","webpack:///./projects/pipelines/charts/components/app.vue?6d5d","webpack:///./projects/pipelines/charts/components/app.vue?f27e","webpack:///./projects/pipelines/charts/components/app.vue","webpack:///./projects/pipelines/charts/index.js","webpack:///./pages/projects/pipelines/charts/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/directives/outside/outside.js","webpack:///./projects/pipelines/charts/graphql/queries/get_pipeline_count_by_status.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/constants.js","webpack:///./projects/pipelines/charts/graphql/queries/get_project_pipeline_statistics.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_search_input.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/intersection_observer/intersection_observer.js","webpack:///./lib/utils/unit_format/formatter_factory.js","webpack:///./lib/utils/unit_format/index.js","webpack:///./projects/pipelines/charts/graphql/queries/get_pipeline_analytics.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_type/search_box_by_type.js","webpack:////build/source/node_modules/@gitlab/ui/src/utils/number_utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_item.js"],"names":["yAxisDefaults","nameLocation","axisTick","show","__vue_script__","name","components","Chart","ChartTooltip","inheritAttrs","props","bars","type","Array","required","default","lines","secondaryData","option","Object","yAxisTitle","String","secondaryDataTitle","xAxisTitle","xAxisType","validator","value","indexOf","height","Number","data","chart","computed","Boolean","this","length","map","_ref","index","stack","color","offset","_ref2","_ref3","tiled","yAxisIndex","barSeries","lineSeries","secondarySeries","yAxisPrimary","mergedOptions","grid","hasSecondaryAxis","xAxis","boundaryGap","axisLabel","margin","verticalAlign","axisLine","axisPointer","yAxis","legend","dataZoom","series","methods","$emit","HEIGHT_AUTO_CLASSES","__vue_component__","render","_obj","_vm","_h","$createElement","_c","_self","staticClass","class","$options","autoHeight","_g","_b","attrs","options","on","onCreated","$attrs","$listeners","_v","ref","scopedSlots","_u","$scopedSlots","key","fn","scope","_t","_e","staticRenderFns","undefined","GlButton","directives","GlTooltip","title","tooltipContainer","HTMLElement","rawName","container","expression","modifiers","baseClamp","toNumber","module","exports","number","lower","upper","isOption","item","isGroup","arguments","isArray","every","hasNoDuplicates","array","Set","size","flattenedOptions","items","flatMap","itemsValidator","isAllOptionsOrAllGroups","hasUniqueValues","filter","text","hasUniqueGroups","ChartLegend","thresholds","annotations","includeLegendAvgMax","formatTooltipText","Function","legendAverageText","legendMaxText","legendMinText","legendCurrentText","legendLayout","layout","showLegend","showAnnotationsTooltip","annotationsTooltipTitle","annotationsTooltipContent","annotationsTooltipPosition","left","top","dataSeries","defaultColor","getColor","_series$type$color","_series$type","showSymbol","lineStyle","itemStyle","annotationSeries","defaultLineChartOptions","label","formatter","alignWithLabel","hasAnnotations","getOption","legendStyle","paddingLeft","compiledOptions","reduce","acc","push","off","onChartDataPointMouseOut","onChartDataPointMouseOver","params","_params$data$tooltipD","content","tooltipData","event","toolTipFormatter","formatAnnotationsTooltipText","defaultAnnotationTooltipText","zrX","zrY","_s","proxy","style","seriesInfo","textStyle","TooltipDefaultFormat","presentation","groupBy","seriesNames","customPalette","_this$customPalette","_ref4","_options$xAxis","_options$xAxis$","titleAxisName","_ref5","tooltipContentEntries","seriesData","toSorted","a","b","seriesIndex","_ref6","seriesName","borderColor","fromEntries","getTooltipTitle","getTooltipContent","valueScope","GlLink","GlSingleStat","GlSkeletonLoader","inject","failedPipelinesLink","counts","loading","statistics","formatPercent","getFormatter","SUPPORTED_FORMATS","percentHundred","s__","identifier","formatNumber","total","failureRatio","link","successRatio","medianDuration","splice","formatTimeSpent","shouldDisplayLink","statistic","_l","unit","defaultAnalyticsValues","weekPipelinesTotals","weekPipelinesLabels","weekPipelinesSuccessful","monthPipelinesLabels","monthPipelinesTotals","monthPipelinesSuccessful","yearPipelinesLabels","yearPipelinesTotals","yearPipelinesSuccessful","pipelineTimesLabels","pipelineTimesValues","defaultCountValues","totalPipelines","count","successfulPipelines","GlAlert","GlColumnChart","GlChartSeriesLabel","DashboardHeader","StatisticsList","CiCdAnalyticsCharts","projectPath","showFailureAlert","failureType","analytics","tooltipTitle","tooltipContent","apollo","query","getPipelineCountByStatus","variables","update","project","error","reportFailure","getProjectPipelineStatistics","_data$project","pipelineAnalytics","$apollo","queries","failure","errorTexts","variant","lastWeekChartData","labels","totals","success","lastMonthChartData","lastYearChartData","timesChartData","values","successfulCount","totalCount","failedPipelines","failedCount","formattedCounts","areaCharts","lastWeek","lastMonth","lastYear","chartTitles","lastWeekRange","lastMonthRange","lastYearRange","chartRanges","charts","range","areaChartsData","buildAreaChartData","timesChartTransformedData","mergeLabelsAndValues","chartOptions","timesChartOptions","hideAlert","areaStyle","successColor","seriesId","metric","chartContainerHeight","rotate","nameGap","areaChartOptions","minInterval","__","today","Date","pastDate","timeScale","getDateInPast","localeDateFormat","asDate","formatRange","GlLoadingIcon","GlLineChart","timeSeries","durationSeries","forEach","durationStatistics","p50","p95","formatDate","isoDateStr","format","formatDuration","seconds","stringifyTime","parseSeconds","daysPerWeek","hoursPerDay","lineChartOptions","GlStackedColumnChart","successCount","otherCount","palette","DATA_VIZ_GREEN_500","DATA_VIZ_MAGENTA_600","DATA_VIZ_BLUE_500","GlCollapsibleListbox","GlFormGroup","PipelineDurationChart","PipelineStatusChart","dateRange","aggregate","getPipelineAnalytics","setUTCHours","fullPath","fromTime","toTime","createAlert","message","dateRangeItems","model","callback","$$v","GlTabs","GlTab","mixins","InternalEvents","mixin","glFeatureFlagsMixin","shouldRenderDoraCharts","shouldRenderQualitySummary","_this$glFeatures","tabs","componentIs","glFeatures","ciImprovedProjectPipelineAnalytics","PipelinesDashboardClickhouse","PipelinesDashboard","lazy","activeTabIndex","created","syncActiveTab","window","addEventListener","_getParameterValues","paramValue","getParameterValues","selectedIndex","tab","onTabInput","path","mergeUrlParams","location","pathname","updateHistory","url","$event","trackEvent","tag","Vue","use","VueApollo","apolloProvider","defaultClient","createDefaultClient","el","document","querySelector","projectId","coverageChartPath","defaultBranch","testRunsEmptyStateImagePath","projectQualitySummaryFeedbackImagePath","dataset","parseBoolean","contextId","convertToGraphQLId","TYPENAME_PROJECT","ProjectPipelinesCharts","provide","createElement","mountPipelineChartsApp","initProjectPipelinesChartsApp","callbacks","Map","activeEventTypes","lastMousedown","globalListener","element","eventTypes","originalEvent","contains","target","includes","e","onMousedown","OutsideDirective","bind","bindings","arg","modifiersList","keys","parseBinding","has","set","eventType","capture","add","startListening","unbind","entry","get","eventTypesToUnbind","delete","removeEventListener","doc","loc","source","definitionRefs","findOperation","i","definitions","def","refs","collectFragmentReferences","node","kind","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","childRef","op","oneQuery","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","ARROW_DOWN","ARROW_UP","END","ENTER","HOME","SPACE","POSITION_ABSOLUTE","POSITION_FIXED","GL_DROPDOWN_CONTENTS_CLASS","GlClearIconButton","GlIcon","prop","placeholder","input","focusInput","$refs","focus","domProps","inputListeners","stopPropagation","clearInput","apply","textSrOnly","nameId","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","events","GlBaseDropdown","GlListboxItem","GlListboxGroup","GlSearchBoxByType","GlListboxSearchInput","GlIntersectionObserver","selected","multiple","toggleText","headerText","category","primary","icon","disabled","toggleClass","noCaret","placement","isCheckCentered","toggleAriaLabelledBy","listAriaLabelledBy","searchable","searching","infiniteScroll","totalItems","infiniteScrollLoading","noResultsText","searchPlaceholder","resetButtonLabel","showSelectAllButtonLabel","block","dropdownOffset","fluidWidth","positioningStrategy","strategy","startOpened","srOnlyResultsLabel","selectedValues","toggleId","listboxId","nextFocusedItemIndex","searchStr","topBoundaryVisible","bottomBoundaryVisible","hasItems","listboxTag","_this$flattenedOption","find","findIndex","sort","showNoResultsText","showSelectAllButton","toggle","toggleClasses","hasSelection","footer","watch","immediate","newSelected","$nextTick","observeScroll","searchHasOptions","open","_this$scrollObserver","scrollObserver","disconnect","baseDropdown","close","groupClasses","_this$selectedIndices","focusSearchInput","focusItem","selectedIndices","getFocusableListItemElements","code","elements","stop","isSearchInput","matches","focusNextItem","onSelect","_this$$refs$list","list","querySelectorAll","from","currentIndex","nextIndex","_elements$index","searchBox","isSelected","onMultiSelect","onSingleSelect","some","closeAndFocus","selectedValue","searchTerm","_this$scrollObserver2","rootMargin","root","threshold","observer","IntersectionObserver","entries","_entry$target","$__visibilityProp","isIntersecting","topBoundary","bottomBoundary","observe","listboxToggleText","toggleButtonClasses","_d","onShow","onHide","headerId","onResetButtonClicked","onSelectAllButtonClicked","search","_k","keyCode","preventDefault","onKeydown","listboxClasses","itemTag","hasHeader","isHighlighted","isFocused","listboxItemMoreItemsAriaAttributes","onIntersectionObserverAppear","hasFooter","getObserver","$_gl_intersectionHandler","$el","$_gl_intersectionObserver","unobserve","formatNumberNormalized","maxLength","valueFactor","formatted","toExponential","getFormatterArguments","scaledFormatter","units","unitFactor","RangeError","fractionDigits","unitSeparator","NEGATIVE_INFINITY","POSITIVE_INFINITY","isNaN","toLocaleString","num","scale","limit","Math","abs","maximumFractionDigits","minimumFractionDigits","numberFormatter","suffixFormatter","scaledSIFormatter","prefixOffset","fractional","slice","prefix","scaledBinaryFormatter","percent","days","milliseconds","decimalBytes","kilobytes","megabytes","gigabytes","terabytes","petabytes","bytes","kibibytes","mebibytes","gibibytes","tebibytes","pebibytes","engineering","engineeringNotation","TypeError","GlFormInput","borderless","clearButtonTitle","isLoading","attributes","onInput","focusin","onFocusin","focusout","onFocusout","hasValue","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","addition","sum","numbers","average","precision","invalidValues","NaN","Infinity","toString","exponentialNotation","power","split","scaledPower","floor","toFixed","replace","_","fractionalDigits","0","3","6","9","12","15","18","21","24","BASE_DROPDOWN_CLASS","Outside","ariaHaspopup","ariaLabelledby","mainAxis","openedYet","visible","baseDropdownId","_this$toggleText","hasNoVisibleToggleText","isIconOnly","toggleLabelledBy","isEllipsisButton","isCaretOnly","isDefaultToggle","is","buttonTextClasses","toggleButtonTextClasses","ariaAttributes","listeners","keydown","click","toggleOptions","_this$$refs$toggle","firstElementChild","isFixed","alignment","middleware","allowedPlacements","dropdownArrow","_this$nonScrollableCo","availableHeight","contentsEl","floating","contentsAvailableHeight","nonScrollableContentHeight","assign","maxHeight","max","deep","toggleElement","setAttribute","checkToggleFocusable","stopFloating","actualPlacement","offsetConfigs","staticSide","rotation","bottom","right","calculateNonScrollableAreaHeight","MutationObserver","childList","subtree","stopAutoUpdate","async","result","floatingUIConfig","x","y","middlewareData","getArrowOffsets","arrow","arrowX","arrowY","toggleRect","getBoundingClientRect","contentRect","clampedArrowX","width","min","transform","_this$observer","_this$stopAutoUpdate","call","prevented","startFloating","hadFocusWithin","activeElement","hasToggled","focusToggle","tagName","toggleOnEnter","toggleOnSpace","_this$$refs$content","scrollableArea","floatingElementBoundingBox","scrollableAreaBoundingBox","toggleComponent","toggleAttributes","toggleListeners","panelClasses","toggleSelection","checkedClasses"],"mappings":"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","file":"pages.projects.pipelines.charts.482475f0.chunk.js","sourcesContent":["import merge from 'lodash/merge';\nimport { yAxis, generateBarSeries, generateLineSeries, defaultChartOptions, gridWithSecondaryYAxis, grid, dataZoomAdjustments, mergeSeriesToOptions } from '../../../utils/charts/config';\nimport { CHART_TYPE_LINE, HEIGHT_AUTO_CLASSES } from '../../../utils/charts/constants';\nimport { colorFromDefaultPalette } from '../../../utils/charts/theme';\nimport { columnOptions } from '../../../utils/constants';\nimport Chart from '../chart/chart';\nimport ChartTooltip from '../shared/tooltip/tooltip';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst yAxisDefaults = {\n ...yAxis,\n nameLocation: 'center',\n axisTick: {\n show: false\n }\n};\nvar script = {\n name: 'GlColumnChart',\n components: {\n Chart,\n ChartTooltip\n },\n inheritAttrs: false,\n props: {\n bars: {\n type: Array,\n required: false,\n default: () => []\n },\n lines: {\n type: Array,\n required: false,\n default: () => []\n },\n secondaryData: {\n type: Array,\n required: false,\n default: () => []\n },\n option: {\n type: Object,\n required: false,\n default: () => ({})\n },\n yAxisTitle: {\n type: String,\n required: true\n },\n secondaryDataTitle: {\n type: String,\n required: false,\n default: ''\n },\n xAxisTitle: {\n type: String,\n required: true\n },\n xAxisType: {\n type: String,\n required: true,\n validator: value => ['value', 'category', 'time', 'log'].indexOf(value) !== -1\n },\n /**\n * Sets the chart's height in pixels. Set to `\"auto\"` to use the height of the container.\n */\n height: {\n type: [Number, String],\n required: false,\n default: null\n }\n },\n data() {\n return {\n chart: null\n };\n },\n computed: {\n hasSecondaryAxis() {\n return Boolean(this.secondaryData.length);\n },\n barSeries() {\n return this.bars.map((_ref, index) => {\n let {\n name,\n data,\n stack\n } = _ref;\n const color = colorFromDefaultPalette(index);\n return generateBarSeries({\n name,\n data,\n stack,\n color\n });\n });\n },\n lineSeries() {\n const offset = this.bars.length;\n return this.lines.map((_ref2, index) => {\n let {\n name,\n data\n } = _ref2;\n const color = colorFromDefaultPalette(offset + index);\n return generateLineSeries({\n name,\n data,\n color\n });\n });\n },\n secondarySeries() {\n const offset = this.bars.length + this.lines.length;\n return this.secondaryData.map((_ref3, index) => {\n let {\n name,\n data,\n type,\n stack = columnOptions.tiled\n } = _ref3;\n const color = colorFromDefaultPalette(offset + index);\n return type === CHART_TYPE_LINE ? generateLineSeries({\n color,\n name,\n data,\n yAxisIndex: 1\n }) : generateBarSeries({\n color,\n name,\n data,\n yAxisIndex: 1,\n stack\n });\n });\n },\n series() {\n return [...this.barSeries, ...this.lineSeries, ...this.secondarySeries];\n },\n options() {\n const yAxisPrimary = {\n ...yAxisDefaults,\n name: this.yAxisTitle\n };\n const mergedOptions = merge({}, defaultChartOptions, {\n grid: this.hasSecondaryAxis ? gridWithSecondaryYAxis : grid,\n xAxis: {\n boundaryGap: true,\n axisLabel: {\n margin: 20,\n verticalAlign: 'bottom'\n },\n axisLine: {\n show: false\n },\n axisPointer: {\n type: 'none'\n },\n name: this.xAxisTitle,\n type: this.xAxisType\n },\n yAxis: this.hasSecondaryAxis ? [yAxisPrimary, {\n ...yAxisDefaults,\n name: this.secondaryDataTitle,\n show: this.hasSecondaryAxis\n }] : yAxisPrimary,\n legend: {\n show: false\n }\n }, this.option, dataZoomAdjustments(this.option.dataZoom));\n // All chart options can be merged but series\n // needs to be handled specially\n return mergeSeriesToOptions(mergedOptions, this.series);\n },\n autoHeight() {\n return this.height === 'auto';\n }\n },\n methods: {\n onCreated(chart) {\n this.chart = chart;\n this.$emit('created', chart);\n }\n },\n HEIGHT_AUTO_CLASSES\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-relative\",class:( _obj = {}, _obj[_vm.$options.HEIGHT_AUTO_CLASSES] = _vm.autoHeight, _obj )},[_c('chart',_vm._g(_vm._b({class:{ 'gl-grow': _vm.autoHeight },attrs:{\"height\":_vm.height,\"options\":_vm.options},on:{\"created\":_vm.onCreated}},'chart',_vm.$attrs,false),_vm.$listeners)),_vm._v(\" \"),(_vm.chart)?_c('chart-tooltip',{ref:\"dataTooltip\",attrs:{\"chart\":_vm.chart,\"use-default-tooltip-formatter\":true},scopedSlots:_vm._u([(_vm.$scopedSlots['tooltip-title'])?{key:\"title\",fn:function(scope){return [_vm._t(\"tooltip-title\",null,null,scope)]}}:null,(_vm.$scopedSlots['tooltip-content'])?{key:\"default\",fn:function(scope){return [_vm._t(\"tooltip-content\",null,null,scope)]}}:null,(_vm.$scopedSlots['tooltip-value'])?{key:\"tooltip-value\",fn:function(scope){return [_vm._t(\"tooltip-value\",null,null,scope)]}}:null],null,true)}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlButton from '../../base/button/button';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'ClearIconButton',\n components: {\n GlButton\n },\n directives: {\n GlTooltip: GlTooltipDirective\n },\n props: {\n title: {\n type: String,\n required: false,\n default: () => translate('ClearIconButton.title', 'Clear')\n },\n tooltipContainer: {\n required: false,\n default: false,\n validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-button',_vm._g({directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",value:({ container: _vm.tooltipContainer }),expression:\"{ container: tooltipContainer }\",modifiers:{\"hover\":true}}],staticClass:\"gl-clear-icon-button\",attrs:{\"variant\":\"default\",\"category\":\"tertiary\",\"size\":\"small\",\"name\":\"clear\",\"icon\":\"clear\",\"title\":_vm.title,\"aria-label\":_vm.title}},_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","var baseClamp = require('./_baseClamp'),\n toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","import isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nconst isOption = item => Boolean(item) && (isString(item.value) || isNumber(item.value));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isGroup = function () {\n let {\n options\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Array.isArray(options) && options.every(isOption);\n};\nconst hasNoDuplicates = array => array.length === new Set(array).size;\nconst flattenedOptions = items => items.flatMap(item => isOption(item) ? item : item.options);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isAllOptionsOrAllGroups = items => items.every(isOption) || items.every(isGroup);\nconst hasUniqueValues = items => hasNoDuplicates(flattenedOptions(items).map(_ref => {\n let {\n value\n } = _ref;\n return value;\n}));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst hasUniqueGroups = items => hasNoDuplicates(items.filter(isGroup).map(_ref2 => {\n let {\n text\n } = _ref2;\n return text;\n}));\nconst itemsValidator = items => isAllOptionsOrAllGroups(items) && hasUniqueValues(items) && hasUniqueGroups(items);\n\nexport { flattenedOptions, isOption, itemsValidator };\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","import merge from 'lodash/merge';\nimport { symbolSize, lineStyle, getThresholdConfig, generateAnnotationSeries, defaultChartOptions, dataZoomAdjustments, mergeSeriesToOptions, mergeAnnotationAxisToOptions, grid } from '../../../utils/charts/config';\nimport { LEGEND_AVERAGE_TEXT, LEGEND_MAX_TEXT, LEGEND_MIN_TEXT, LEGEND_CURRENT_TEXT, LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE, HEIGHT_AUTO_CLASSES } from '../../../utils/charts/constants';\nimport { colorFromDefaultPalette } from '../../../utils/charts/theme';\nimport { seriesHasAnnotations, isDataPointAnnotation } from '../../../utils/charts/utils';\nimport Chart from '../chart/chart';\nimport ChartLegend from '../legend/legend';\nimport ChartTooltip from '../shared/tooltip/tooltip';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n name: 'GlLineChart',\n components: {\n Chart,\n ChartLegend,\n ChartTooltip\n },\n inheritAttrs: false,\n props: {\n data: {\n type: Array,\n required: true\n },\n option: {\n type: Object,\n required: false,\n default: () => ({})\n },\n thresholds: {\n type: Array,\n required: false,\n default: () => []\n },\n annotations: {\n type: Array,\n required: false,\n default: () => []\n },\n includeLegendAvgMax: {\n type: Boolean,\n required: false,\n default: true\n },\n /**\n * Callback called when showing or refreshing a tooltip.\n * **Deprecated:** Use slots `#tooltip-title`, `#tooltip-content` or `#tooltip-value`.\n *\n * @deprecated Use slots `#tooltip-title`, `#tooltip-content` or `#tooltip-value`.\n */\n formatTooltipText: {\n type: Function,\n required: false,\n default: null\n },\n legendAverageText: {\n type: String,\n required: false,\n default: LEGEND_AVERAGE_TEXT\n },\n legendMaxText: {\n type: String,\n required: false,\n default: LEGEND_MAX_TEXT\n },\n legendMinText: {\n type: String,\n required: false,\n default: LEGEND_MIN_TEXT\n },\n legendCurrentText: {\n type: String,\n required: false,\n default: LEGEND_CURRENT_TEXT\n },\n legendLayout: {\n type: String,\n required: false,\n default: LEGEND_LAYOUT_INLINE,\n validator(layout) {\n return [LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE].indexOf(layout) !== -1;\n }\n },\n showLegend: {\n type: Boolean,\n required: false,\n default: true\n },\n /**\n * Sets the chart's height in pixels. Set to `\"auto\"` to use the height of the container.\n */\n height: {\n type: [Number, String],\n required: false,\n default: null\n }\n },\n data() {\n // Part of the tooltip related data can be\n // moved into the tooltip component.\n // Tracking that progress in\n // https://gitlab.com/gitlab-org/gitlab-ui/-/issues/618\n return {\n chart: null,\n showAnnotationsTooltip: false,\n annotationsTooltipTitle: '',\n annotationsTooltipContent: '',\n annotationsTooltipPosition: {\n left: '0',\n top: '0'\n }\n };\n },\n computed: {\n series() {\n const dataSeries = this.data.map((series, index) => {\n const defaultColor = colorFromDefaultPalette(index);\n const getColor = type => {\n var _series$type$color, _series$type;\n return (_series$type$color = (_series$type = series[type]) === null || _series$type === void 0 ? void 0 : _series$type.color) !== null && _series$type$color !== void 0 ? _series$type$color : defaultColor;\n };\n return merge({\n showSymbol: true,\n lineStyle: {\n color: getColor('lineStyle')\n },\n itemStyle: {\n color: getColor('itemStyle')\n }\n }, symbolSize, lineStyle, series, getThresholdConfig(this.thresholds));\n });\n // if annotation series exists, append it\n // along with data series\n if (this.annotationSeries) {\n return [...dataSeries, this.annotationSeries];\n }\n return dataSeries;\n },\n annotationSeries() {\n return generateAnnotationSeries(this.annotations);\n },\n options() {\n const defaultLineChartOptions = {\n xAxis: {\n axisPointer: {\n show: true,\n label: {\n formatter: this.formatTooltipText\n }\n },\n axisTick: {\n alignWithLabel: true,\n show: true,\n lineStyle: {\n color: 'var(--gl-chart-axis-line-color)'\n }\n }\n },\n legend: {\n show: false\n }\n };\n const mergedOptions = merge({}, defaultChartOptions, defaultLineChartOptions, this.option, dataZoomAdjustments(this.option.dataZoom));\n // All chart options can be merged but series\n // needs to be handled specially\n return mergeSeriesToOptions(mergeAnnotationAxisToOptions(mergedOptions, this.hasAnnotations), this.series);\n },\n /**\n * Annotations currently are passed as series options in monitoring dashboard.\n * Once https://gitlab.com/gitlab-org/gitlab/-/issues/213390 is closed,\n * annotations will be passed as props and not as series options.\n *\n * For backward compatibility, we're having to check for both.\n */\n hasAnnotations() {\n return this.annotations.length !== 0 || seriesHasAnnotations(this.option.series);\n },\n shouldShowAnnotationsTooltip() {\n return this.chart && this.hasAnnotations;\n },\n compiledOptions() {\n return this.chart ? this.chart.getOption() : null;\n },\n legendStyle() {\n return {\n paddingLeft: `${grid.left}px`\n };\n },\n hasLegend() {\n return this.compiledOptions && this.showLegend;\n },\n seriesInfo() {\n return this.compiledOptions.series.reduce((acc, series, index) => {\n if (series.type === 'line') {\n acc.push({\n name: series.name,\n type: series.lineStyle.type,\n color: series.lineStyle.color || colorFromDefaultPalette(index),\n data: this.includeLegendAvgMax ? series.data.map(data => data[1]) : undefined\n });\n }\n return acc;\n }, []);\n },\n autoHeight() {\n return this.height === 'auto';\n }\n },\n beforeDestroy() {\n this.chart.off('mouseout', this.onChartDataPointMouseOut);\n this.chart.off('mouseover', this.onChartDataPointMouseOver);\n },\n methods: {\n defaultAnnotationTooltipText(params) {\n var _params$data$tooltipD;\n return {\n title: params.data.xAxis,\n content: (_params$data$tooltipD = params.data.tooltipData) === null || _params$data$tooltipD === void 0 ? void 0 : _params$data$tooltipD.content\n };\n },\n onCreated(chart) {\n // eCharts inbuild mouse events\n // https://echarts.apache.org/en/api.html#events.Mouse%20events\n // is used to attach listeners to markPoints. These listeners\n // are currently used for annotation arrows at the bottom of the chart.\n\n // Because data points and annotations arrows are in different\n // sections of the charts with their own mouseovers and mouseouts,\n // there shouldn't be an overlapping situation where both tooltips\n // are visible.\n\n if (this.hasAnnotations) {\n chart.on('mouseout', this.onChartDataPointMouseOut);\n chart.on('mouseover', this.onChartDataPointMouseOver);\n }\n this.chart = chart;\n this.$emit('created', chart);\n },\n onChartDataPointMouseOut() {\n this.showAnnotationsTooltip = false;\n },\n /**\n * Check if the hovered data point is an annotation\n * point to show the annotation tooltip.\n */\n onChartDataPointMouseOver(params) {\n if (isDataPointAnnotation(params)) {\n const {\n event\n } = params;\n const toolTipFormatter = this.formatAnnotationsTooltipText || this.defaultAnnotationTooltipText;\n const {\n title = '',\n content = ''\n } = toolTipFormatter(params);\n this.showAnnotationsTooltip = true;\n this.annotationsTooltipTitle = title;\n this.annotationsTooltipContent = content;\n this.annotationsTooltipPosition = {\n left: `${event.event.zrX}px`,\n top: `${event.event.zrY}px`\n };\n }\n }\n },\n HEIGHT_AUTO_CLASSES\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-relative\",class:( _obj = {}, _obj[_vm.$options.HEIGHT_AUTO_CLASSES] = _vm.autoHeight, _obj )},[_c('chart',_vm._g(_vm._b({class:{ 'gl-grow': _vm.autoHeight },attrs:{\"height\":_vm.height,\"options\":_vm.options},on:{\"created\":_vm.onCreated}},'chart',_vm.$attrs,false),_vm.$listeners)),_vm._v(\" \"),(_vm.shouldShowAnnotationsTooltip)?_c('chart-tooltip',{ref:\"annotationsTooltip\",attrs:{\"id\":\"annotationsTooltip\",\"show\":_vm.showAnnotationsTooltip,\"chart\":_vm.chart,\"top\":_vm.annotationsTooltipPosition.top,\"left\":_vm.annotationsTooltipPosition.left,\"placement\":\"bottom\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('div',[_vm._v(_vm._s(_vm.annotationsTooltipTitle))])]},proxy:true}],null,false,1889294429)},[_vm._v(\" \"),_c('div',[_vm._v(_vm._s(_vm.annotationsTooltipContent))])]):_vm._e(),_vm._v(\" \"),(_vm.chart)?_c('chart-tooltip',{ref:\"dataTooltip\",attrs:{\"chart\":_vm.chart,\"use-default-tooltip-formatter\":!_vm.formatTooltipText},scopedSlots:_vm._u([(_vm.$scopedSlots['tooltip-title'])?{key:\"title\",fn:function(scope){return [_vm._t(\"tooltip-title\",null,null,scope)]}}:null,(_vm.$scopedSlots['tooltip-content'])?{key:\"default\",fn:function(scope){return [_vm._t(\"tooltip-content\",null,null,scope)]}}:null,(_vm.$scopedSlots['tooltip-value'])?{key:\"tooltip-value\",fn:function(scope){return [_vm._t(\"tooltip-value\",null,null,scope)]}}:null],null,true)}):_vm._e(),_vm._v(\" \"),(_vm.hasLegend)?_c('chart-legend',{style:(_vm.legendStyle),attrs:{\"chart\":_vm.chart,\"series-info\":_vm.seriesInfo,\"text-style\":_vm.compiledOptions.textStyle,\"min-text\":_vm.legendMinText,\"max-text\":_vm.legendMaxText,\"average-text\":_vm.legendAverageText,\"current-text\":_vm.legendCurrentText,\"layout\":_vm.legendLayout}}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import merge from 'lodash/merge';\nimport { yAxis, generateBarSeries, generateLineSeries, defaultChartOptions, gridWithSecondaryYAxis, grid, dataZoomAdjustments, mergeSeriesToOptions } from '../../../utils/charts/config';\nimport { LEGEND_AVERAGE_TEXT, LEGEND_MAX_TEXT, LEGEND_MIN_TEXT, LEGEND_CURRENT_TEXT, LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE, CHART_TYPE_LINE, HEIGHT_AUTO_CLASSES } from '../../../utils/charts/constants';\nimport { colorFromDefaultPalette } from '../../../utils/charts/theme';\nimport { columnOptions } from '../../../utils/constants';\nimport TooltipDefaultFormat from '../shared/tooltip/tooltip_default_format/tooltip_default_format';\nimport Chart from '../chart/chart';\nimport ChartLegend from '../legend/legend';\nimport ChartTooltip from '../shared/tooltip/tooltip';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst yAxisDefaults = {\n ...yAxis,\n nameLocation: 'center',\n axisTick: {\n show: false\n }\n};\nvar script = {\n name: 'GlStackedColumnChart',\n components: {\n Chart,\n ChartTooltip,\n ChartLegend,\n TooltipDefaultFormat\n },\n inheritAttrs: false,\n props: {\n bars: {\n type: Array,\n required: false,\n default: () => []\n },\n lines: {\n type: Array,\n required: false,\n default: () => []\n },\n secondaryData: {\n type: Array,\n required: false,\n default: () => []\n },\n option: {\n type: Object,\n required: false,\n default: () => ({})\n },\n presentation: {\n type: String,\n required: false,\n default: 'stacked',\n validator: value => ['stacked', 'tiled'].indexOf(value) !== -1\n },\n groupBy: {\n type: Array,\n required: true\n },\n xAxisType: {\n type: String,\n required: true,\n validator: value => ['value', 'category', 'time', 'log'].indexOf(value) !== -1\n },\n xAxisTitle: {\n type: String,\n required: true\n },\n yAxisTitle: {\n type: String,\n required: true\n },\n secondaryDataTitle: {\n type: String,\n required: false,\n default: ''\n },\n seriesNames: {\n type: Array,\n required: false,\n default: () => []\n },\n includeLegendAvgMax: {\n type: Boolean,\n required: false,\n default: true\n },\n legendAverageText: {\n type: String,\n required: false,\n default: LEGEND_AVERAGE_TEXT\n },\n legendMaxText: {\n type: String,\n required: false,\n default: LEGEND_MAX_TEXT\n },\n legendMinText: {\n type: String,\n required: false,\n default: LEGEND_MIN_TEXT\n },\n legendCurrentText: {\n type: String,\n required: false,\n default: LEGEND_CURRENT_TEXT\n },\n legendLayout: {\n type: String,\n required: false,\n default: LEGEND_LAYOUT_INLINE,\n validator(layout) {\n return [LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE].indexOf(layout) !== -1;\n }\n },\n /**\n * Callback called when showing or refreshing a tooltip.\n * **Deprecated:** Use slots `#tooltip-title`, `#tooltip-content` or `#tooltip-value`.\n *\n * @deprecated Use slots `#tooltip-title`, `#tooltip-content` or `#tooltip-value`.\n */\n formatTooltipText: {\n type: Function,\n required: false,\n default: null\n },\n customPalette: {\n type: Array,\n required: false,\n default: null\n },\n /**\n * Sets the chart's height in pixels. Set to `\"auto\"` to use the height of the container.\n */\n height: {\n type: [Number, String],\n required: false,\n default: null\n }\n },\n data() {\n return {\n chart: null\n };\n },\n computed: {\n hasSecondaryAxis() {\n return Boolean(this.secondaryData.length);\n },\n barSeries() {\n return this.bars.map((_ref, index) => {\n let {\n name,\n data\n } = _ref;\n const stack = this.presentation === 'stacked' ? this.groupBy : null;\n const color = this.getColor(index);\n return generateBarSeries({\n stack,\n name,\n data,\n color\n });\n });\n },\n lineSeries() {\n const offset = this.bars.length;\n return this.lines.map((_ref2, index) => {\n let {\n name,\n data\n } = _ref2;\n const color = this.getColor(offset + index);\n return generateLineSeries({\n name,\n data,\n color\n });\n });\n },\n secondarySeries() {\n const offset = this.bars.length + this.lines.length;\n return this.secondaryData.map((_ref3, index) => {\n let {\n name,\n data,\n type,\n stack = columnOptions.tiled\n } = _ref3;\n const color = this.getColor(offset + index);\n return type === CHART_TYPE_LINE ? generateLineSeries({\n color,\n name,\n data,\n yAxisIndex: 1\n }) : generateBarSeries({\n color,\n name,\n data,\n yAxisIndex: 1,\n stack\n });\n });\n },\n series() {\n return [...this.barSeries, ...this.lineSeries, ...this.secondarySeries];\n },\n options() {\n const mergedOptions = merge({}, defaultChartOptions, {\n grid: this.hasSecondaryAxis ? gridWithSecondaryYAxis : grid,\n xAxis: {\n boundaryGap: true,\n axisLabel: {\n margin: 20,\n verticalAlign: 'bottom'\n },\n axisLine: {\n show: false\n },\n axisPointer: {\n show: true,\n type: 'none',\n label: {\n formatter: this.formatTooltipText\n }\n },\n data: this.groupBy,\n name: this.xAxisTitle,\n type: this.xAxisType\n },\n yAxis: [{\n ...yAxisDefaults,\n name: this.yAxisTitle\n }, {\n ...yAxisDefaults,\n name: this.secondaryDataTitle,\n show: this.hasSecondaryAxis\n }],\n legend: {\n show: false\n }\n }, this.option, dataZoomAdjustments(this.option.dataZoom));\n // All chart options can be merged but series\n // needs to be handled specially\n return mergeSeriesToOptions(mergedOptions, this.series);\n },\n legendStyle() {\n return {\n paddingLeft: `${grid.left}px`\n };\n },\n compiledOptions() {\n return this.chart ? this.chart.getOption() : null;\n },\n seriesInfo() {\n return this.compiledOptions.series.reduce((acc, series, index) => {\n acc.push({\n name: series.name,\n type: series.type,\n color: this.getColor(index),\n data: this.includeLegendAvgMax ? series.data.map(data => data) : undefined,\n yAxisIndex: series.yAxisIndex\n });\n return acc;\n }, []);\n },\n autoHeight() {\n return this.height === 'auto';\n }\n },\n methods: {\n getColor(index) {\n var _this$customPalette;\n return this.customPalette ? (_this$customPalette = this.customPalette) === null || _this$customPalette === void 0 ? void 0 : _this$customPalette[index] : colorFromDefaultPalette(index);\n },\n onCreated(chart) {\n this.chart = chart;\n this.$emit('created', chart);\n },\n getTooltipTitle(_ref4) {\n var _options$xAxis, _options$xAxis$;\n let {\n params\n } = _ref4;\n if (!params) return '';\n const options = this.chart.getOption();\n const titleAxisName = options === null || options === void 0 ? void 0 : (_options$xAxis = options.xAxis) === null || _options$xAxis === void 0 ? void 0 : (_options$xAxis$ = _options$xAxis[0]) === null || _options$xAxis$ === void 0 ? void 0 : _options$xAxis$.name;\n return titleAxisName ? `${params.value} (${titleAxisName})` : params.value;\n },\n getTooltipContent(_ref5) {\n let {\n params\n } = _ref5;\n if (!params) return {};\n const tooltipContentEntries = params.seriesData.toSorted((a, b) => b.seriesIndex - a.seriesIndex) // Invert stacking order so it matches chart (see https://github.com/apache/echarts/issues/14700)\n .map(_ref6 => {\n let {\n seriesName = '',\n value,\n borderColor\n } = _ref6;\n return [seriesName, {\n value,\n color: borderColor\n }];\n });\n return Object.fromEntries(tooltipContentEntries);\n }\n },\n HEIGHT_AUTO_CLASSES\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-relative\",class:( _obj = {}, _obj[_vm.$options.HEIGHT_AUTO_CLASSES] = _vm.autoHeight, _obj )},[_c('chart',_vm._g(_vm._b({class:{ 'gl-grow': _vm.autoHeight },attrs:{\"height\":_vm.height,\"options\":_vm.options},on:{\"created\":_vm.onCreated}},'chart',_vm.$attrs,false),_vm.$listeners)),_vm._v(\" \"),(_vm.chart)?_c('chart-tooltip',{attrs:{\"chart\":_vm.chart,\"use-default-tooltip-formatter\":!_vm.formatTooltipText},scopedSlots:_vm._u([{key:\"title\",fn:function(scope){return [_vm._t(\"tooltip-title\",function(){return [_vm._v(_vm._s(_vm.getTooltipTitle(scope)))]},null,scope)]}},{key:\"default\",fn:function(scope){return [_vm._t(\"tooltip-content\",function(){return [_c('tooltip-default-format',{attrs:{\"tooltip-content\":_vm.getTooltipContent(scope)},scopedSlots:_vm._u([(_vm.$scopedSlots['tooltip-value'])?{key:\"tooltip-value\",fn:function(valueScope){return [_vm._t(\"tooltip-value\",null,null,valueScope)]}}:null],null,true)})]},null,scope)]}}],null,true)}):_vm._e(),_vm._v(\" \"),(_vm.compiledOptions)?_c('chart-legend',{style:(_vm.legendStyle),attrs:{\"chart\":_vm.chart,\"series-info\":_vm.seriesInfo,\"text-style\":_vm.compiledOptions.textStyle,\"min-text\":_vm.legendMinText,\"max-text\":_vm.legendMaxText,\"average-text\":_vm.legendAverageText,\"current-text\":_vm.legendCurrentText,\"layout\":_vm.legendLayout}}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","\n\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statistics_list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statistics_list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./statistics_list.vue?vue&type=template&id=71ce9a4c\"\nimport script from \"./statistics_list.vue?vue&type=script&lang=js\"\nexport * from \"./statistics_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('div',{staticClass:\"gl-mb-6 gl-flex gl-flex-wrap gl-gap-6\"},[(_vm.loading)?_c('gl-skeleton-loader',{attrs:{\"height\":30}},[_c('rect',{attrs:{\"width\":\"45\",\"height\":\"30\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"50\",\"width\":\"45\",\"height\":\"30\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"100\",\"width\":\"45\",\"height\":\"30\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"150\",\"width\":\"45\",\"height\":\"30\",\"rx\":\"4\"}})]):_vm._l((_vm.statistics),function(statistic){return _c('div',{key:statistic.label},[_c('gl-single-stat',{attrs:{\"id\":statistic.identifier,\"value\":`${statistic.value}`,\"title\":statistic.label,\"unit\":statistic.unit || '',\"should-animate\":true,\"use-delimiters\":\"\"}}),_vm._v(\" \"),(_vm.shouldDisplayLink(statistic))?_c('gl-link',{staticClass:\"gl-p-2\",attrs:{\"href\":statistic.link,\"data-event-tracking\":\"click_view_all_link_in_pipeline_analytics\"}},[_vm._v(_vm._s(_vm.s__('Pipeline|View all')))]):_vm._e()],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipelines_dashboard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipelines_dashboard.vue?vue&type=script&lang=js\"","export const CHART_CONTAINER_HEIGHT = 300;\n\nexport const INNER_CHART_HEIGHT = 200;\n\nexport const X_AXIS_LABEL_ROTATION = 45;\n\nexport const X_AXIS_TITLE_OFFSET = 60;\n\nexport const ONE_WEEK_AGO_DAYS = 7;\nexport const ONE_MONTH_AGO_DAYS = 31;\nexport const ONE_YEAR_AGO_DAYS = 365;\n\nexport const DATE_RANGE_LAST_WEEK = 7;\nexport const DATE_RANGE_LAST_30_DAYS = 30;\nexport const DATE_RANGE_LAST_90_DAYS = 90;\nexport const DATE_RANGE_LAST_180_DAYS = 180;\n\nexport const DEFAULT = 'default';\nexport const PARSE_FAILURE = 'parse_failure';\nexport const LOAD_ANALYTICS_FAILURE = 'load_analytics_failure';\nexport const LOAD_PIPELINES_FAILURE = 'load_analytics_failure';\nexport const UNSUPPORTED_DATA = 'unsupported_data';\n\nexport const SNOWPLOW_LABEL = 'redis_hll_counters.analytics.analytics_total_unique_counts_monthly';\nexport const SNOWPLOW_SCHEMA = 'iglu:com.gitlab/gitlab_service_ping/jsonschema/1-0-1';\nexport const SNOWPLOW_DATA_SOURCE = 'redis_hll';\n","import { render, staticRenderFns } from \"./pipelines_dashboard.vue?vue&type=template&id=1e0cc276\"\nimport script from \"./pipelines_dashboard.vue?vue&type=script&lang=js\"\nexport * from \"./pipelines_dashboard.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.showFailureAlert)?_c('gl-alert',{attrs:{\"variant\":_vm.failure.variant},on:{\"dismiss\":_vm.hideAlert}},[_vm._v(_vm._s(_vm.failure.text))]):_vm._e(),_vm._v(\" \"),_c('dashboard-header',[_vm._v(\"\\n \"+_vm._s(_vm.s__('PipelineCharts|Pipelines'))+\"\\n \")]),_vm._v(\" \"),(_vm.loading)?_c('gl-skeleton-loader',{attrs:{\"lines\":5}}):_c('statistics-list',{attrs:{\"counts\":_vm.formattedCounts}}),_vm._v(\" \"),_c('h4',[_vm._v(_vm._s(_vm.__('Pipelines charts')))]),_vm._v(\" \"),_c('ci-cd-analytics-charts',{attrs:{\"charts\":_vm.areaCharts,\"chart-options\":_vm.$options.areaChartOptions,\"format-tooltip-text\":_vm.formatTooltipText},scopedSlots:_vm._u([{key:\"tooltip-title\",fn:function(){return [_vm._v(_vm._s(_vm.tooltipTitle))]},proxy:true},{key:\"tooltip-content\",fn:function(){return _vm._l((_vm.tooltipContent),function({ key, name, color, value }){return _c('div',{key:key,staticClass:\"gl-flex gl-justify-between\"},[_c('gl-chart-series-label',{staticClass:\"gl-mr-7 gl-text-sm\",attrs:{\"color\":color}},[_vm._v(\"\\n \"+_vm._s(name)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(value))])],1)})},proxy:true}])}),_vm._v(\" \"),_c('h4',{staticClass:\"gl-mt-6\"},[_vm._v(_vm._s(_vm.__('Pipeline durations for the last 30 commits')))]),_vm._v(\" \"),_c('gl-column-chart',{attrs:{\"height\":_vm.$options.chartContainerHeight,\"option\":_vm.chartOptions,\"bars\":_vm.timesChartTransformedData,\"y-axis-title\":_vm.__('Minutes'),\"x-axis-title\":_vm.__('Commit'),\"x-axis-type\":\"category\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_duration_chart.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_duration_chart.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./pipeline_duration_chart.vue?vue&type=template&id=e95cb1dc\"\nimport script from \"./pipeline_duration_chart.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_duration_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:\"gl-border gl-mb-5 gl-border-default gl-p-5\"},[_c('h3',{staticClass:\"gl-heading-4\"},[_vm._v(_vm._s(_vm.s__('Pipeline|Duration')))]),_vm._v(\" \"),(_vm.loading)?_c('gl-loading-icon',{staticClass:\"gl-mb-5\",attrs:{\"size\":\"xl\"}}):_c('gl-line-chart',{attrs:{\"data\":_vm.data,\"option\":_vm.$options.lineChartOptions,\"include-legend-avg-max\":false},scopedSlots:_vm._u([{key:\"tooltip-title\",fn:function({ params }){return [(params && params.value)?[_vm._v(_vm._s(_vm.formatDate(params.value)))]:_vm._e()]}},{key:\"tooltip-value\",fn:function({ value }){return [_vm._v(\"\\n \"+_vm._s(_vm.formatDuration(value))+\"\\n \")]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_status_chart.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_status_chart.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./pipeline_status_chart.vue?vue&type=template&id=79ff5e88\"\nimport script from \"./pipeline_status_chart.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_status_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:\"gl-border gl-border-default gl-p-5\"},[_c('h3',{staticClass:\"gl-heading-4\"},[_vm._v(_vm._s(_vm.s__('Pipeline|Status')))]),_vm._v(\" \"),(_vm.loading)?_c('gl-loading-icon',{staticClass:\"gl-mb-5\",attrs:{\"size\":\"xl\"}}):_c('gl-stacked-column-chart',{attrs:{\"x-axis-type\":\"category\",\"x-axis-title\":_vm.s__('Pipelines|Time'),\"y-axis-title\":_vm.s__('Pipelines|Pipelines count'),\"custom-palette\":_vm.$options.palette,\"group-by\":_vm.groupBy,\"bars\":_vm.bars,\"include-legend-avg-max\":false},scopedSlots:_vm._u([{key:\"tooltip-title\",fn:function({ params }){return [(params)?[_vm._v(_vm._s(_vm.formatDate(params.value)))]:_vm._e()]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipelines_dashboard_clickhouse.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipelines_dashboard_clickhouse.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./pipelines_dashboard_clickhouse.vue?vue&type=template&id=2fa550be\"\nimport script from \"./pipelines_dashboard_clickhouse.vue?vue&type=script&lang=js\"\nexport * from \"./pipelines_dashboard_clickhouse.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('dashboard-header',[_vm._v(\"\\n \"+_vm._s(_vm.s__('PipelineCharts|Pipelines'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"gl-mb-4 gl-bg-subtle gl-p-4 gl-pb-2\"},[_c('gl-form-group',{attrs:{\"label\":_vm.__('Date range'),\"label-for\":\"date-range\"}},[_c('gl-collapsible-listbox',{attrs:{\"id\":\"date-range\",\"items\":_vm.$options.dateRangeItems},model:{value:(_vm.dateRange),callback:function ($$v) {_vm.dateRange=$$v},expression:\"dateRange\"}})],1)],1),_vm._v(\" \"),_c('div',[_c('statistics-list',{attrs:{\"loading\":_vm.loading,\"counts\":_vm.formattedCounts}}),_vm._v(\" \"),_c('pipeline-duration-chart',{attrs:{\"loading\":_vm.loading,\"time-series\":_vm.pipelineAnalytics.timeSeries}}),_vm._v(\" \"),_c('pipeline-status-chart',{attrs:{\"loading\":_vm.loading,\"time-series\":_vm.pipelineAnalytics.timeSeries}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./app.vue?vue&type=template&id=5aad2e9e\"\nimport script from \"./app.vue?vue&type=script&lang=js\"\nexport * from \"./app.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.tabs.length > 1)?_c('gl-tabs',{attrs:{\"value\":_vm.activeTabIndex},on:{\"input\":_vm.onTabInput}},_vm._l((_vm.tabs),function(tab){return _c('gl-tab',{key:tab.key,attrs:{\"title\":tab.title,\"lazy\":tab.lazy},on:{\"click\":function($event){tab.event && _vm.trackEvent(tab.event)}}},[_c(tab.componentIs,{tag:\"component\"})],1)}),1):_c(_vm.tabs[0].componentIs,{tag:\"component\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport createDefaultClient from '~/lib/graphql';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_PROJECT } from '~/graphql_shared/constants';\nimport ProjectPipelinesCharts from './components/app.vue';\n\nVue.use(VueApollo);\n\nconst apolloProvider = new VueApollo({\n defaultClient: createDefaultClient(),\n});\n\nconst mountPipelineChartsApp = (el) => {\n const {\n projectId,\n projectPath,\n failedPipelinesLink,\n coverageChartPath,\n defaultBranch,\n testRunsEmptyStateImagePath,\n projectQualitySummaryFeedbackImagePath,\n } = el.dataset;\n\n const shouldRenderDoraCharts = parseBoolean(el.dataset.shouldRenderDoraCharts);\n const shouldRenderQualitySummary = parseBoolean(el.dataset.shouldRenderQualitySummary);\n const contextId = convertToGraphQLId(TYPENAME_PROJECT, projectId);\n\n return new Vue({\n el,\n name: 'ProjectPipelinesChartsApp',\n components: {\n ProjectPipelinesCharts,\n },\n apolloProvider,\n provide: {\n projectPath,\n failedPipelinesLink,\n shouldRenderDoraCharts,\n shouldRenderQualitySummary,\n coverageChartPath,\n defaultBranch,\n testRunsEmptyStateImagePath,\n projectQualitySummaryFeedbackImagePath,\n contextId,\n },\n render: (createElement) => createElement(ProjectPipelinesCharts, {}),\n });\n};\n\nexport default () => {\n const el = document.querySelector('#js-project-pipelines-charts-app');\n return !el ? {} : mountPipelineChartsApp(el);\n};\n","import initProjectPipelinesChartsApp from '~/projects/pipelines/charts/index';\n\ninitProjectPipelinesChartsApp();\n","/**\n * Map }>\n */\nconst callbacks = new Map();\nconst click = 'click';\nconst focusin = 'focusin';\nconst supportedEventTypes = [click, focusin];\nconst defaultEventType = click;\n\n/**\n * A Set to keep track of currently active event types.\n * This ensures that event listeners are only added for the event types that are in use.\n *\n * @type {Set}\n */\nconst activeEventTypes = new Set();\nlet lastMousedown = null;\nconst globalListener = event => {\n callbacks.forEach((_ref, element) => {\n let {\n callback,\n eventTypes\n } = _ref;\n const originalEvent = event.type === click ? lastMousedown || event : event;\n if (\n // Ignore events that aren't targeted outside the element\n element.contains(originalEvent.target) ||\n // Ignore events that aren't the specified types for this element\n !eventTypes.includes(event.type)) {\n return;\n }\n try {\n callback(event);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n });\n if (event.type === click) {\n lastMousedown = null;\n }\n};\n\n// We need to listen for mouse events because text selection fires click event only when selection ends.\n// This means that the click event target could differ from the element where it originally started.\n// As example: if we use mouse events we could guarantee that selecting text within a dropdown won't close it.\nconst onMousedown = event => {\n lastMousedown = event;\n};\nconst startListening = eventTypes => {\n eventTypes.forEach(eventType => {\n if (!activeEventTypes.has(eventType)) {\n // Listening to mousedown events, ensures that a text selection doesn't trigger the\n // GlOutsideDirective 'click' callback if the selection started within the target element.\n if (eventType === click) {\n document.addEventListener('mousedown', onMousedown);\n }\n\n // Added { capture: true } to all event types to prevent the behavior discussed in https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/1686#note_412545027\n // Ensures the event listener handles the event in the capturing phase, avoiding issues encountered previously.\n // Cannot be tested with Jest or Cypress, but can be tested with Playwright in the future: https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4272#note_1947425384\n document.addEventListener(eventType, globalListener, {\n capture: true\n });\n activeEventTypes.add(eventType);\n }\n });\n lastMousedown = null;\n};\nconst stopListening = eventTypesToUnbind => {\n eventTypesToUnbind.forEach(eventType => {\n if (activeEventTypes.has(eventType)) {\n if ([...callbacks.values()].every(_ref2 => {\n let {\n eventTypes\n } = _ref2;\n return !eventTypes.includes(eventType);\n })) {\n document.removeEventListener(eventType, globalListener);\n activeEventTypes.delete(eventType);\n }\n }\n });\n if (eventTypesToUnbind.includes(click) && !activeEventTypes.has(click)) {\n document.removeEventListener('mousedown', onMousedown);\n }\n};\nfunction parseBinding(_ref3) {\n let {\n arg,\n value,\n modifiers\n } = _ref3;\n const modifiersList = Object.keys(modifiers);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof value !== 'function') {\n throw new Error(`[GlOutsideDirective] Value must be a function; got ${typeof value}!`);\n }\n if (typeof arg !== 'undefined') {\n throw new Error(`[GlOutsideDirective] Arguments are not supported. Consider using modifiers instead.`);\n }\n const unsupportedModifiers = modifiersList.filter(modifier => !supportedEventTypes.includes(modifier));\n if (unsupportedModifiers.length > 0) {\n throw new Error(`[GlOutsideDirective] Cannot bind ${unsupportedModifiers.join(', ')} events; supported event types are: ${supportedEventTypes.join(', ')}`);\n }\n }\n return {\n callback: value,\n eventTypes: modifiersList.length > 0 ? modifiersList : [defaultEventType]\n };\n}\nconst bind = (el, bindings) => {\n const {\n callback,\n eventTypes\n } = parseBinding(bindings);\n if (callbacks.has(el)) {\n // This element is already bound. This is possible if two components, which\n // share the same root node, (i.e., one is a higher-order component\n // wrapping another) _both_ have this directive applied.\n //\n // Because Vue binds directives in the direction towards the root, only the\n // deepest instance of this directive will be bound.\n //\n // A future iteration may add support for binding all instances on a given\n // element.\n return;\n }\n callbacks.set(el, {\n callback,\n eventTypes\n });\n startListening(eventTypes);\n};\nconst unbind = el => {\n const entry = callbacks.get(el);\n if (entry) {\n callbacks.delete(el);\n stopListening(entry.eventTypes);\n }\n};\nconst OutsideDirective = {\n bind,\n unbind\n};\n\nexport { OutsideDirective };\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineCountByStatus\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"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\",\"alias\":{\"kind\":\"Name\",\"value\":\"totalPipelines\"},\"name\":{\"kind\":\"Name\",\"value\":\"pipelines\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"successfulPipelines\"},\"name\":{\"kind\":\"Name\",\"value\":\"pipelines\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"SUCCESS\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"failedPipelines\"},\"name\":{\"kind\":\"Name\",\"value\":\"pipelines\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"FAILED\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":290}};\n doc.loc.source = {\"body\":\"query getPipelineCountByStatus($projectPath: ID!) {\\n project(fullPath: $projectPath) {\\n id\\n totalPipelines: pipelines {\\n count\\n }\\n successfulPipelines: pipelines(status: SUCCESS) {\\n count\\n }\\n failedPipelines: pipelines(status: FAILED) {\\n count\\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[\"getPipelineCountByStatus\"] = oneQuery(doc, \"getPipelineCountByStatus\");\n \n","// base dropdown events\nconst GL_DROPDOWN_SHOWN = 'shown';\nconst GL_DROPDOWN_HIDDEN = 'hidden';\nconst GL_DROPDOWN_BEFORE_CLOSE = 'beforeClose';\nconst GL_DROPDOWN_FOCUS_CONTENT = 'focusContent';\n\n// KEY Codes\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_UP = 'ArrowUp';\nconst END = 'End';\nconst ENTER = 'Enter';\nconst HOME = 'Home';\nconst SPACE = 'Space';\n\n// Positioning strategies\n// https://floating-ui.com/docs/computePosition#strategy\nconst POSITION_ABSOLUTE = 'absolute';\nconst POSITION_FIXED = 'fixed';\nconst GL_DROPDOWN_CONTENTS_CLASS = 'gl-new-dropdown-contents';\n\nexport { ARROW_DOWN, ARROW_UP, END, ENTER, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_FOCUS_CONTENT, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_SHOWN, HOME, POSITION_ABSOLUTE, POSITION_FIXED, SPACE };\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getProjectPipelineStatistics\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"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\":\"pipelineAnalytics\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"weekPipelinesTotals\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"weekPipelinesLabels\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"weekPipelinesSuccessful\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"monthPipelinesLabels\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"monthPipelinesTotals\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"monthPipelinesSuccessful\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"yearPipelinesLabels\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"yearPipelinesTotals\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"yearPipelinesSuccessful\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineTimesLabels\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineTimesValues\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":436}};\n doc.loc.source = {\"body\":\"query getProjectPipelineStatistics($projectPath: ID!) {\\n project(fullPath: $projectPath) {\\n id\\n pipelineAnalytics {\\n weekPipelinesTotals\\n weekPipelinesLabels\\n weekPipelinesSuccessful\\n monthPipelinesLabels\\n monthPipelinesTotals\\n monthPipelinesSuccessful\\n yearPipelinesLabels\\n yearPipelinesTotals\\n yearPipelinesSuccessful\\n pipelineTimesLabels\\n pipelineTimesValues\\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[\"getProjectPipelineStatistics\"] = oneQuery(doc, \"getProjectPipelineStatistics\");\n \n","import GlClearIconButton from '../../../shared_components/clear_icon_button/clear_icon_button';\nimport GlIcon from '../../icon/icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlListboxSearchInput',\n components: {\n GlClearIconButton,\n GlIcon\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n /**\n * If provided, used as value of search input\n */\n value: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Search input placeholder text and aria-label\n */\n placeholder: {\n type: String,\n required: false,\n default: 'Search'\n }\n },\n computed: {\n hasValue() {\n return Boolean(this.value.length);\n },\n inputListeners() {\n return {\n ...this.$listeners,\n input: event => {\n this.$emit('input', event.target.value);\n }\n };\n }\n },\n methods: {\n clearInput() {\n this.$emit('input', '');\n this.focusInput();\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-listbox-search\"},[_c('gl-icon',{staticClass:\"gl-listbox-search-icon\",attrs:{\"name\":\"search-sm\",\"size\":12}}),_vm._v(\" \"),_c('input',_vm._g({ref:\"input\",staticClass:\"gl-listbox-search-input\",attrs:{\"type\":\"search\",\"aria-label\":_vm.placeholder,\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value}},_vm.inputListeners)),_vm._v(\" \"),(_vm.hasValue)?_c('gl-clear-icon-button',{staticClass:\"gl-listbox-search-clear-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)}}}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlListboxGroup',\n props: {\n name: {\n type: String,\n required: true\n },\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n created() {\n this.nameId = uniqueId('gl-listbox-group-');\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"gl-mb-0 gl-pl-0\",attrs:{\"role\":\"group\",\"aria-labelledby\":_vm.nameId}},[_c('li',{staticClass:\"gl-pb-2 gl-pl-4 gl-pt-3 gl-text-sm gl-font-bold gl-text-strong\",class:{ 'gl-sr-only': _vm.textSrOnly },attrs:{\"id\":_vm.nameId,\"role\":\"presentation\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.name))]})],2),_vm._v(\" \"),_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport isNil from 'lodash/isNil';\nimport { stopEvent } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, HOME, END, ARROW_UP, ARROW_DOWN, ENTER } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport GlLoadingIcon from '../../loading_icon/loading_icon';\nimport GlIntersectionObserver from '../../../utilities/intersection_observer/intersection_observer';\nimport GlSearchBoxByType from '../../search_box_by_type/search_box_by_type';\nimport GlBaseDropdown from '../base_dropdown/base_dropdown';\nimport { translatePlural } from '../../../../utils/i18n';\nimport GlListboxItem from './listbox_item';\nimport GlListboxSearchInput from './listbox_search_input';\nimport GlListboxGroup from './listbox_group';\nimport { itemsValidator, isOption, flattenedOptions } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst ITEM_SELECTOR = '[role=\"option\"]';\nconst HEADER_ITEMS_BORDER_CLASSES = ['gl-border-b-1', 'gl-border-b-solid', 'gl-border-b-dropdown-divider'];\nconst GROUP_TOP_BORDER_CLASSES = ['gl-border-t-1', 'gl-border-t-solid', 'gl-border-t-dropdown-divider', 'gl-pt-1', 'gl-mt-2'];\nconst SEARCH_INPUT_SELECTOR = '.gl-listbox-search-input';\nvar script = {\n name: 'GlCollapsibleListbox',\n HEADER_ITEMS_BORDER_CLASSES,\n events: {\n GL_DROPDOWN_SHOWN,\n GL_DROPDOWN_HIDDEN\n },\n components: {\n GlBaseDropdown,\n GlListboxItem,\n GlListboxGroup,\n GlButton,\n GlSearchBoxByType,\n GlListboxSearchInput,\n GlLoadingIcon,\n GlIntersectionObserver\n },\n model: {\n prop: 'selected',\n event: 'select'\n },\n props: {\n /**\n * Items to display in the dropdown\n */\n items: {\n type: Array,\n required: false,\n default: () => [],\n validator: itemsValidator\n },\n /**\n * Array of selected items values for multi-select and selected item value for single-select\n */\n selected: {\n type: [Array, String, Number],\n required: false,\n default: () => []\n },\n /**\n * Allow multi-selection\n */\n multiple: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Toggle button text\n */\n toggleText: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Toggle text to be read by screen readers only\n */\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n /** The header text */\n headerText: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Styling option - dropdown's toggle category\n */\n category: {\n type: String,\n required: false,\n default: buttonCategoryOptions.primary,\n validator: value => value in buttonCategoryOptions\n },\n /**\n * Styling option - dropdown's toggle variant\n */\n variant: {\n type: String,\n required: false,\n default: dropdownVariantOptions.default,\n validator: value => value in dropdownVariantOptions\n },\n /**\n * The size of the dropdown toggle\n */\n size: {\n type: String,\n required: false,\n default: 'medium',\n validator: value => value in buttonSizeOptions\n },\n /**\n * Icon name that will be rendered in the toggle button\n */\n icon: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Set to \"true\" to disable the dropdown\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Set to \"true\" when dropdown content (items) is loading\n * It will render a small loader in the dropdown toggle and make it disabled\n */\n loading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Additional CSS classes to customize toggle appearance\n */\n toggleClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n /**\n * Set to \"true\" to hide the caret\n */\n noCaret: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Align listbox menu with respect to the toggle button\n */\n placement: {\n type: String,\n required: false,\n default: 'bottom-start',\n validator: value => Object.keys(dropdownPlacements).includes(value)\n },\n /**\n * Center selected item checkmark\n */\n isCheckCentered: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * The `aria-labelledby` attribute value for the toggle button\n * Provide the string of ids seperated by space\n */\n toggleAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The `aria-labelledby` attribute value for the list of options\n * Provide the string of ids seperated by space\n */\n listAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Enable search\n */\n searchable: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Set to \"true\" when items search is in progress.\n * It will display loading icon below the search input\n */\n searching: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Enables infinite scroll.\n * When set to `true`, the `@bottom-reached` event will be fired when\n * the bottom of the listbox is scrolled to.\n * Does not support groups.\n */\n infiniteScroll: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * This prop is used for infinite scroll.\n * It represents the total number of items that exist,\n * even if they have not yet been loaded.\n * Do not set this prop if the total number of items is unknown.\n */\n totalItems: {\n type: Number,\n required: false,\n default: null\n },\n /**\n * This prop is used for infinite scroll.\n * Set to `true` when more items are being loaded.\n */\n infiniteScrollLoading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Message to be displayed when filtering produced no results\n */\n noResultsText: {\n type: String,\n required: false,\n default: 'No results found'\n },\n /**\n * Search input placeholder text and aria-label\n */\n searchPlaceholder: {\n type: String,\n required: false,\n default: 'Search'\n },\n /**\n * The reset button's label, to be rendered in the header. If this is omitted, the button is not\n * rendered.\n * The reset button requires a header to be set, so this prop should be used in conjunction with\n * headerText.\n */\n resetButtonLabel: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * The select all button's label, to be rendered in the header. If this is omitted, the button is not\n * rendered.\n * The select all button requires a header to be set, so this prop should be used in conjunction with\n * headerText.\n */\n showSelectAllButtonLabel: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Render the toggle button as a block element\n */\n block: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Custom offset to be applied to Floating UI's offset middleware.\n * https://floating-ui.com/docs/offset\n */\n dropdownOffset: {\n type: [Number, Object],\n required: false,\n default: undefined\n },\n /**\n * Lets the dropdown extend to match its content's width, up to a maximum width\n * defined by the `$gl-new-dropdown-max-width` variable.\n */\n fluidWidth: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n * fit in, setting this to fixed will let it position itself above its container.\n * https://floating-ui.com/docs/computePosition#strategy\n */\n positioningStrategy: {\n type: String,\n required: false,\n default: POSITION_ABSOLUTE,\n validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n },\n /**\n * Opens dropdown on render\n */\n startOpened: {\n type: Boolean,\n required: false,\n default: false\n },\n srOnlyResultsLabel: {\n type: Function,\n required: false,\n default: translatePlural('GlCollapsibleListbox.srOnlyResultsLabel', '%d result', '%d results')\n }\n },\n data() {\n return {\n selectedValues: [],\n toggleId: uniqueId('dropdown-toggle-btn-'),\n listboxId: uniqueId('listbox-'),\n nextFocusedItemIndex: null,\n searchStr: '',\n topBoundaryVisible: true,\n bottomBoundaryVisible: true\n };\n },\n computed: {\n listboxTag() {\n if (!this.hasItems || isOption(this.items[0])) return 'ul';\n return 'div';\n },\n listboxClasses() {\n return {\n 'top-scrim-visible': !this.topBoundaryVisible,\n 'bottom-scrim-visible': !this.bottomBoundaryVisible,\n [GL_DROPDOWN_CONTENTS_CLASS]: true\n };\n },\n itemTag() {\n return this.listboxTag === 'ul' ? 'li' : 'div';\n },\n flattenedOptions() {\n return flattenedOptions(this.items);\n },\n searchHasOptions() {\n return this.flattenedOptions.length > 0 && this.searchStr;\n },\n hasItems() {\n return this.items.length > 0;\n },\n listboxToggleText() {\n if (!this.toggleText) {\n if (!this.multiple && this.selectedValues.length) {\n var _this$flattenedOption;\n return (_this$flattenedOption = this.flattenedOptions.find(_ref => {\n let {\n value\n } = _ref;\n return value === this.selectedValues[0];\n })) === null || _this$flattenedOption === void 0 ? void 0 : _this$flattenedOption.text;\n }\n return '';\n }\n return this.toggleText;\n },\n selectedIndices() {\n return this.selectedValues.map(selected => this.flattenedOptions.findIndex(_ref2 => {\n let {\n value\n } = _ref2;\n return value === selected;\n })).sort();\n },\n showList() {\n return this.flattenedOptions.length && !this.searching;\n },\n showNoResultsText() {\n return !this.flattenedOptions.length && !this.searching;\n },\n announceSRSearchResults() {\n return this.searchable && !this.showNoResultsText;\n },\n headerId() {\n return this.headerText && uniqueId('listbox-header-');\n },\n showResetButton() {\n if (!this.resetButtonLabel) {\n return false;\n }\n\n /**\n * if dropdown has no items\n * reset all should be hidden\n */\n if (!this.hasItems) {\n return false;\n }\n\n // hide if no selection\n if (!this.selected || this.selected.length === 0) {\n return false;\n }\n\n // only show reset button if show all button is not there\n return !this.showSelectAllButton;\n },\n showSelectAllButton() {\n if (!this.showSelectAllButtonLabel) {\n return false;\n }\n if (!this.multiple) {\n return false;\n }\n\n /**\n * if dropdown has no items\n * select all should be hidden\n */\n if (!this.hasItems) {\n return false;\n }\n return this.selected.length !== this.flattenedOptions.length;\n },\n showIntersectionObserver() {\n return this.infiniteScroll && !this.infiniteScrollLoading && !this.loading && !this.searching;\n },\n hasCustomToggle() {\n return Boolean(this.$scopedSlots.toggle);\n },\n hasSelection() {\n return Boolean(this.selectedValues.length);\n },\n toggleButtonClasses() {\n const toggleClasses = [this.toggleClass];\n if (!this.hasSelection) {\n toggleClasses.push('!gl-text-subtle');\n }\n return toggleClasses;\n },\n hasHeader() {\n return this.headerText || this.searchable;\n },\n hasFooter() {\n return Boolean(this.$scopedSlots.footer);\n }\n },\n watch: {\n selected: {\n immediate: true,\n handler(newSelected) {\n if (Array.isArray(newSelected)) {\n if (process.env.NODE_ENV !== 'production' && !this.multiple && newSelected.length) {\n throw new Error('To allow multi-selection, please, set \"multiple\" property to \"true\"');\n }\n this.selectedValues = [...newSelected];\n } else {\n this.selectedValues = isNil(newSelected) ? [] : [newSelected];\n }\n }\n },\n items: {\n handler() {\n this.$nextTick(() => {\n /* Every time the list of items changes (on search),\n * the observed elements are recreated, thus we need to start obesrving them again */\n this.observeScroll();\n\n /**\n * Every time the list of items changes, and there is a search string,\n * we want to visually highlight the first item\n */\n if (this.searchHasOptions) {\n this.nextFocusedItemIndex = 0;\n } else {\n this.nextFocusedItemIndex = null;\n }\n });\n }\n },\n ...(process.env.NODE_ENV !== 'production' ? {\n resetButtonLabel: {\n immediate: true,\n handler(newResetButtonLabel) {\n if (newResetButtonLabel && !this.headerText) {\n throw new Error('The reset button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the resetButtonLabel prop.');\n }\n }\n },\n showSelectAllButtonLabel: {\n immediate: true,\n handler(showSelectAllButtonLabel) {\n if (showSelectAllButtonLabel && !this.headerText) {\n throw new Error('The select all button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the showSelectAllButtonLabel prop.');\n }\n }\n },\n infiniteScroll: {\n immediate: true,\n handler(newValue) {\n if (newValue && this.items.some(item => !isOption(item))) {\n // eslint-disable-next-line no-console\n console.warn('When using grouped options infinite scroll can only be used on the last group.');\n }\n }\n }\n } : {})\n },\n mounted() {\n if (this.startOpened) {\n this.open();\n }\n this.observeScroll();\n },\n beforeDestroy() {\n var _this$scrollObserver;\n (_this$scrollObserver = this.scrollObserver) === null || _this$scrollObserver === void 0 ? void 0 : _this$scrollObserver.disconnect();\n },\n methods: {\n open() {\n this.$refs.baseDropdown.open();\n },\n close() {\n this.$refs.baseDropdown.close();\n },\n groupClasses(index) {\n return index === 0 ? null : GROUP_TOP_BORDER_CLASSES;\n },\n onShow() {\n if (this.searchable) {\n this.focusSearchInput();\n\n /**\n * If the search string is not empty, highlight the first item\n */\n if (this.searchHasOptions) {\n this.nextFocusedItemIndex = 0;\n }\n } else {\n var _this$selectedIndices;\n this.focusItem((_this$selectedIndices = this.selectedIndices[0]) !== null && _this$selectedIndices !== void 0 ? _this$selectedIndices : 0, this.getFocusableListItemElements());\n }\n /**\n * Emitted when dropdown is shown\n *\n * @event shown\n */\n this.$emit(GL_DROPDOWN_SHOWN);\n },\n onHide() {\n /**\n * Emitted when dropdown is hidden\n *\n * @event hidden\n */\n this.$emit(GL_DROPDOWN_HIDDEN);\n this.nextFocusedItemIndex = null;\n },\n onKeydown(event) {\n const {\n code,\n target\n } = event;\n const elements = this.getFocusableListItemElements();\n if (elements.length < 1) return;\n let stop = true;\n const isSearchInput = target.matches(SEARCH_INPUT_SELECTOR);\n if (code === HOME) {\n if (isSearchInput) {\n return;\n }\n this.focusItem(0, elements);\n } else if (code === END) {\n if (isSearchInput) {\n return;\n }\n this.focusItem(elements.length - 1, elements);\n } else if (code === ARROW_UP) {\n if (isSearchInput) {\n return;\n }\n if (this.searchable && elements.indexOf(target) === 0) {\n this.focusSearchInput();\n if (!this.searchHasOptions) {\n this.nextFocusedItemIndex = null;\n }\n } else {\n this.focusNextItem(event, elements, -1);\n }\n } else if (code === ARROW_DOWN) {\n if (isSearchInput) {\n this.focusItem(0, elements);\n } else {\n this.focusNextItem(event, elements, 1);\n }\n } else if (code === ENTER && isSearchInput) {\n if (this.searchHasOptions && elements.length > 0) {\n this.onSelect(this.flattenedOptions[0], true);\n }\n stop = true;\n } else {\n stop = false;\n }\n if (stop) {\n stopEvent(event);\n }\n },\n getFocusableListItemElements() {\n var _this$$refs$list;\n const items = (_this$$refs$list = this.$refs.list) === null || _this$$refs$list === void 0 ? void 0 : _this$$refs$list.querySelectorAll(ITEM_SELECTOR);\n return Array.from(items || []);\n },\n focusNextItem(event, elements, offset) {\n const {\n target\n } = event;\n const currentIndex = elements.indexOf(target);\n const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n this.focusItem(nextIndex, elements);\n },\n focusItem(index, elements) {\n var _elements$index;\n this.nextFocusedItemIndex = index;\n (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n },\n focusSearchInput() {\n this.$refs.searchBox.focusInput();\n },\n onSelect(item, isSelected) {\n if (this.multiple) {\n this.onMultiSelect(item.value, isSelected);\n } else {\n this.onSingleSelect(item.value, isSelected);\n }\n },\n isHighlighted(item) {\n return this.nextFocusedItemIndex === this.flattenedOptions.indexOf(item);\n },\n isSelected(item) {\n return this.selectedValues.some(value => value === item.value);\n },\n isFocused(item) {\n return this.nextFocusedItemIndex === this.flattenedOptions.indexOf(item);\n },\n onSingleSelect(value, isSelected) {\n if (isSelected) {\n /**\n * Emitted when selection is changed\n *\n * @event select\n */\n this.$emit('select', value);\n }\n this.closeAndFocus();\n },\n onMultiSelect(value, isSelected) {\n if (isSelected) {\n this.$emit('select', [...this.selectedValues, value]);\n } else {\n this.$emit('select', this.selectedValues.filter(selectedValue => selectedValue !== value));\n }\n },\n search(searchTerm) {\n /**\n * Emitted when the search query string is changed\n *\n * @event search\n * @type {string}\n */\n this.$emit('search', searchTerm);\n },\n onResetButtonClicked() {\n /**\n * Emitted when the reset button is clicked\n *\n * @event reset\n */\n this.$emit('reset');\n },\n onSelectAllButtonClicked() {\n /**\n * Emitted when the select all button is clicked\n *\n * @event select-all\n */\n this.$emit('select-all');\n },\n closeAndFocus() {\n this.$refs.baseDropdown.closeAndFocus();\n },\n onIntersectionObserverAppear() {\n /**\n * Emitted when bottom of listbox has been scrolled to.\n * Used for infinite scroll.\n *\n * @event bottom-reached\n */\n this.$emit('bottom-reached');\n },\n listboxItemMoreItemsAriaAttributes(index) {\n if (this.totalItems === null) {\n return {};\n }\n return {\n 'aria-setsize': this.totalItems,\n 'aria-posinset': index + 1\n };\n },\n observeScroll() {\n var _this$scrollObserver2;\n const root = this.$refs.list;\n const options = {\n rootMargin: '8px',\n root,\n threshold: 1.0\n };\n (_this$scrollObserver2 = this.scrollObserver) === null || _this$scrollObserver2 === void 0 ? void 0 : _this$scrollObserver2.disconnect();\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n var _entry$target;\n this[(_entry$target = entry.target) === null || _entry$target === void 0 ? void 0 : _entry$target.$__visibilityProp] = entry.isIntersecting;\n });\n }, options);\n const topBoundary = this.$refs['top-boundary'];\n const bottomBoundary = this.$refs['bottom-boundary'];\n if (topBoundary) {\n topBoundary.$__visibilityProp = 'topBoundaryVisible';\n observer.observe(topBoundary);\n }\n if (bottomBoundary) {\n bottomBoundary.$__visibilityProp = 'bottomBoundaryVisible';\n observer.observe(bottomBoundary);\n }\n this.scrollObserver = observer;\n },\n isOption\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",attrs:{\"aria-haspopup\":\"listbox\",\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"block\":_vm.block,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.listboxToggleText,\"toggle-class\":_vm.toggleButtonClasses,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.headerText)?_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center !gl-p-4\",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:\"gl-grow gl-pr-2 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.headerId,\"data-testid\":\"listbox-header-text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.headerText)+\"\\n \")]),_vm._v(\" \"),(_vm.showResetButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-focus-inset\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-reset-button\"},on:{\"click\":_vm.onResetButtonClicked}},[_vm._v(\"\\n \"+_vm._s(_vm.resetButtonLabel)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showSelectAllButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-focus-inset\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-select-all-button\"},on:{\"click\":_vm.onSelectAllButtonClicked}},[_vm._v(\"\\n \"+_vm._s(_vm.showSelectAllButtonLabel)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.searchable)?_c('div',{class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('gl-listbox-search-input',{ref:\"searchBox\",class:{ 'gl-listbox-topmost': !_vm.headerText },attrs:{\"data-testid\":\"listbox-search-input\",\"placeholder\":_vm.searchPlaceholder},on:{\"input\":_vm.search,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},_vm.onKeydown]},model:{value:(_vm.searchStr),callback:function ($$v) {_vm.searchStr=$$v;},expression:\"searchStr\"}}),_vm._v(\" \"),(_vm.searching)?_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-search-loader\",\"size\":\"md\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showList)?_c(_vm.listboxTag,{ref:\"list\",tag:\"component\",staticClass:\"gl-new-dropdown-contents gl-new-dropdown-contents-with-scrim-overlay\",class:_vm.listboxClasses,attrs:{\"id\":_vm.listboxId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.headerId || _vm.toggleId,\"role\":\"listbox\",\"tabindex\":\"0\"},on:{\"keydown\":_vm.onKeydown}},[_c(_vm.itemTag,{tag:\"component\",staticClass:\"top-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"top-scrim\"}},[_c('div',{staticClass:\"top-scrim\",class:{ 'top-scrim-light': !_vm.hasHeader, 'top-scrim-dark': _vm.hasHeader }})]),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"top-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_vm._l((_vm.items),function(item,index){return [(_vm.isOption(item))?[_c('gl-listbox-item',_vm._b({key:item.value,attrs:{\"data-testid\":(\"listbox-item-\" + (item.value)),\"is-highlighted\":_vm.isHighlighted(item),\"is-selected\":_vm.isSelected(item),\"is-focused\":_vm.isFocused(item),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(item, $event)}}},'gl-listbox-item',_vm.listboxItemMoreItemsAriaAttributes(index),false),[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n \"+_vm._s(item.text)+\"\\n \")]},{\"item\":item})],2)]:[_c('gl-listbox-group',{key:item.text,class:_vm.groupClasses(index),attrs:{\"name\":item.text,\"text-sr-only\":item.textSrOnly},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._l((item.options),function(option){return _c('gl-listbox-item',{key:option.value,attrs:{\"data-testid\":(\"listbox-item-\" + (option.value)),\"is-highlighted\":_vm.isHighlighted(option),\"is-selected\":_vm.isSelected(option),\"is-focused\":_vm.isFocused(option),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(option, $event)}}},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n \"+_vm._s(option.text)+\"\\n \")]},{\"item\":option})],2)})],2)]]}),_vm._v(\" \"),(_vm.infiniteScrollLoading)?_c(_vm.itemTag,{tag:\"component\"},[_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-infinite-scroll-loader\",\"size\":\"md\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showIntersectionObserver)?_c('gl-intersection-observer',{on:{\"appear\":_vm.onIntersectionObserverAppear}}):_vm._e(),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"bottom-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c(_vm.itemTag,{tag:\"component\",staticClass:\"bottom-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"bottom-scrim\"}},[_c('div',{staticClass:\"bottom-scrim\",class:{ '!gl-rounded-none': _vm.hasFooter }})])],2):_vm._e(),_vm._v(\" \"),(_vm.announceSRSearchResults)?_c('span',{staticClass:\"gl-sr-only\",attrs:{\"data-testid\":\"listbox-number-of-results\",\"aria-live\":\"assertive\"}},[_vm._t(\"search-summary-sr-only\",function(){return [_vm._v(\"\\n \"+_vm._s(_vm.srOnlyResultsLabel(_vm.flattenedOptions.length))+\"\\n \")]})],2):(_vm.showNoResultsText)?_c('div',{staticClass:\"gl-py-3 gl-pl-7 gl-pr-5 gl-text-base gl-text-subtle\",attrs:{\"aria-live\":\"assertive\",\"data-testid\":\"listbox-no-results-text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.noResultsText)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { ITEM_SELECTOR, SEARCH_INPUT_SELECTOR };\n","import memoize from 'lodash/memoize';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst getObserver = memoize(options => new IntersectionObserver(entries => {\n entries.forEach(entry => {\n entry.target.$_gl_intersectionHandler(entry);\n });\n}, options || {}));\nvar script = {\n name: 'GlIntersectionObserver',\n props: {\n /**\n * Extra options to pass directly to the intersection observer API.\n */\n options: {\n type: Object,\n required: false,\n default: null\n }\n },\n mounted() {\n const observer = getObserver(this.options);\n this.$el.$_gl_intersectionHandler = entry => {\n /**\n * Emitted when the element's visibility changes\n */\n this.$emit('update', entry);\n if (entry.isIntersecting) {\n /**\n * Emitted when the element appears on the page\n */\n this.$emit('appear');\n } else {\n /**\n * Emitted when the element disappears from the page\n */\n this.$emit('disappear');\n }\n };\n this.$el.$_gl_intersectionObserver = observer;\n observer.observe(this.$el);\n },\n destroyed() {\n this.$el.$_gl_intersectionObserver.unobserve(this.$el);\n delete this.$el.$_gl_intersectionHandler;\n delete this.$el.$_gl_intersectionObserver;\n },\n // Expose getObserver method for tests\n getObserver\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import { formatNumber } from '~/locale';\n\n/**\n * Formats a number as a string using `toLocaleString`.\n *\n * @param {Number} number to be converted\n *\n * @param {options.maxLength} Max output char length at the\n * expense of precision, if the output is longer than this,\n * the formatter switches to using exponential notation.\n *\n * @param {options.valueFactor} Value is multiplied by this factor,\n * useful for value normalization or to alter orders of magnitude.\n *\n * @param {options} Other options to be passed to\n * `formatNumber` such as `valueFactor`, `unit` and `style`.\n *\n */\nconst formatNumberNormalized = (value, { maxLength, valueFactor = 1, ...options }) => {\n const formatted = formatNumber(value * valueFactor, options);\n\n if (maxLength !== undefined && formatted.length > maxLength) {\n // 123456 becomes 1.23e+8\n return value.toExponential(2);\n }\n return formatted;\n};\n\n/**\n * This function converts the old positional arguments into an options\n * object.\n *\n * This is done so we can support legacy fractionDigits and maxLength as positional\n * arguments, as well as the better options object.\n *\n * @param {Object|Number} options\n * @returns {Object} options given to the formatter\n */\nconst getFormatterArguments = (options) => {\n if (typeof options === 'object' && options !== null) {\n return options;\n }\n return {\n maxLength: options,\n };\n};\n\n/**\n * Formats a number as a string scaling it up according to units.\n *\n * While the number is scaled down, the units are scaled up.\n *\n * @param {Array} List of units of the scale\n * @param {Number} unitFactor - Factor of the scale for each\n * unit after which the next unit is used scaled.\n */\nconst scaledFormatter = (units, unitFactor = 1000) => {\n if (unitFactor === 0) {\n return new RangeError(`unitFactor cannot have the value 0.`);\n }\n\n return (value, fractionDigits, options) => {\n const { maxLength, unitSeparator = '' } = getFormatterArguments(options);\n\n if (value === null) {\n return '';\n }\n if (\n value === Number.NEGATIVE_INFINITY ||\n value === Number.POSITIVE_INFINITY ||\n Number.isNaN(value)\n ) {\n return value.toLocaleString(undefined);\n }\n\n let num = value;\n let scale = 0;\n const limit = units.length;\n\n while (Math.abs(num) >= unitFactor) {\n scale += 1;\n num /= unitFactor;\n\n if (scale >= limit) {\n return 'NA';\n }\n }\n\n const unit = units[scale];\n const length = maxLength !== undefined ? maxLength - unit.length : undefined;\n\n return `${formatNumberNormalized(num, {\n maxLength: length,\n maximumFractionDigits: fractionDigits,\n minimumFractionDigits: fractionDigits,\n })}${unitSeparator}${unit}`;\n };\n};\n\n/**\n * Returns a function that formats a number as a string.\n */\nexport const numberFormatter = (style = 'decimal', valueFactor = 1) => {\n return (value, fractionDigits, options) => {\n const { maxLength } = getFormatterArguments(options);\n\n return formatNumberNormalized(value, {\n maxLength,\n valueFactor,\n style,\n maximumFractionDigits: fractionDigits,\n minimumFractionDigits: fractionDigits,\n });\n };\n};\n\n/**\n * Returns a function that formats a number as a string with a suffix.\n */\nexport const suffixFormatter = (unit = '', valueFactor = 1) => {\n return (value, fractionDigits, options) => {\n const { maxLength, unitSeparator = '' } = getFormatterArguments(options);\n\n const length = maxLength !== undefined ? maxLength - unit.length : undefined;\n return `${formatNumberNormalized(value, {\n maxLength: length,\n valueFactor,\n maximumFractionDigits: fractionDigits,\n minimumFractionDigits: fractionDigits,\n })}${unitSeparator}${unit}`;\n };\n};\n\n/**\n * Returns a function that formats a number scaled using SI units notation.\n */\nexport const scaledSIFormatter = (unit = '', prefixOffset = 0) => {\n const fractional = ['y', 'z', 'a', 'f', 'p', 'n', 'µ', 'm'];\n const multiplicative = ['k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n const symbols = [...fractional, '', ...multiplicative];\n\n const units = symbols.slice(fractional.length + prefixOffset).map((prefix) => {\n return `${prefix}${unit}`;\n });\n\n if (!units.length) {\n // eslint-disable-next-line @gitlab/require-i18n-strings\n throw new RangeError('The unit cannot be converted, please try a different scale');\n }\n\n return scaledFormatter(units);\n};\n\n/**\n * Returns a function that formats a number scaled using SI units notation.\n */\nexport const scaledBinaryFormatter = (unit = '', prefixOffset = 0) => {\n // eslint-disable-next-line @gitlab/require-i18n-strings\n const multiplicative = ['Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi'];\n const symbols = ['', ...multiplicative];\n\n const units = symbols.slice(prefixOffset).map((prefix) => {\n return `${prefix}${unit}`;\n });\n\n if (!units.length) {\n // eslint-disable-next-line @gitlab/require-i18n-strings\n throw new RangeError('The unit cannot be converted, please try a different scale');\n }\n\n return scaledFormatter(units, 1024);\n};\n","import { engineeringNotation } from '@gitlab/ui/src/utils/number_utils';\nimport { s__ } from '~/locale';\n\nimport {\n suffixFormatter,\n scaledSIFormatter,\n scaledBinaryFormatter,\n numberFormatter,\n} from './formatter_factory';\n\n/**\n * Supported formats\n *\n * Based on:\n *\n * https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier\n */\nexport const SUPPORTED_FORMATS = {\n // Number\n number: 'number',\n percent: 'percent',\n percentHundred: 'percentHundred',\n\n // Duration\n days: 'days',\n seconds: 'seconds',\n milliseconds: 'milliseconds',\n\n // Digital (Metric)\n decimalBytes: 'decimalBytes',\n kilobytes: 'kilobytes',\n megabytes: 'megabytes',\n gigabytes: 'gigabytes',\n terabytes: 'terabytes',\n petabytes: 'petabytes',\n\n // Digital (IEC)\n bytes: 'bytes',\n kibibytes: 'kibibytes',\n mebibytes: 'mebibytes',\n gibibytes: 'gibibytes',\n tebibytes: 'tebibytes',\n pebibytes: 'pebibytes',\n\n // Engineering Notation\n engineering: 'engineering',\n};\n\n/**\n * Returns a function that formats number to different units.\n *\n * Used for dynamic formatting, for more convenience, use the functions below.\n *\n * @param {String} format - Format to use, must be one of the SUPPORTED_FORMATS. Defaults to engineering notation.\n */\nexport const getFormatter = (format = SUPPORTED_FORMATS.engineering) => {\n // Number\n if (format === SUPPORTED_FORMATS.number) {\n return numberFormatter();\n }\n if (format === SUPPORTED_FORMATS.percent) {\n return numberFormatter('percent');\n }\n if (format === SUPPORTED_FORMATS.percentHundred) {\n return numberFormatter('percent', 1 / 100);\n }\n\n // Durations\n if (format === SUPPORTED_FORMATS.days) {\n return suffixFormatter(s__('Units|d'));\n }\n if (format === SUPPORTED_FORMATS.seconds) {\n return suffixFormatter(s__('Units|s'));\n }\n if (format === SUPPORTED_FORMATS.milliseconds) {\n return suffixFormatter(s__('Units|ms'));\n }\n\n // Digital (Metric)\n if (format === SUPPORTED_FORMATS.decimalBytes) {\n return scaledSIFormatter('B');\n }\n if (format === SUPPORTED_FORMATS.kilobytes) {\n return scaledSIFormatter('B', 1);\n }\n if (format === SUPPORTED_FORMATS.megabytes) {\n return scaledSIFormatter('B', 2);\n }\n if (format === SUPPORTED_FORMATS.gigabytes) {\n return scaledSIFormatter('B', 3);\n }\n if (format === SUPPORTED_FORMATS.terabytes) {\n return scaledSIFormatter('B', 4);\n }\n if (format === SUPPORTED_FORMATS.petabytes) {\n return scaledSIFormatter('B', 5);\n }\n\n // Digital (IEC)\n if (format === SUPPORTED_FORMATS.bytes) {\n return scaledBinaryFormatter('B');\n }\n if (format === SUPPORTED_FORMATS.kibibytes) {\n return scaledBinaryFormatter('B', 1);\n }\n if (format === SUPPORTED_FORMATS.mebibytes) {\n return scaledBinaryFormatter('B', 2);\n }\n if (format === SUPPORTED_FORMATS.gibibytes) {\n return scaledBinaryFormatter('B', 3);\n }\n if (format === SUPPORTED_FORMATS.tebibytes) {\n return scaledBinaryFormatter('B', 4);\n }\n if (format === SUPPORTED_FORMATS.pebibytes) {\n return scaledBinaryFormatter('B', 5);\n }\n\n // Default\n if (format === SUPPORTED_FORMATS.engineering) {\n return engineeringNotation;\n }\n\n // Fail so client library addresses issue\n throw TypeError(`${format} is not a valid number format`);\n};\n\n/**\n * Formats a number\n *\n * @function\n * @param {Number} value - Number to format\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const number = getFormatter(SUPPORTED_FORMATS.number);\n\n/**\n * Formats a percentage (0 - 1)\n *\n * @function\n * @param {Number} value - Number to format, `1` is rendered as `100%`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const percent = getFormatter(SUPPORTED_FORMATS.percent);\n\n/**\n * Formats a percentage (0 to 100)\n *\n * @function\n * @param {Number} value - Number to format, `100` is rendered as `100%`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const percentHundred = getFormatter(SUPPORTED_FORMATS.percentHundred);\n\n/**\n * Formats a number of days\n *\n * @function\n * @param {Number} value - Number to format, `1` is rendered as `1d`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const days = getFormatter(SUPPORTED_FORMATS.days);\n\n/**\n * Formats a number of seconds\n *\n * @function\n * @param {Number} value - Number to format, `1` is rendered as `1s`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const seconds = getFormatter(SUPPORTED_FORMATS.seconds);\n\n/**\n * Formats a number of milliseconds with ms as units\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1ms`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const milliseconds = getFormatter(SUPPORTED_FORMATS.milliseconds);\n\n/**\n * Formats a number of bytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1B`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const decimalBytes = getFormatter(SUPPORTED_FORMATS.decimalBytes);\n\n/**\n * Formats a number of kilobytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1kB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const kilobytes = getFormatter(SUPPORTED_FORMATS.kilobytes);\n\n/**\n * Formats a number of megabytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1MB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const megabytes = getFormatter(SUPPORTED_FORMATS.megabytes);\n\n/**\n * Formats a number of gigabytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1GB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const gigabytes = getFormatter(SUPPORTED_FORMATS.gigabytes);\n\n/**\n * Formats a number of terabytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1GB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const terabytes = getFormatter(SUPPORTED_FORMATS.terabytes);\n\n/**\n * Formats a number of petabytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1PB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const petabytes = getFormatter(SUPPORTED_FORMATS.petabytes);\n\n/**\n * Formats a number of bytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1B`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const bytes = getFormatter(SUPPORTED_FORMATS.bytes);\n\n/**\n * Formats a number of kilobytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1kB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const kibibytes = getFormatter(SUPPORTED_FORMATS.kibibytes);\n\n/**\n * Formats a number of megabytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1MB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const mebibytes = getFormatter(SUPPORTED_FORMATS.mebibytes);\n\n/**\n * Formats a number of gigabytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1GB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const gibibytes = getFormatter(SUPPORTED_FORMATS.gibibytes);\n\n/**\n * Formats a number of terabytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1GB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const tebibytes = getFormatter(SUPPORTED_FORMATS.tebibytes);\n\n/**\n * Formats a number of petabytes scaled up to larger digital\n * units for larger numbers.\n *\n * @function\n * @param {Number} value - Number to format, `1` is formatted as `1PB`\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - number of precision decimals\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const pebibytes = getFormatter(SUPPORTED_FORMATS.pebibytes);\n\n/**\n * Formats via engineering notation\n *\n * @function\n * @param {Number} value - Value to format\n * @param {Object} options - Formatting options\n * @param {Number} options.fractionDigits - precision decimals, defaults to 2\n * @param {Number} options.maxLength - Max length of formatted number\n * if length is exceeded, exponential format is used.\n * @param {String} options.unitSeparator - Separator between value and unit\n */\nexport const engineering = getFormatter();\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineAnalytics\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fromTime\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"toTime\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}}},\"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\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineAnalytics\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fromTime\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fromTime\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"toTime\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"toTime\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"aggregate\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"successCount\"},\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"SUCCESS\"}}],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"failedCount\"},\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"FAILED\"}}],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"durationStatistics\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"p50\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeSeries\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"period\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"DAY\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"successCount\"},\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"SUCCESS\"}}],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"failedCount\"},\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"FAILED\"}}],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"otherCount\"},\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"OTHER\"}}],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"durationStatistics\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"p50\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"p95\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":625}};\n doc.loc.source = {\"body\":\"query getPipelineAnalytics($fullPath: ID!, $fromTime: Time!, $toTime: Time!) {\\n project(fullPath: $fullPath) {\\n id\\n pipelineAnalytics(fromTime: $fromTime, toTime: $toTime) {\\n aggregate {\\n count\\n successCount: count(status: SUCCESS)\\n failedCount: count(status: FAILED)\\n durationStatistics {\\n p50\\n }\\n }\\n\\n timeSeries(period: DAY) {\\n label\\n successCount: count(status: SUCCESS)\\n failedCount: count(status: FAILED)\\n otherCount: count(status: OTHER)\\n durationStatistics {\\n p50\\n p95\\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[\"getPipelineAnalytics\"] = oneQuery(doc, \"getPipelineAnalytics\");\n \n","import GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlIcon from '../icon/icon';\nimport GlLoadingIcon from '../loading_icon/loading_icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlSearchBoxByType',\n components: {\n GlClearIconButton,\n GlIcon,\n GlFormInput,\n GlLoadingIcon\n },\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n /**\n * If provided, used as value of search input\n */\n value: {\n type: String,\n required: false,\n default: ''\n },\n borderless: {\n type: Boolean,\n required: false,\n default: false\n },\n clearButtonTitle: {\n type: String,\n required: false,\n default: () => translate('GlSearchBoxByType.clearButtonTitle', 'Clear')\n },\n /**\n * If provided and true, disables the input and controls\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Puts search box into loading state, rendering spinner\n */\n isLoading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Container for tooltip. Valid values: DOM node, selector string or `false` for default\n */\n tooltipContainer: {\n required: false,\n default: false,\n validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n }\n },\n computed: {\n inputAttributes() {\n const attributes = {\n type: 'search',\n placeholder: translate('GlSearchBoxByType.input.placeholder', 'Search'),\n ...this.$attrs\n };\n if (!attributes['aria-label']) {\n attributes['aria-label'] = attributes.placeholder;\n }\n return attributes;\n },\n hasValue() {\n return Boolean(this.value.length);\n },\n inputListeners() {\n return {\n ...this.$listeners,\n input: this.onInput,\n focusin: this.onFocusin,\n focusout: this.onFocusout\n };\n },\n showClearButton() {\n return this.hasValue && !this.disabled;\n }\n },\n methods: {\n isInputOrClearButton(element) {\n var _this$$refs$input, _this$$refs$clearButt;\n return element === ((_this$$refs$input = this.$refs.input) === null || _this$$refs$input === void 0 ? void 0 : _this$$refs$input.$el) || element === ((_this$$refs$clearButt = this.$refs.clearButton) === null || _this$$refs$clearButt === void 0 ? void 0 : _this$$refs$clearButt.$el);\n },\n clearInput() {\n this.onInput('');\n this.focusInput();\n },\n focusInput() {\n this.$refs.input.$el.focus();\n },\n onInput(value) {\n this.$emit('input', value);\n },\n onFocusout(event) {\n const {\n relatedTarget\n } = event;\n if (this.isInputOrClearButton(relatedTarget)) {\n return;\n }\n this.$emit('focusout', event);\n },\n onFocusin(event) {\n const {\n relatedTarget\n } = event;\n if (this.isInputOrClearButton(relatedTarget)) {\n return;\n }\n this.$emit('focusin', event);\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-search-box-by-type\"},[_c('gl-icon',{staticClass:\"gl-search-box-by-type-search-icon\",attrs:{\"name\":\"search\",\"variant\":\"subtle\"}}),_vm._v(\" \"),_c('gl-form-input',_vm._g(_vm._b({ref:\"input\",class:{\n 'gl-search-box-by-type-input': !_vm.borderless,\n 'gl-search-box-by-type-input-borderless': _vm.borderless,\n },attrs:{\"value\":_vm.value,\"disabled\":_vm.disabled}},'gl-form-input',_vm.inputAttributes,false),_vm.inputListeners)),_vm._v(\" \"),(_vm.isLoading || _vm.showClearButton)?_c('div',{staticClass:\"gl-search-box-by-type-right-icons\"},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-search-box-by-type-loading-icon\"}):_vm._e(),_vm._v(\" \"),(_vm.showClearButton)?_c('gl-clear-icon-button',{ref:\"clearButton\",staticClass:\"gl-search-box-by-type-clear gl-clear-icon-button\",attrs:{\"title\":_vm.clearButtonTitle,\"tooltip-container\":_vm.tooltipContainer},on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)},\"focusin\":_vm.onFocusin,\"focusout\":_vm.onFocusout}}):_vm._e()],1):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","/**\n * Adds two numbers together\n * @param {Number} a\n * @param {Number} b\n */\nexport const addition = (a, b) => a + b;\n\n/**\n * Returns the sum of all arguments\n * @param {...Number} numbers\n */\nexport const sum = (...numbers) => numbers.reduce(addition); // eslint-disable-line unicorn/no-array-callback-reference\n\n/**\n * Returns the average of all arguments\n * @param {...Number} numbers\n */\nexport const average = (...numbers) => sum(...numbers) / numbers.length;\n\n/**\n * Returns the modulo of n for a divisor.\n *\n * Maps the integer n into the range [0, divisor) when the divisor is positive,\n * and (divisor, 0] when the divisor is negative.\n *\n * This is useful when indexing into an array, to ensure you always stay within\n * the array bounds.\n *\n * See https://2ality.com/2019/08/remainder-vs-modulo.html.\n *\n * @param {number} n The number to mod.\n * @param {number} divisor The divisor (e.g., the length of an array).\n * @returns {number}\n */\nexport function modulo(n, divisor) {\n const result = ((n % divisor) + divisor) % divisor;\n // Never return -0.\n return result === 0 ? 0 : result;\n}\n\n/**\n * Convert number to engineering format, using SI suffix\n * @param {Number|String} value - Number or Number-convertible String\n * @param {Number} precision\n * @return {String} number, possibly with a suffix\n */\nexport const engineeringNotation = (value, precision = 2) => {\n const invalidValues = [NaN, Infinity, -Infinity];\n const num = Number(value);\n\n if (invalidValues.includes(num) || invalidValues.includes(Number(precision))) {\n return num.toString();\n }\n\n const allYourBase = {\n '-24': 'y',\n '-21': 'z',\n '-18': 'a',\n '-15': 'f',\n '-12': 'p',\n '-9': 'n',\n '-6': 'μ',\n '-3': 'm',\n 0: '',\n 3: 'k',\n 6: 'M',\n 9: 'G',\n 12: 'T',\n 15: 'P',\n 18: 'E',\n 21: 'Z',\n 24: 'Y',\n };\n\n const exponentialNotation = num.toExponential(precision);\n\n const power = exponentialNotation.split('e').map(Number)[1] || 0;\n\n if (power < -24 || power > 24) {\n return exponentialNotation;\n }\n\n const scaledPower = 3 * Math.floor(power / 3);\n const scaledMantissa = (exponentialNotation / 10 ** scaledPower)\n // strip trailing decimals from floating point rounding errors\n .toFixed(precision)\n // strip trailing 0s after a decimal point\n .replace(/\\.([1-9]*)0+$/, (_, fractionalDigits) => {\n if (fractionalDigits) {\n return `.${fractionalDigits}`;\n }\n return '';\n });\n\n return `${scaledMantissa}${allYourBase[scaledPower]}`;\n};\n\n/**\n * Formats a number as a locale-based string using `Intl.NumberFormat`.\n *\n * 2333 -> 2,333\n * 232324 -> 232,324\n *\n * @param {Number|string} value - number to be converted\n * @param {{}?} options - options to be passed to\n * `Intl.NumberFormat` such as `unit` and `style`.\n * @param {String|String[]} locales - If set, forces a different\n * language code from the one currently in the document.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat\n *\n * @returns {String}\n */\nexport const formatNumberToLocale = (value, options = {}, locales = undefined) => {\n if (Number.isNaN(Number(value))) {\n return value;\n }\n\n return new Intl.NumberFormat(locales, options).format(value);\n};\n\n// Converts a value (string, number, etc.) to a number\n// Taken from bootstrap-vue\nexport const toFloat = (value, defaultValue = NaN) => {\n const float = parseFloat(value);\n return Number.isNaN(float) ? defaultValue : float;\n};\n","import uniqueId from 'lodash/uniqueId';\nimport { offset, autoPlacement, shift, arrow, size, autoUpdate, computePosition } from '@floating-ui/dom';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements, dropdownAllowedAutoPlacements } from '../../../../utils/constants';\nimport { POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, ENTER, SPACE, ARROW_DOWN, GL_DROPDOWN_FOCUS_CONTENT } from '../constants';\nimport { logWarning, isElementFocusable, isElementTabbable } from '../../../../utils/utils';\nimport { OutsideDirective } from '../../../../directives/outside/outside';\nimport GlButton from '../../button/button';\nimport GlIcon from '../../icon/icon';\nimport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS, ARROW_X_MINIMUM } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BASE_DROPDOWN_CLASS = 'gl-new-dropdown';\nvar script = {\n name: 'BaseDropdown',\n BASE_DROPDOWN_CLASS,\n components: {\n GlButton,\n GlIcon\n },\n directives: {\n Outside: OutsideDirective\n },\n props: {\n toggleText: {\n type: String,\n required: false,\n default: ''\n },\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n block: {\n type: Boolean,\n required: false,\n default: false\n },\n category: {\n type: String,\n required: false,\n default: buttonCategoryOptions.primary,\n validator: value => Object.keys(buttonCategoryOptions).includes(value)\n },\n variant: {\n type: String,\n required: false,\n default: dropdownVariantOptions.default,\n validator: value => Object.keys(dropdownVariantOptions).includes(value)\n },\n size: {\n type: String,\n required: false,\n default: 'medium',\n validator: value => Object.keys(buttonSizeOptions).includes(value)\n },\n icon: {\n type: String,\n required: false,\n default: ''\n },\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n loading: {\n type: Boolean,\n required: false,\n default: false\n },\n toggleClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n noCaret: {\n type: Boolean,\n required: false,\n default: false\n },\n placement: {\n type: String,\n required: false,\n default: 'bottom-start',\n validator: value => {\n if (['left', 'center', 'right'].includes(value)) {\n logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: \"${value}\" placement is deprecated.\n Use ${dropdownPlacements[value]} instead.`);\n }\n return Object.keys(dropdownPlacements).includes(value);\n }\n },\n // ARIA props\n ariaHaspopup: {\n type: [String, Boolean],\n required: false,\n default: false,\n validator: value => {\n return ['menu', 'listbox', 'tree', 'grid', 'dialog', true, false].includes(value);\n }\n },\n /**\n * Id that will be referenced by `aria-labelledby` attribute of the dropdown content`\n */\n toggleId: {\n type: String,\n required: true\n },\n /**\n * The `aria-labelledby` attribute value for the toggle `button`\n */\n ariaLabelledby: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Custom value to be passed to the offset middleware.\n * https://floating-ui.com/docs/offset\n */\n offset: {\n type: [Number, Object],\n required: false,\n default: () => ({\n mainAxis: DEFAULT_OFFSET\n })\n },\n fluidWidth: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Strategy to be applied by computePosition. If this is set to fixed, the dropdown's position\n * needs to be set to fixed in CSS as well.\n * https://floating-ui.com/docs/computePosition#strategy\n */\n positioningStrategy: {\n type: String,\n required: false,\n default: POSITION_ABSOLUTE,\n validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n }\n },\n data() {\n return {\n openedYet: false,\n visible: false,\n baseDropdownId: uniqueId('base-dropdown-')\n };\n },\n computed: {\n hasNoVisibleToggleText() {\n var _this$toggleText;\n return !((_this$toggleText = this.toggleText) !== null && _this$toggleText !== void 0 && _this$toggleText.length) || this.textSrOnly;\n },\n isIconOnly() {\n return Boolean(this.icon && this.hasNoVisibleToggleText);\n },\n isEllipsisButton() {\n return this.isIconOnly && this.icon === 'ellipsis_h';\n },\n isCaretOnly() {\n return !this.noCaret && !this.icon && this.hasNoVisibleToggleText;\n },\n ariaAttributes() {\n return {\n 'aria-haspopup': this.ariaHaspopup,\n 'aria-expanded': String(this.visible),\n 'aria-controls': this.baseDropdownId,\n 'aria-labelledby': this.toggleLabelledBy\n };\n },\n toggleButtonClasses() {\n return [this.toggleClass, {\n 'gl-new-dropdown-toggle': true,\n 'button-ellipsis-horizontal': this.isEllipsisButton,\n 'gl-new-dropdown-icon-only btn-icon': this.isIconOnly && !this.isEllipsisButton,\n 'gl-new-dropdown-toggle-no-caret': this.noCaret,\n 'gl-new-dropdown-caret-only btn-icon': this.isCaretOnly\n }];\n },\n toggleButtonTextClasses() {\n return this.block ? 'gl-w-full' : '';\n },\n toggleLabelledBy() {\n return this.ariaLabelledby ? `${this.ariaLabelledby} ${this.toggleId}` : this.toggleId;\n },\n isDefaultToggle() {\n return !this.$scopedSlots.toggle;\n },\n toggleOptions() {\n if (this.isDefaultToggle) {\n return {\n is: GlButton,\n icon: this.icon,\n block: this.block,\n buttonTextClasses: this.toggleButtonTextClasses,\n category: this.category,\n variant: this.variant,\n size: this.size,\n disabled: this.disabled,\n loading: this.loading,\n class: this.toggleButtonClasses,\n ...this.ariaAttributes,\n listeners: {\n keydown: event => this.onKeydown(event),\n click: event => this.toggle(event)\n }\n };\n }\n return {\n is: 'div',\n class: 'gl-new-dropdown-custom-toggle',\n listeners: {\n keydown: event => this.onKeydown(event),\n click: event => this.toggle(event)\n }\n };\n },\n toggleListeners() {\n return this.toggleOptions.listeners;\n },\n toggleAttributes() {\n const {\n listeners,\n is,\n ...attributes\n } = this.toggleOptions;\n return attributes;\n },\n toggleComponent() {\n return this.toggleOptions.is;\n },\n toggleElement() {\n var _this$$refs$toggle;\n return this.$refs.toggle.$el || ((_this$$refs$toggle = this.$refs.toggle) === null || _this$$refs$toggle === void 0 ? void 0 : _this$$refs$toggle.firstElementChild);\n },\n panelClasses() {\n return {\n '!gl-block': this.visible,\n [FIXED_WIDTH_CLASS]: !this.fluidWidth,\n 'gl-fixed': this.openedYet && this.isFixed,\n 'gl-absolute': this.openedYet && !this.isFixed\n };\n },\n isFixed() {\n return this.positioningStrategy === POSITION_FIXED;\n },\n floatingUIConfig() {\n const placement = dropdownPlacements[this.placement];\n const [, alignment] = placement.split('-');\n return {\n placement,\n strategy: this.positioningStrategy,\n middleware: [offset(this.offset), autoPlacement({\n alignment,\n allowedPlacements: dropdownAllowedAutoPlacements[this.placement]\n }), shift(), arrow({\n element: this.$refs.dropdownArrow\n }), size({\n apply: _ref => {\n var _this$nonScrollableCo;\n let {\n availableHeight,\n elements\n } = _ref;\n const contentsEl = elements.floating.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n if (!contentsEl) return;\n const contentsAvailableHeight = availableHeight - ((_this$nonScrollableCo = this.nonScrollableContentHeight) !== null && _this$nonScrollableCo !== void 0 ? _this$nonScrollableCo : 0) - DEFAULT_OFFSET;\n Object.assign(contentsEl.style, {\n maxHeight: `${Math.max(contentsAvailableHeight, 0)}px`\n });\n }\n })]\n };\n }\n },\n watch: {\n ariaAttributes: {\n deep: true,\n handler(ariaAttributes) {\n if (this.$scopedSlots.toggle) {\n Object.keys(ariaAttributes).forEach(key => {\n this.toggleElement.setAttribute(key, ariaAttributes[key]);\n });\n }\n }\n }\n },\n mounted() {\n this.checkToggleFocusable();\n },\n beforeDestroy() {\n this.stopFloating();\n },\n methods: {\n checkToggleFocusable() {\n if (!isElementFocusable(this.toggleElement) && !isElementTabbable(this.toggleElement)) {\n logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: Toggle is missing a 'tabindex' and cannot be focused.\n Use 'a' or 'button' element instead or make sure to add 'role=\"button\"' along with 'tabindex' otherwise.`, this.$el);\n }\n },\n getArrowOffsets(actualPlacement) {\n // Try to extract the base direction (top, bottom, left, right) from the placement\n const direction = actualPlacement === null || actualPlacement === void 0 ? void 0 : actualPlacement.split('-')[0];\n const offsetConfigs = {\n top: {\n staticSide: 'bottom',\n rotation: '225deg'\n },\n bottom: {\n staticSide: 'top',\n rotation: '45deg'\n },\n left: {\n staticSide: 'right',\n rotation: '135deg'\n },\n right: {\n staticSide: 'left',\n rotation: '315deg'\n }\n };\n return offsetConfigs[direction] || offsetConfigs.bottom;\n },\n async startFloating() {\n this.calculateNonScrollableAreaHeight();\n this.observer = new MutationObserver(this.calculateNonScrollableAreaHeight);\n this.observer.observe(this.$refs.content, {\n childList: true,\n subtree: true\n });\n this.stopAutoUpdate = autoUpdate(this.toggleElement, this.$refs.content, async () => {\n const result = await computePosition(this.toggleElement, this.$refs.content, this.floatingUIConfig);\n\n /**\n * Due to the asynchronous nature of computePosition, it's technically possible for the\n * component to have been destroyed by the time the promise resolves. In such case, we exit\n * early to prevent a TypeError.\n */\n if (!this.$refs.content) return;\n const {\n x,\n y,\n middlewareData,\n placement\n } = result;\n\n // Get offsets based on actual placement, not requested placement\n const {\n rotation,\n staticSide\n } = this.getArrowOffsets(placement);\n\n // Assign dropdown window position\n Object.assign(this.$refs.content.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n\n // Assign arrow position\n if (middlewareData && middlewareData.arrow) {\n const {\n x: arrowX,\n y: arrowY\n } = middlewareData.arrow;\n\n /**\n * Clamp arrow X position to a minimum of 24px from the edge of the dropdown.\n * This prevents wide toggles from pushing the arrow to the very edge of the dropdown.\n */\n const toggleRect = this.toggleElement.getBoundingClientRect();\n const contentRect = this.$refs.content.getBoundingClientRect();\n const clampedArrowX = toggleRect.width > contentRect.width ? Math.min(Math.max(arrowX, ARROW_X_MINIMUM), contentRect.width - ARROW_X_MINIMUM) : arrowX;\n Object.assign(this.$refs.dropdownArrow.style, {\n left: arrowX != null ? `${clampedArrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n [staticSide]: '-4px',\n transform: `rotate(${rotation})`\n });\n }\n });\n },\n stopFloating() {\n var _this$observer, _this$stopAutoUpdate;\n (_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.disconnect();\n (_this$stopAutoUpdate = this.stopAutoUpdate) === null || _this$stopAutoUpdate === void 0 ? void 0 : _this$stopAutoUpdate.call(this);\n },\n async toggle(event) {\n if (event && this.visible) {\n let prevented = false;\n this.$emit(GL_DROPDOWN_BEFORE_CLOSE, {\n originalEvent: event,\n preventDefault() {\n prevented = true;\n }\n });\n if (prevented) return false;\n }\n this.visible = !this.visible;\n if (this.visible) {\n // The dropdown needs to be actually visible before we compute its position with Floating UI.\n await this.$nextTick();\n this.openedYet = true;\n /**\n * We wait until the dropdown's position has been computed before emitting the `shown` event.\n * This ensures that, if the parent component attempts to focus an inner element, the dropdown\n * is already properly placed in the page. Otherwise, the page would scroll back to the top.\n */\n this.startFloating();\n this.$emit(GL_DROPDOWN_SHOWN);\n } else {\n this.stopFloating();\n this.$emit(GL_DROPDOWN_HIDDEN);\n }\n\n // this is to check whether `toggle` was prevented or not\n return true;\n },\n open() {\n if (this.visible) {\n return;\n }\n this.toggle();\n },\n close(event) {\n if (!this.visible) {\n return;\n }\n this.toggle(event);\n },\n /**\n * Closes the dropdown and returns the focus to the toggle unless it has has moved outside\n * of the dropdown, meaning that the consumer needed to put some other element in focus.\n *\n * @param {KeyboardEvent?} event The keyboard event that caused the dropdown to close.\n */\n async closeAndFocus(event) {\n if (!this.visible) {\n return;\n }\n const hadFocusWithin = this.$el.contains(document.activeElement);\n const hasToggled = await this.toggle(event);\n if (!hadFocusWithin) {\n return;\n }\n if (hasToggled) {\n this.focusToggle();\n }\n },\n focusToggle() {\n this.toggleElement.focus();\n },\n onKeydown(event) {\n const {\n code,\n target: {\n tagName\n }\n } = event;\n let toggleOnEnter = true;\n let toggleOnSpace = true;\n if (tagName === 'BUTTON') {\n toggleOnEnter = false;\n toggleOnSpace = false;\n } else if (tagName === 'A') {\n toggleOnEnter = false;\n }\n if (code === ENTER && toggleOnEnter || code === SPACE && toggleOnSpace) {\n this.toggle(event);\n }\n if (code === ARROW_DOWN) {\n this.$emit(GL_DROPDOWN_FOCUS_CONTENT, event);\n }\n },\n calculateNonScrollableAreaHeight() {\n var _this$$refs$content;\n const scrollableArea = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n if (!scrollableArea) return;\n const floatingElementBoundingBox = this.$refs.content.getBoundingClientRect();\n const scrollableAreaBoundingBox = scrollableArea.getBoundingClientRect();\n this.nonScrollableContentHeight = floatingElementBoundingBox.height - scrollableAreaBoundingBox.height;\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"outside\",rawName:\"v-outside.click.focusin\",value:(_vm.close),expression:\"close\",modifiers:{\"click\":true,\"focusin\":true}}],class:[_vm.$options.BASE_DROPDOWN_CLASS, { '!gl-block': _vm.block }]},[_c(_vm.toggleComponent,_vm._g(_vm._b({ref:\"toggle\",tag:\"component\",attrs:{\"id\":_vm.toggleId,\"data-testid\":\"base-dropdown-toggle\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.close.apply(null, arguments)}}},'component',_vm.toggleAttributes,false),_vm.toggleListeners),[_vm._t(\"toggle\",function(){return [_c('span',{staticClass:\"gl-new-dropdown-button-text\",class:{ 'gl-sr-only': _vm.textSrOnly }},[_vm._v(\"\\n \"+_vm._s(_vm.toggleText)+\"\\n \")]),_vm._v(\" \"),(!_vm.noCaret)?_c('gl-icon',{staticClass:\"gl-button-icon gl-new-dropdown-chevron\",attrs:{\"name\":\"chevron-down\"}}):_vm._e()]})],2),_vm._v(\" \"),_c('div',{ref:\"content\",staticClass:\"gl-new-dropdown-panel\",class:_vm.panelClasses,attrs:{\"id\":_vm.baseDropdownId,\"data-testid\":\"base-dropdown-menu\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.closeAndFocus.apply(null, arguments)}}},[_c('div',{ref:\"dropdownArrow\",staticClass:\"gl-new-dropdown-arrow\"}),_vm._v(\" \"),_c('div',{staticClass:\"gl-new-dropdown-inner\"},[_vm._t(\"default\")],2)])],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { BASE_DROPDOWN_CLASS };\n","const FIXED_WIDTH_CLASS = '!gl-w-31';\nconst DEFAULT_OFFSET = 8;\nconst ARROW_X_MINIMUM = 24;\n\nexport { ARROW_X_MINIMUM, DEFAULT_OFFSET, FIXED_WIDTH_CLASS };\n","import GlIcon from '../../icon/icon';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlListboxItem',\n components: {\n GlIcon\n },\n props: {\n isSelected: {\n type: Boolean,\n default: false,\n required: false\n },\n isFocused: {\n type: Boolean,\n default: false,\n required: false\n },\n isCheckCentered: {\n type: Boolean,\n required: false,\n default: false\n },\n isHighlighted: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n computed: {\n checkedClasses() {\n if (this.isCheckCentered) {\n return '';\n }\n return 'gl-mt-3 gl-self-start';\n }\n },\n methods: {\n toggleSelection() {\n this.$emit('select', !this.isSelected);\n },\n onKeydown(event) {\n const {\n code\n } = event;\n if (code === ENTER || code === SPACE) {\n stopEvent(event);\n this.toggleSelection();\n }\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:['gl-new-dropdown-item', { 'gl-new-dropdown-item-highlighted': _vm.isHighlighted }],attrs:{\"role\":\"option\",\"tabindex\":_vm.isFocused ? 0 : -1,\"aria-selected\":_vm.isSelected},on:{\"click\":_vm.toggleSelection,\"keydown\":_vm.onKeydown}},[_c('span',{staticClass:\"gl-new-dropdown-item-content\"},[_c('gl-icon',{class:[\n 'gl-new-dropdown-item-check-icon',\n { 'gl-invisible': !_vm.isSelected },\n _vm.checkedClasses ],attrs:{\"name\":\"mobile-issue-close\",\"data-testid\":\"dropdown-item-checkbox\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"default\")],2)],1)])};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n"],"sourceRoot":""}