{"version":3,"sources":["webpack:////build/source/node_modules/lodash/invert.js","webpack:////build/source/node_modules/lodash/_baseIntersection.js","webpack:////build/source/node_modules/pikaday/pikaday.js","webpack:////build/source/node_modules/lodash/head.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/number_utils.js","webpack:////build/source/node_modules/lodash/_baseClone.js","webpack:///./vue_shared/components/work_item_attribute.vue","webpack:///./vue_shared/components/work_item_attribute.vue?cd7f","webpack:///vue_shared/components/work_item_attribute.vue","webpack:///./vue_shared/components/work_item_attribute.vue?aa8c","webpack:////build/source/node_modules/lodash/snakeCase.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/button_group/button_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_term.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js","webpack:////build/source/node_modules/lodash/isSet.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/@gitlab/ui/dist/components/base/filtered_search/filtered_search_suggestion_list.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_token_segment.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tfoot.js","webpack:////build/source/node_modules/lodash/_baseClamp.js","webpack:////build/source/node_modules/lodash/_compareMultiple.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js","webpack:////build/source/node_modules/lodash/_initCloneByTag.js","webpack:////build/source/node_modules/lodash/_baseOrderBy.js","webpack:////build/source/node_modules/visibilityjs/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js","webpack:////build/source/node_modules/lodash/_baseIsSet.js","webpack:///./invite_members/event_hub.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/scorer.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js","webpack:////build/source/node_modules/lodash/_compareAscending.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js","webpack:///./vue_shared/components/local_storage_sync.vue?a4c7","webpack:///vue_shared/components/local_storage_sync.vue","webpack:///./vue_shared/components/local_storage_sync.vue","webpack:///./issuable/components/merge_request_reviewers.vue?662d","webpack:///issuable/components/merge_request_reviewers.vue","webpack:///./issuable/components/merge_request_reviewers.vue?61f5","webpack:///./issuable/components/merge_request_reviewers.vue","webpack:///./merge_requests/utils/autocomplete_cache.js","webpack:///./merge_requests/constants.js","webpack:///./merge_requests/list/constants.js","webpack:///./merge_requests/list/components/merge_request_statistics.vue","webpack:///./merge_requests/list/components/merge_request_statistics.vue?34ea","webpack:///merge_requests/list/components/merge_request_statistics.vue","webpack:///./merge_requests/list/components/merge_request_statistics.vue?acbb","webpack:///./merge_requests/list/components/more_actions_dropdown.vue?f726","webpack:///merge_requests/list/components/more_actions_dropdown.vue","webpack:///./merge_requests/list/components/more_actions_dropdown.vue?5178","webpack:///./merge_requests/list/components/more_actions_dropdown.vue","webpack:////build/source/node_modules/@gitlab/svgs/dist/illustrations/empty-state/empty-merge-requests-md.svg","webpack:///./merge_requests/list/components/empty_state.vue?12e9","webpack:///merge_requests/list/components/empty_state.vue","webpack:///./merge_requests/list/components/empty_state.vue?01e8","webpack:///./merge_requests/list/components/empty_state.vue","webpack:///merge_requests/list/components/merge_requests_list_app.vue","webpack:///./merge_requests/list/components/merge_requests_list_app.vue?c6df","webpack:///./merge_requests/list/components/merge_requests_list_app.vue?04d2","webpack:///./merge_requests/list/components/merge_requests_list_app.vue","webpack:///./merge_requests/list/index.js","webpack:////build/source/node_modules/lodash/_createCompounder.js","webpack:///./issues/list/queries/set_sort_preference.mutation.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_utils.js","webpack:////build/source/node_modules/lodash/difference.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/animated_icon/animated_notifications_icon.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/datetime_utility.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/animated_icon/animated_todo_icon.js","webpack:////build/source/node_modules/lodash/_deburrLetter.js","webpack:////build/source/node_modules/lodash/union.js","webpack:////build/source/node_modules/lodash/words.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/progress_bar/progress_bar.js","webpack:////build/source/node_modules/lodash/_asciiWords.js","webpack:////build/source/node_modules/@gitlab/ui/dist/directives/outside/outside.js","webpack:////build/source/node_modules/lodash/_baseAssign.js","webpack:///./invite_members/components/invite_members_trigger.vue","webpack:///./invite_members/components/invite_members_trigger.vue?f47d","webpack:///invite_members/components/invite_members_trigger.vue","webpack:///./invite_members/components/invite_members_trigger.vue?c527","webpack:///./vue_shared/issuable/list/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_suggestion.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/directives/modal/modal.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/drawer/drawer.js","webpack:////build/source/node_modules/visibilityjs/lib/visibility.timers.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/form/form_radio/form_radio.js","webpack:////build/source/node_modules/lodash/_baseInverter.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/fuzzaldrin.js","webpack:////build/source/node_modules/lodash/_baseMap.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js","webpack:////build/source/node_modules/lodash/_castArrayLikeObject.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_token.js","webpack:///./lib/utils/number_utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/thead.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js","webpack:////build/source/node_modules/lodash/sortBy.js","webpack:////build/source/node_modules/lodash/_baseDifference.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/utils/stable-sort.js","webpack:////build/source/node_modules/mousetrap/plugins/pause/mousetrap-pause.js","webpack:///./issues/list/queries/search_labels.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/constants.js","webpack:////build/source/node_modules/lodash/_cloneSymbol.js","webpack:////build/source/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/td.js","webpack:////build/source/node_modules/lodash/escapeRegExp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js","webpack:////build/source/node_modules/@floating-ui/utils/dist/floating-ui.utils.esm.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/th.js","webpack:////build/source/node_modules/lodash/uniqBy.js","webpack:////build/source/node_modules/lodash/_initCloneArray.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tbody.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js","webpack:////build/source/node_modules/immer/dist/immer.esm.js","webpack:////build/source/node_modules/lodash/first.js","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:///./issues/list/queries/label.fragment.graphql","webpack:////build/source/node_modules/lodash/isMap.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/regions/empty_state/empty_state.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/query.js","webpack:////build/source/node_modules/lodash/_createInverter.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/intersection_observer/intersection_observer.js","webpack:///./issues/show/utils/issuable_data.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js","webpack:////build/source/node_modules/lodash/_copySymbols.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/sorting/sorting.js","webpack:///./invite_members/constants.js","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/dist/components/base/toggle/toggle.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/pathScorer.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/label/label.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/mixins/has-listener.js","webpack:///./pages/projects/merge_requests/index/index.js","webpack:////build/source/node_modules/lodash/cloneDeep.js","webpack:////build/source/node_modules/visibilityjs/lib/visibility.core.js","webpack:////build/source/node_modules/vue-router/dist/vue-router.esm.js","webpack:///./vue_shared/issuable/list/components/issuable_milestone.vue","webpack:///./vue_shared/issuable/list/components/issuable_milestone.vue?4c9a","webpack:///vue_shared/issuable/list/components/issuable_milestone.vue","webpack:///./vue_shared/issuable/list/components/issuable_milestone.vue?5c04","webpack:////build/source/node_modules/lodash/_hasUnicodeWord.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/avatar_link/avatar_link.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tr.js","webpack:////build/source/node_modules/lodash/_copySymbolsIn.js","webpack:////build/source/node_modules/portal-vue/dist/portal-vue.common.js","webpack:////build/source/node_modules/lodash/_cloneDataView.js","webpack:////build/source/ee/app/assets/javascripts/merge_requests/list/queries/project/get_merge_requests.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/nav/nav.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tabs/tabs.js","webpack:///./sidebar/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/lodash/_baseAssignIn.js","webpack:///./lib/utils/scroll_utils.js","webpack:////build/source/node_modules/lodash/_unicodeWords.js","webpack:////build/source/node_modules/lodash/deburr.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/matcher.js","webpack:////build/source/node_modules/lodash/intersection.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tab/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_click/search_box_by_click.js","webpack:////build/source/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","webpack:////build/source/node_modules/lodash/_baseSortBy.js","webpack:///./vue_shared/plugins/global_toast.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js","webpack:////build/source/ee/app/assets/javascripts/merge_requests/list/queries/project/get_merge_requests_counts.query.graphql","webpack:///./merge_requests/list/queries/merge_request.fragment.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/dropdown/dropdown_form.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/datepicker/datepicker.js","webpack:////build/source/node_modules/lodash/_baseIsMap.js","webpack:////build/source/node_modules/lodash/kebabCase.js","webpack:///./behaviors/shortcuts/shortcuts_toggle.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/table-lite.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/table_lite/table_lite.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/toaster.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/toast.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/toast/toast.js","webpack:////build/source/node_modules/lodash/_cloneRegExp.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/filter.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_item.js"],"names":["constant","createInverter","identity","nativeObjectToString","Object","prototype","toString","invert","result","value","key","call","module","exports","SetCache","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","nativeMin","Math","min","arrays","iteratee","comparator","includes","length","othLength","othIndex","caches","Array","maxLength","Infinity","array","undefined","index","seen","outer","computed","cache","push","root","factory","moment","e","hasMoment","hasEventListeners","window","addEventListener","document","sto","setTimeout","addEvent","el","callback","capture","attachEvent","removeEvent","removeEventListener","detachEvent","hasClass","cn","className","indexOf","addClass","removeClass","str","replace","trim","isArray","obj","test","isDate","isNaN","getTime","isWeekend","date","day","getDay","isLeapYear","year","getDaysInMonth","month","setToStartOfDay","setHours","compareDates","a","b","extend","to","from","overwrite","prop","hasProp","nodeName","Date","slice","fireEvent","eventName","data","ev","createEvent","initEvent","dispatchEvent","createEventObject","adjustCalendar","calendar","ceil","abs","floor","defaults","field","bound","ariaLabel","position","reposition","format","parse","defaultDate","setDefaultDate","firstDay","formatStrict","minDate","maxDate","yearRange","showWeekNumber","pickWholeWeek","minYear","maxYear","minMonth","maxMonth","startRange","endRange","isRTL","yearSuffix","showMonthAfterYear","showDaysInNextAndPreviousMonths","enableSelectionDaysInNextAndPreviousMonths","numberOfMonths","mainCalendar","container","blurFieldOnSelect","i18n","previousMonth","nextMonth","months","weekdays","weekdaysShort","theme","events","onSelect","onOpen","onClose","onDraw","keyboardInput","renderDayName","opts","abbr","renderDay","arr","ariaSelected","isEmpty","isDisabled","isToday","isSelected","hasEvent","isInRange","isStartRange","isEndRange","join","renderRow","days","isRowSelected","reverse","renderTitle","instance","c","refYear","randId","i","j","monthHtml","yearHtml","_o","isMinYear","isMaxYear","html","prev","next","Pikaday","options","self","this","config","_onMouseDown","_v","target","event","srcElement","parentNode","prevMonth","setDate","getAttribute","hide","blur","_c","preventDefault","returnValue","_onChange","gotoMonth","gotoYear","_onKeyChange","isVisible","keyCode","adjustDate","_onInputChange","firedBy","isValid","toDate","show","_onInputFocus","_onInputClick","_onInputBlur","pEl","activeElement","_b","_onClick","onchange","setAttribute","trigger","createElement","appendChild","body","insertBefore","nextSibling","defDate","gotoDate","disableWeekends","disableDayFn","nom","parseInt","setMinDate","setMaxDate","fallback","getFullYear","_d","toDateString","getMoment","setMoment","preventOnSelect","isMoment","getDate","draw","max","newCalendar","calendars","firstVisibleDate","lastVisibleDate","visibleDate","setMonth","getMonth","adjustCalendars","sign","newDay","difference","valueOf","gotoToday","setStartRange","setEndRange","force","_y","_m","random","substr","render","innerHTML","type","focus","adjustPosition","width","height","viewportWidth","viewportHeight","scrollTop","left","top","clientRect","leftAligned","bottomAligned","style","offsetWidth","offsetHeight","innerWidth","documentElement","clientWidth","innerHeight","clientHeight","pageYOffset","getBoundingClientRect","pageXOffset","bottom","offsetLeft","offsetTop","offsetParent","now","before","row","yearOfPreviousMonth","yearOfNextMonth","daysInPreviousMonth","cells","after","d","m","y","onejan","isWeekSelected","r","dayNumber","monthNumber","yearNumber","dayConfig","unshift","weekNum","renderHead","rows","renderTable","v","destroy","removeChild","addition","sum","_len","arguments","numbers","_key","reduce","average","modulo","n","divisor","engineeringNotation","precision","invalidValues","NaN","num","Number","allYourBase","0","3","6","9","12","15","18","21","24","exponentialNotation","toExponential","power","split","map","scaledPower","scaledMantissa","toFixed","_","fractionalDigits","formatNumberToLocale","locales","Intl","NumberFormat","toFloat","defaultValue","float","parseFloat","Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isBuffer","isMap","isObject","isSet","keys","keysIn","cloneableTags","baseClone","bitmask","customizer","object","stack","isDeep","isFlat","isFull","isArr","tag","isFunc","stacked","get","set","forEach","subValue","add","props","components","GlTooltip","GlIcon","GlLink","anchorId","String","required","default","wrapperComponent","wrapperComponentClass","title","titleComponentClass","iconName","iconClass","tooltipText","tooltipPlacement","isLink","Boolean","href","component","_vm","_self","attrs","ref","class","_t","_e","_s","$refs","wrapperRef","snakeCase","createCompounder","word","toLowerCase","__vue_script__","name","vertical","__vue_component__","_h","$createElement","_g","$listeners","staticRenderFns","GlFilteredSearchTokenSegment","GlToken","inject","inheritAttrs","availableTokens","active","placeholder","searchInputAttributes","isLastToken","currentValue","cursorPosition","validator","searchTextOptionLabel","viewOnly","termsAsTokens","tokens","filter","token","internalValue","$emit","mousedown","stopMousedownOnCloseButton","close","destroyByClose","methods","intent","closest","staticClass","suggestedTokens","on","$event","onComplete","onBackspace","scopedSlots","_u","fn","label","eventListeners","model","$$v","expression","portalUuid","initialState","GlSearchBoxByClick","PortalTarget","directives","portalName","alignSuggestions","suggestionsListClass","__v_raw","isOk","every","_ref","__v_skip","console","warn","clearButtonTitle","historyItems","showFriendlyText","searchButtonAttributes","showSearchButton","activeTokenIdx","suggestionsStyle","intendedCursorPosition","lastTokenIdx","hasValue","disabled","unique","find","t","watch","isLastTokenEmpty","deep","immediate","newValue","oldValue","applyNewValue","idx","_this$getTokenEntry","getTokenEntry","offsetRef","offsetMenu","$el","transform","tokenIdx","isLastTokenActive","activeToken","splice","$set","newStrings","newTokens","submit","slotScope","_l","getTokenComponent","id","refInFor","getTokenClassList","currentAvailableTokens","termPlaceholder","appliedTokens","activate","deactivate","destroyToken","replaceToken","completeToken","createTokens","activatePreviousToken","activateNextToken","proxy","$attrs","textSelectionActive","sel","containsNode","baseIsSet","nodeUtil","nodeIsSet","GlButton","tooltipContainer","HTMLElement","rawName","modifiers","baseClamp","toNumber","number","lower","upper","isOption","item","isGroup","hasNoDuplicates","Set","size","flattenedOptions","items","flatMap","itemsValidator","isAllOptionsOrAllGroups","hasUniqueValues","_ref2","text","hasUniqueGroups","filteredSearchSuggestionListInstance","initialValue","activeIdx","registeredItems","findIndex","valuesMatch","initialActiveIdx","initialActiveItem","firstValue","secondValue","stepItem","direction","endIdx","activeItem","listClasses","isVNodeEmpty","vnode","_vnode$type2","_vnode$type2$toString","isVue3Fragment","children","_vnode$type","_vnode$type$toString","isVue3Comment","Portal","GlFilteredSearchSuggestionList","GlFilteredSearchSuggestion","isTerm","multiSelect","optionTextField","customInputKeydownHandler","Function","fallbackValue","some","_this$options","o","inputValue","nonMultipleValue","matchingOption","_this$options2","slot","vnodes","isSlotNotEmpty","$slots","suggestions","_this$options$","option","getMatchingOptionForInputValue","loose","hasTermSuggestion","defaultOption","op","hasUnclosedQuote","firstWord","otherWords","w","button","_this$options3","$nextTick","input","scrollIntoView","block","inline","setSelectionRange","_this$matchingOption","suggestedValue","formattedSuggestedValue","getValue","handlers","ArrowLeft","selectionStart","ArrowRight","selectionEnd","Backspace","Enter","applySuggestion","Escape","suggestionsHandlers","ArrowDown","nextItem","Down","ArrowUp","prevItem","Up","hasOptionsOrSuggestions","assign","containerAttributes","emitIfInactive","submitValue","domProps","_i","handleInputKeydown","handleBlur","$$a","$$el","$$c","checked","$$i","concat","_q","composing","_uid","defaultSuggestedValue","icon","footVariant","BTfoot","mixins","getBvTableRowGroup","getBvTable","isTfoot","bvTable","dark","isStacked","isResponsive","isStickyHeader","stickyHeader","tableVariant","bvAttrs","role","h","tfootClasses","tfootAttrs","bvListeners","normalizeSlot","compareAscending","other","orders","objCriteria","criteria","othCriteria","ordersLength","isItem","_item$text","itemValidator","group","hasOnlyListItemsVue2","defaultSlot","nodes","tags","vNode","_vNode$componentOptio","componentOptions","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","node","_vNode$type","isValidSlotTagVue3","hasOnlyListItems","version","startsWith","stackedMixin","isStackedAlways","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","Ctor","constructor","baseGet","baseIteratee","baseMap","baseSortBy","compareMultiple","collection","iteratees","normalizeFields","origFields","fields","f","formatter","processField","sample","k","memo","mixin","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","primaryKey","itemsMixin","localItems","bvParent","computedFields","paginatedItems","sortedItems","filteredItems","perPage","currentPage","localFilter","sortBy","localSortBy","sortDesc","localSortDesc","math","apiUrl","computedItems","computedFieldsObj","isObjectLike","createEventHub","AcronymResult","computeScore","emptyAcronymResult","isAcronymFullWord","isMatch","isSeparator","isWordEnd","isWordStart","scoreAcronyms","scoreCharacter","scoreConsecutives","scoreExact","scoreExactMatch","scorePattern","scorePosition","scoreSize","score","string","query","preparedQuery","string_lw","allowErrors","core_lw","core_up","subject","query_lw","query_up","qj_lw","qj_up","si","charCodeAt","subject_lw","acro","acro_score","align","csc_diag","csc_row","csc_score","csc_should_rebuild","miss_budget","miss_left","pos","record_miss","score_diag","score_row","score_up","si_lw","start","sz","count","charCodes","curr_s","prev_s","len","next_s","sc","quality","sameCase","end","bonus","posBonus","startOfWord","mi","nj","pos2","fullWord","sepCount","sumPos","nbAcronymInQuery","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","hasNormalizedSlot","headVariant","columns","renderThead","renderTFootCustom","isSymbol","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","DISCLOSURE_DROPDOWN_ITEM_NAME","DISCLOSURE_DROPDOWN_GROUP_NAME","DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS","DROPDOWN_SELECTOR","ITEM_SELECTOR","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","GlBaseDropdown","GlDisclosureDropdownItem","GlDisclosureDropdownGroup","toggleText","textSrOnly","category","primary","variant","loading","toggleId","toggleClass","noCaret","placement","toggleAriaLabelledBy","listAriaLabelledBy","dropdownOffset","fluidWidth","autoClose","positioningStrategy","strategy","startOpened","disclosureId","nextFocusedItemIndex","_this$items","$scopedSlots","toggle","open","baseDropdown","code","elements","getFocusableListItemElements","stop","focusItem","focusNextItem","handleAutoClose","_this$$refs$content","content","querySelectorAll","offset","currentIndex","nextIndex","_elements$index","closeAndFocus","action","requestAnimationFrame","uniqueItemId","GL_DROPDOWN_CONTENTS_CLASS","$options","onShow","onHide","onBeforeClose","onKeydown","disclosureTag","handleAction","groupItem","storageKey","asString","persist","clear","newVal","saveValue","serialize","localStorage","removeItem","mounted","exists","getStorageValue","_isEqual","getItem","deserialize","val","setItem","_isString","JSON","stringify","_this$$scopedSlots$de","_this$$scopedSlots","UserAvatarLink","GlTooltipDirective","reviewers","iconSize","imgCssClasses","maxVisible","maxReviewers","reviewersToShow","numShownReviewers","numHiddenReviewers","reviewersCounterTooltip","sprintf","__","reviewerCounterLabel","avatarUrlTitle","reviewer","reviewerName","webPath","avatarUrl","s__","username","AutocompleteCache","Map","mutators","formatters","searchProperties","setUpCache","url","property","mutator","searchProperty","search","has","updateLocalCache","retrieveFromLocalCache","_this","axios","then","finalData","fuzzaldrinPlus","closed","merged","yes","no","errorFetchingBranches","errorFetchingCounts","errorFetchingMergeRequests","upvotes","downvots","newMergeRequest","mergeRequest","downvotes","GlDisclosureDropdown","CsvImportExportButtons","provide","showExportButton","isDropdownVisible","exportCsvPathWithQuery","getExportCsvPathWithQuery","moreActionsTooltip","subscribeToRSSItem","subscribeToRSS","rssUrl","$route","showDropdown","hideDropdown","exportCsvPath","location","isSignedIn","GlEmptyState","newMergeRequestPath","hasSearch","isOpenTab","hasMergeRequests","description","svgPath","emptyStateSvg","emptyMergeRequestsStateSvg","UserToken","BranchToken","MilestoneToken","LabelToken","ReleaseToken","EnvironmentToken","EmojiToken","DateToken","cacheIsExpired","cacheAge","compareTo","mergeRequestListTabs","IssuableList","CiIcon","MergeRequestStatistics","MergeRequestMoreActionsDropdown","MergeRequestReviewers","ApprovalCount","EmptyState","IssuableMilestone","IssuableByEmail","DiscussionsBadge","NewResourceDropdown","autocompleteAwardEmojisPat","fullPath","hasAnyMergeRequests","hasScopedLabelsFeature","initialSort","isPublicVisibilityRestricted","releasesEndpoint","canBulkUpdate","environmentNamesPath","mergeTrainsPath","defaultBranch","initialEmail","getMergeRequestsQuery","getMergeRequestsCountsQuery","isProject","groupId","showNewResourceDropdown","namespaceId","branchCacheAges","filterTokens","mergeRequests","mergeRequestCounts","mergeRequestsError","pageInfo","pageParams","sortKey","CREATED_DESC","state","STATUS_OPEN","pageSize","DEFAULT_PAGE_SIZE","showBulkEditSidebar","apollo","variables","queryVariables","update","_data$namespace$merge","_data$namespace$merge2","namespace","fetchPolicy","fetchPolicies","CACHE_AND_NETWORK","nextFetchPolicy","CACHE_FIRST","notifyOnNetworkStatusChange","_data$namespace$merge3","_data$namespace$merge4","getIdFromGraphQLId","error","Sentry","skip","_isEmpty","_data$namespace","hideUsers","sort","apiFilterParams","searchQuery","urlFilterParams","afterCursor","beforeCursor","convertToApiParams","convertToUrlParams","convertToSearchQuery","searchTokens","_window$gon","preloadedUsers","gon","current_user_id","convertToGraphQLId","TYPENAME_USER","current_user_fullname","current_username","avatar_url","current_user_avatar_url","TOKEN_TYPE_AUTHOR","TOKEN_TITLE_AUTHOR","dataType","defaultUsers","recentSuggestionsStorageKey","multiselect","TOKEN_TYPE_ASSIGNEE","TOKEN_TITLE_ASSIGNEE","TOKEN_TYPE_REVIEWER","TOKEN_TITLE_REVIEWER","TOKEN_TYPE_MERGE_USER","TOKEN_TITLE_MERGE_USER","operators","OPERATORS_IS","TOKEN_TYPE_APPROVER","TOKEN_TITLE_APPROVER","TOKEN_TYPE_APPROVED_BY","TOKEN_TITLE_APPROVED_BY","TOKEN_TYPE_MILESTONE","TOKEN_TITLE_MILESTONE","shouldSkipSort","TOKEN_TYPE_LABEL","TOKEN_TITLE_LABEL","fetchLabels","TOKEN_TYPE_RELEASE","TOKEN_TITLE_RELEASE","OPERATORS_IS_NOT","TOKEN_TYPE_MY_REACTION","TOKEN_TITLE_MY_REACTION","fetchEmojis","TOKEN_TYPE_DRAFT","TOKEN_TITLE_DRAFT","GlFilteredSearchToken","TOKEN_TYPE_TARGET_BRANCH","TOKEN_TITLE_TARGET_BRANCH","fetchBranches","fetchTargetBranches","TOKEN_TYPE_SOURCE_BRANCH","TOKEN_TITLE_SOURCE_BRANCH","fetchSourceBranches","TOKEN_TYPE_ENVIRONMENT","TOKEN_TITLE_ENVIRONMENT","environmentsEndpoint","TOKEN_TYPE_DEPLOYED_BEFORE","TOKEN_TITLE_DEPLOYED_BEFORE","TOKEN_TYPE_DEPLOYED_AFTER","TOKEN_TITLE_DEPLOYED_AFTER","showPaginationControls","hasNextPage","hasPreviousPage","sortOptions","getSortOptions","hasManualSort","hasMergedDate","STATUS_MERGED","tabCounts","openedMergeRequests","closedMergeRequests","mergedMergeRequests","allMergeRequests","STATUS_CLOSED","STATUS_ALL","urlParams","_this$pageParams$afte","_this$pageParams$befo","urlSortParams","first_page_size","firstPageSize","last_page_size","lastPageSize","page_after","page_before","isLoading","$apollo","queries","provider","clients","defaultClient","readQuery","isBulkEditButtonDisabled","resourceDropdownQueryVariables","currentTabCount","updateData","getParameterByName","PARAM_SORT","handler","_document$querySelect","querySelector","classList","created","autocompleteCache","issuableEventHub","$on","toggleBulkEditSidebar","beforeDestroy","$off","getBranchPath","branchType","typeUrls","source","Api","buildUrl","createBranchPath","encodeURIComponent","mergeUrlParams","path","branchPath","runTime","updateBranchCache","fetch","branchList","branch","results","catch","autocompleteAwardEmojisPath","cacheName","fetchLabelsWithFetchPolicy","searchLabelsQuery","project","labels","getStatus","getReviewers","issuable","_issuable$reviewers","handleClickTab","getInitialPageParams","$router","handleNextPage","endCursor","scrollUp","handlePreviousPage","startCursor","handleFilter","handleSort","saveSortPreference","mutate","mutation","setSortPreferenceMutation","mergeRequestsSort","userPreferencesUpdate","errors","Error","PARAM_FIRST_PAGE_SIZE","PARAM_LAST_PAGE_SIZE","PARAM_STATE","getFilterTokens","isPositiveInteger","PARAM_PAGE_AFTER","PARAM_PAGE_BEFORE","deriveSortKey","isMergeRequestBroken","commitCount","sourceBranchExists","targetBranchExists","conflicts","hasInitBulkEdit","initBulkUpdateSidebar","handleUpdateLegacyBulkEdit","targetBranchTooltip","target_branch","targetBranch","handleBulkUpdateClick","webUrl","milestone","targetBranchPath","resolvableDiscussionsCount","approvalsRequired","approvedBy","headPipeline","detailedStatus","async","mountMergeRequestListsApp","Vue","use","VueApollo","VueRouter","issuableType","email","emailsHelpPagePath","quickActionsHelpPath","markdownHelpPath","resetPath","dataset","apolloProvider","router","base","pathname","mode","routes","parseBoolean","createComponent","MergeRequestsListApp","mountMoreActionsDropdown","issuableCount","MoreactionsDropdown","arrayReduce","deburr","words","reApos","RegExp","doc","loc","definitionRefs","findOperation","definitions","element","def","refs","collectFragmentReferences","kind","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","childRef","oneQuery","TERM_TOKEN_TYPE","INTENT_ACTIVATE_PREVIOUS","TOKEN_CLOSE_SELECTOR","isEmptyTerm","normalizeTokens","assertValidTokens","needDenormalization","stepIndexAndWrap","step","tokenToOption","optionComponent","tokenIdCounter","getTokenId","tokenId","ensureTokenId","createTerm","denormalizeTokens","inputTokens","trimmedText","strToken","match","termTokenDefinition","splitOnQuotes","queue","waitingForMatchingQuote","quoteContent","part","shift","firstPart","secondPart","wrapTokenInQuotes","quote","baseDifference","baseFlatten","baseRest","isArrayLikeObject","values","extends","iconStateClass","newDate","getDayDifference","date1","UTC","date2","getDateInPast","daysInPast","getDateInFuture","daysInFuture","areDatesEqual","deburrLetter","basePropertyOf","baseUniq","union","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","backgroundClasses","success","danger","warning","computedValue","computedMax","classes","reAsciiWord","callbacks","activeEventTypes","lastMousedown","globalListener","eventTypes","originalEvent","contains","onMousedown","OutsideDirective","bind","bindings","_ref3","arg","modifiersList","parseBinding","eventType","startListening","unbind","entry","eventTypesToUnbind","delete","copyObject","GlDropdownItem","displayText","triggerSource","triggerElement","componentAttributes","isButtonTrigger","TRIGGER_ELEMENT_BUTTON","isWithEmojiTrigger","TRIGGER_ELEMENT_WITH_EMOJI","isDropdownWithEmojiTrigger","TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI","isDisclosureTrigger","TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN","openModal","eventHub","handleDisclosureDropdownAction","issuableListTabs","titleTooltip","availableSortOptions","sortDirection","descending","ascending","DEFAULT_SKELETON_COUNT","PAGE_SIZE_STORAGE_KEY","TABLE_TAG_NAMES","filterEvent","tagName","labelFor","_this$$refs$item","_this$$refs$item$$el","register","unregister","isActive","nativeOn","emitValue","apply","ROOT_ACTION_EVENT_NAME_SHOW","PROPERTY","getTarget","getTriggerElement","setRole","oldProp","componentUpdated","binding","currentTarget","VBModal","inserted","updated","headerHeight","headerSticky","zIndex","styles","positionFromTop","maxHeight","footer","handleEscape","emitOpened","variantClass","shouldRenderFooter","lastTimer","install","Visibility","interval","hiddenInterval","_time","_timers","visible","hidden","_run","isSupported","_listen","_stop","_timed","_wasHidden","change","_stopRun","runNow","timer","runner","last","delay","setInterval","clearInterval","clearTimeout","isHidden","wasHidden","BFormRadio","baseForOwn","setter","accumulator","Query","defaultPathSeparator","matcher","parseOptions","pathScorer","preparedQueryCache","scorer","process","platform","candidates","usePathScoring","_results","wrap","prepareQuery","useExtensionBonus","pathSeparator","optCharRegEx","baseEach","isArrayLike","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","colgroupMixin","$colgroup","DEFAULT_OPERATORS","multiSelectValues","operator","dataSegmentInputAttributes","activeSegment","tokenValue","_this$tokenValue$data","tokenEmpty","isSegmentActive","segments","SEGMENT_TITLE","SEGMENT_DATA","SEGMENT_OPERATOR","tokenIsActive","activateSegment","segment","newType","newTokenConfig","isCompatible","evt","potentialValue","activateDataSegment","availableTokensWithSelf","activateNextOperatorSegment","getAdditionalSegmentClasses","handleOperatorKeydown","replaceWithTermIfEmpty","activatePreviousTitleSegment","activateNextDataSegment","operatorDescription","handleComplete","activatePreviousOperatorSegment","scope","listeners","cssClasses","bytesToMiB","BYTES_IN_KIB","bytesToGiB","numberToHumanSizeSplit","digits","locale","digitsOptions","minimumFractionDigits","maximumFractionDigits","formatNumberWithLocaleAndDigits","formatNumber","numberToHumanSize","humanSize","numberToMetricPrefix","uppercase","THOUSAND","MILLION","median","middle","sorted","changeInPercent","firstY","lastY","round","formattedChangeInPercent","nonFiniteResult","isFinite","isNumeric","numberRegex","countFloatingPointDigits","decimal","parts","integer","splitDecimalNumber","BThead","isThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","isFoot","stopIfBusy","isSortable","isSelectable","hasHeadClickListener","hasListener","selectAllRows","noop","clearSelected","$cells","colIndex","labelHtml","stickyColumn","headerTitle","click","headClicked","keydown","sortAttrs","sortTheadThAttrs","sortClass","sortTheadThClasses","sortLabel","sortTheadThLabel","thStyle","tabindex","sortable","headerAbbr","getThValues","thAttr","slotNames","column","$content","$srLabel","$trs","baseOrderBy","isIterateeCall","isCommon","valuesLength","valuesIndex","stableSort","compareFn","Mousetrap","_originalStopCallback","stopCallback","combo","paused","pause","unpause","init","names","ARROW_DOWN","ARROW_UP","END","ENTER","HOME","SPACE","POSITION_ABSOLUTE","POSITION_FIXED","Symbol","symbolProto","symbolValueOf","symbol","getWindow","_node$ownerDocument","ownerDocument","defaultView","getComputedStyle$1","getComputedStyle","isNode","Node","getNodeName","isHTMLElement","isElement","Element","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","safari","isSafari","css","perspective","containerType","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","createEmptyCoords","x","getCssDimensions","hasOffset","shouldFallback","$","unwrapElement","contextElement","getScale","domElement","rect","noOffsets","getVisualOffsets","isFixed","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","win","visualViewport","includeScale","isFixedStrategy","scale","visualOffsets","offsetWin","currentIFrame","frameElement","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getDocumentElement","getNodeScroll","scrollLeft","getWindowScrollBarX","getParentNode","assignedSlot","host","getOverflowAncestors","list","scrollableAncestor","getNearestOverflowAncestor","isBody","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getTrueOffsetParent","polyfill","getOffsetParent","currentNode","getContainingBlock","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getClippingRect","boundary","rootBoundary","clippingAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","firstClippingAncestor","clippingRect","accRect","right","convertOffsetParentRelativeRectToViewportRelativeRect","getDimensions","reference","floating","getOffsetParentFn","getDimensionsFn","getClientRects","autoUpdate","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","passive","cleanupIo","onMove","timeoutId","io","cleanup","disconnect","refresh","threshold","rootMargin","isFirstUpdate","handleObserve","entries","ratio","intersectionRatio","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","prevRefRect","frameLoop","nextRefRect","computePosition","mergedOptions","platformWithCache","parseSpan","spanValidator","colspan","rowspan","stackedHeading","BTd","getBvTableTr","bvTableTr","inTbody","inThead","inTfoot","isDark","hasStickyHeader","isStickyColumn","rowVariant","headOrFoot","computedColspan","computedRowspan","isStackedCell","cellClasses","cellAttrs","reRegExpChar","reHasRegExpChar","ITEM_CLASS","BLink","_this$item","_this$item2","is","extraAttrs","_item$action","_this$item3","_this$item3$extraAttr","_this$item4","_this$item4$extraAttr","_this$item$wrapperCla","_this$item5","wrapperClass","isCustomContent","MouseEvent","bubbles","cancelable","listIndex","wrapperListeners","itemComponent","componentIndex","sides","alignments","placements","acc","side","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","param","getSide","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getOppositeAxisPlacements","flipAlignment","isStart","lr","rl","tb","bt","getSideList","getPaddingObject","padding","expandPaddingObject","rectToClientRect","BTh","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","isTbody","tbodyProps","tbodyAttrs","isTransitionGroup","detailsTdClass","tbodyTrAttr","tbodyTrClass","tbodyRowMixin","tdValue","thValue","getFieldFormatter","hasDetailsSlot","tbodyRowEventStopped","emitTbodyRowEvent","rowIndex","isRowHeader","formatted","getFormattedValue","cellTag","cellVariant","getTdValues","tdClass","tdAttr","unformatted","toggleDetails","toggleDetailsFactory","detailsShowing","supportsSelectableRows","rowSelected","selectRow","unselectRow","slotName","$_bodyFieldSlotNameCache","$childNodes","striped","hasSelectableRowClick","rowShowDetails","hasRowClickHandler","$rows","detailsId","safeId","$tds","renderTbodyRowCell","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableRowClasses","selectableAttrs","selectableRowAttrs","userTrClasses","userTrAttrs","mouseenter","rowHovered","mouseleave","rowUnhovered","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","tbody","trs","tr","getTbodyTrs","getTbodyTrIndex","tabIndex","onTBodyRowClicked","shiftKey","which","renderBusy","renderTopRow","renderEmpty","renderBottomRow","$busy","defaultSlotName","lowercaseSlotName","renderTbodyRow","auxclick","onTbodyRowMiddleMouseRowClicked","contextmenu","onTbodyRowContextmenu","dblclick","onTbodyRowDblClicked","onTbodyRowKeydown","$props","Q","getPrototypeOf","Z","L","s","nn","u","X","q","p","l","rn","writable","configurable","enumerable","create","freeze","isFrozen","tn","U","O","g","S","P","M","H","A","I","R","D","F","z","getOwnPropertyDescriptor","E","N","T","C","en","Proxy","revocable","revoke","J","K","G","W","B","Reflect","for","iterator","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","getOwnPropertyDescriptors","deleteProperty","defineProperty","setPrototypeOf","an","produce","Promise","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","GlClearIconButton","focusInput","inputListeners","stopPropagation","clearInput","nameId","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","GlListboxItem","GlListboxGroup","GlSearchBoxByType","GlListboxSearchInput","GlLoadingIcon","GlIntersectionObserver","selected","multiple","headerText","isCheckCentered","searchable","searching","infiniteScroll","totalItems","infiniteScrollLoading","noResultsText","searchPlaceholder","resetButtonLabel","showSelectAllButtonLabel","srOnlyResultsLabel","selectedValues","listboxId","searchStr","topBoundaryVisible","bottomBoundaryVisible","hasItems","listboxTag","_this$flattenedOption","showNoResultsText","showSelectAllButton","toggleClasses","hasSelection","newSelected","observeScroll","_this$scrollObserver","scrollObserver","groupClasses","_this$selectedIndices","focusSearchInput","selectedIndices","isSearchInput","matches","_this$$refs$list","searchBox","onMultiSelect","onSingleSelect","selectedValue","searchTerm","_this$scrollObserver2","observer","_entry$target","$__visibilityProp","isIntersecting","topBoundary","bottomBoundary","listboxToggleText","toggleButtonClasses","headerId","onResetButtonClicked","onSelectAllButtonClicked","_k","listboxClasses","itemTag","hasHeader","isFocused","listboxItemMoreItemsAriaAttributes","onIntersectionObserverAppear","hasFooter","baseIsMap","nodeIsMap","svgHeight","primaryButtonLink","primaryButtonText","secondaryButtonLink","secondaryButtonText","compact","invertInDarkMode","contentClass","shouldPreventImageReflow","contentClasses","coreChars","countDir","getCharCodes","getExtension","opt_char_re","truncatedUpperCase","_arg","_ref1","core","depth","ext","toUpperCase","baseInverter","toIteratee","getObserver","$_gl_intersectionHandler","$_gl_intersectionObserver","SUPPORT_BOT_USERNAME","issuableInitialDataById","_el$dataset","getElementById","initial","isLegacyIssueType","issuableData","issueType","authorUsername","isIssuableServiceDeskIssue","BORDER_CLASSES","bordered","borderPosition","_this$group","showHeader","borderClass","groupLabeledBy","getSymbols","GlButtonGroup","GlCollapsibleListbox","isAscending","sortDirectionToolTip","dropdownClass","dropdownToggleClass","sortDirectionToggleClass","newDirection","onSortByChanged","sortDirectionText","localSortDirection","toggleSortDirection","PROJECT_SELECT_LABEL_ID","SEARCH_DELAY","VALID_TOKEN_BACKGROUND","WARNING_TOKEN_BACKGROUND","INVALID_TOKEN_BACKGROUND","TOAST_MESSAGE_LOCALSTORAGE_KEY","MEMBERS_WITH_QUEUED_STATUS_LOCALSTORAGE_KEY","GROUP_FILTERS","ALL","DESCENDANT_GROUPS","USERS_FILTER_ALL","USERS_FILTER_SAML_PROVIDER_ID","TOP_NAV_INVITE_MEMBERS_COMPONENT","INVITE_MEMBER_MODAL_TRACKING_CATEGORY","IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_CATEGORY","IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_LABEL","MEMBERS_MODAL_DEFAULT_TITLE","MEMBERS_MODAL_CELEBRATE_TITLE","MEMBERS_MODAL_CELEBRATE_INTRO","MEMBERS_TO_GROUP_DEFAULT_INTRO_TEXT","MEMBERS_TO_PROJECT_DEFAULT_INTRO_TEXT","MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT","MEMBERS_SEARCH_FIELD","MEMBERS_PLACEHOLDER","GROUP_MODAL_DEFAULT_TITLE","GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT","GROUP_MODAL_TO_PROJECT_DEFAULT_INTRO_TEXT","GROUP_MODAL_TO_GROUP_ALERT_BODY","GROUP_MODAL_TO_GROUP_ALERT_LINK","helpPagePath","anchor","GROUP_MODAL_TO_PROJECT_ALERT_BODY","GROUP_MODAL_TO_PROJECT_ALERT_LINK","GROUP_SEARCH_FIELD","GROUP_PLACEHOLDER","ACCESS_LEVEL","ACCESS_EXPIRE_DATE","TOAST_MESSAGE_SUCCESSFUL","QUEUED_MESSAGE_SUCCESSFUL","INVALID_FEEDBACK_MESSAGE_DEFAULT","READ_MORE_TEXT","READ_MORE_ACCESS_EXPIRATION_TEXT","INVITE_BUTTON_TEXT","INVITE_BUTTON_TEXT_DISABLED","CANCEL_BUTTON_TEXT","HEADER_CLOSE_LABEL","MEMBER_ERROR_LIST_TEXT","COLLAPSED_ERRORS","EXPANDED_ERRORS","EMPTY_INVITES_ALERT_TEXT","MEMBER_MODAL_LABELS","modal","celebrate","intro","toGroup","introText","toProject","searchField","placeHolder","toastMessageSuccessful","memberErrorListText","collapsedErrors","expandedErrors","emptyInvitesAlertText","GROUP_MODAL_LABELS","notificationText","notificationLink","ON_SHOW_TRACK_LABEL","ON_CELEBRATION_TRACK_LABEL","WARNING_ALERT_TITLE","DANGER_ALERT_TITLE","REACHED_LIMIT_VARIANT","CLOSE_TO_LIMIT_VARIANT","REACHED_LIMIT_UPGRADE_SUGGESTION_MESSAGE","CLOSE_TO_LIMIT_MESSAGE","BLOCKED_SEAT_OVERAGES_BODY","BLOCKED_SEAT_OVERAGES_CTA","BLOCKED_SEAT_OVERAGES_CTA_DOCS","BLOCKED_SEAT_OVERAGES_ERROR_REASON","GlFormInput","borderless","attributes","onInput","focusin","onFocusin","focusout","onFocusout","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","uuid","help","labelPosition","labelId","isVerticalLayout","shouldRenderDescription","shouldRenderHelp","isChecked","helpId","toggleFeature","getExtensionScore","scorePath","fullPathScore","alpha","basePathScore","basePos","extAdjust","fileLength","lastIndexOf","candidate","startPos","endPos","maxDepth","matched","backgroundColor","scoped","showCloseButton","splitScopedLabelIndex","textColorVariant","light","labelTitle","onClick","labelComponent","scopedKey","scopedValue","tooltipTarget","hasListenerMixin","$events","_events","addExtraTokensForMergeRequests","IssuableFilteredSearchTokenKeys","removeTokensForKeys","initFilteredSearch","page","FILTERED_SEARCH","MERGE_REQUESTS","filteredSearchTokenKeys","useDefaultState","addShortcutsExtension","ShortcutsNavigation","initIssuableByEmail","initCsvImportExportButtons","CLONE_DEEP_FLAG","global","lastId","onVisible","support","listener","_callbacks","afterPrerendering","_doc","webkitHidden","visibilityState","webkitVisibilityState","_change","_init","encodeReserveRE","encodeReserveReplacer","commaRE","encode","decode","decodeURIComponent","err","castQueryParamValue","parseQuery","res","stringifyQuery","val2","trailingSlashRE","createRoute","record","redirectedFrom","clone","route","meta","hash","params","getFullPath","formatMatch","START","parent","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bVal","handleRouteEntered","instances","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","routerView","_routerViewCache","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","vm","current","hook","prepatch","componentInstance","propsToPass","resolveProps","resolvePath","relative","append","firstChar","charAt","pop","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","exec","escaped","prefix","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","flags","pretty","TypeError","attachKeys","re","sensitive","strict","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","compile","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","hashIndex","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","Link","custom","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","this$1$1","resolve","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","scopedSlot","$hasNormal","navigate","isExactActive","findAnchor","child","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","defaultPrevented","inBrowser","createRouteMap","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","Time","performance","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","protocol","absolutePath","stateCopy","replaceState","handlePopState","handleScroll","isPop","app","behavior","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","isValidPosition","isNumber","normalizePosition","hashStartsWithNumberRE","selector","docRect","elRect","getElementPosition","scrollTo","ua","supportsPushState","navigator","userAgent","pushState","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","propertiesToLog","createNavigationCancelledError","message","_isRouter","isError","isNavigationFailure","errorType","runQueue","cb","resolveAsyncComponents","hasAsync","pending","flatMapComponents","cid","once","resolvedDef","__esModule","hasSymbol","toStringTag","resolved","reject","reason","msg","comp","flatten","called","args","History","baseEl","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","guards","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","abort","lastRouteIndex","lastCurrentIndex","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","createNavigationAbortedError","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathLowerCase","baseLowerCase","HashHistory","checkFallback","ensureSlash","getHash","replaceHash","pushHash","getUrl","AbstractHistory","targetIndex","apps","prototypeAccessors","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","VueRouter$1","installed","isDef","registerInstance","callVal","_parentVnode","beforeCreate","_router","util","defineReactive","destroyed","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","START_LOCATION","WorkItemAttribute","milestoneDate","dueDate","startDate","localeDateFormat","asDate","milestoneRemainingTime","milestoneLink","due","isInPast","isInFuture","getTimeRemainingInWords","reHasUnicodeWord","BTr","bvTableRowGroup","isRowDark","trClasses","trAttrs","getSymbolsIn","ex","_typeof","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","pick","transports","targets","sources","wormhole","trackInstances","transport","passengers","_transport$order","order","newTransport","$_getTransportIndex","newTransports","registerTarget","unregisterTarget","$delete","registerSource","unregisterSource","hasTarget","hasSource","hasContentFor","_id","slim","slotProps","sendUpdate","closer","normalizeSlots","normalizeOwnChildren","slotContent","Tag","transition","firstRender","ownTransports","oldVal","_this2","temp","newPassengers","combinePassengers","noWrapper","_id$1","portalProps","targetProps","MountingPortal","bail","mountTo","targetSlim","targetSlotProps","targetTag","portalTarget","mountEl","_props","propsData","$destroy","manual","Vue$$1","portalTargetName","MountingPortalName","Wormhole","dataView","buffer","byteOffset","byteLength","defs","cardHeader","fill","justified","pills","small","tabs","BNav","notDisabled","tab","BVTabButton","getBvTabs","controls","noKeyNav","posInSet","setSize","link","handleEvent","localActive","titleItemClass","titleLinkClass","titleLinkAttributes","$link","bvTabs","activeNavItemClass","navProps","activeTabClass","lazy","navClass","navWrapperClass","noFade","noNavStyle","BTabs","currentTab","registeredTabs","$tab","activateTab","previousTab","nextTab","updateTabs","$_observer","setObserver","$t","childList","subtree","attributeFilter","$tabs","getTabs","buttons","$btn","$button","getButtonForTab","$forceUpdate","tabEvent","vueTarget","componentId","emitTabClick","focusButton","firstTab","lastTab","$activeTab","$fallbackTab","$buttons","controlledBy","clickTab","$nav","$children","$empty","validatorHelper","actionPrimary","actionSecondary","actionTertiary","syncActiveTabWithQueryParams","queryParamName","activeTabIndex","handleInput","syncActiveTabFromQueryParams","buttonBinding","queryParamValue","getQueryParamValue","tabIndexToActivate","getTabQueryParamValue","bTabs","URLSearchParams","currentQueryParamValue","newQueryParamValue","searchParams","setQueryParamValueIfNecessary","secondary","tertiary","getStatusLabel","status","_STATUS_LABELS$status","STATUS_LABELS","todoLabel","hasTodo","updateGlobalTodoCount","delta","CustomEvent","detail","BASE_DROPDOWN_CLASS","Outside","ariaHaspopup","ariaLabelledby","mainAxis","openedYet","baseDropdownId","_this$toggleText","hasNoVisibleToggleText","isIconOnly","toggleLabelledBy","isEllipsisButton","isCaretOnly","isDefaultToggle","buttonTextClasses","toggleButtonTextClasses","ariaAttributes","toggleOptions","_this$$refs$toggle","firstElementChild","middleware","allowedPlacements","_this$nonScrollableCo","availableHeight","contentsEl","contentsAvailableHeight","nonScrollableContentHeight","toggleElement","checkToggleFocusable","stopFloating","calculateNonScrollableAreaHeight","MutationObserver","stopAutoUpdate","floatingUIConfig","_this$observer","_this$stopAutoUpdate","prevented","startFloating","hadFocusWithin","hasToggled","focusToggle","toggleOnEnter","toggleOnSpace","scrollableArea","floatingElementBoundingBox","scrollableAreaBoundingBox","toggleComponent","toggleAttributes","toggleListeners","panelClasses","canScroll","isScrolledToBottom","isScrolledToTop","scrollDown","$document","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsModifier","rsSeq","rsEmoji","reUnicodeWord","reLatin","reComboMark","basenameMatch","computeMatch","mergeMatches","baseMatches","matchIndex","matchPos","matchPositions","output","strPos","tagClass","tagClose","tagOpen","substring","ai","bj","out","backtrack","move","trace","baseIntersection","castArrayLikeObject","intersection","mapped","MODEL_EVENT_NAME_ACTIVE","buttonId","noBody","BTab","_isTab","card","fade","registerTab","updateButton","unregisterTab","deactivateTab","tabClasses","computedLazy","computedNoFade","linkClass","caption","captionHtml","captionMixin","$caption","hasCaptionSlot","captionId","GlFormInputGroup","clearable","recentSearchesHeader","closeButtonTitle","clearRecentSearchesText","noRecentSearchesText","emitClearHistory","selectHistoryItem","computeCoordsFromPlacement","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","validMiddleware","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","initialPlacement","detectOverflow","_await$platform$isEle","elementContext","altBoundary","paddingObject","clippingClientRect","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","alignmentOffset","centerOffset","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","autoAlignment","detectOverflowOptions","placements$1","getPlacementList","currentPlacement","alignmentSides","currentOverflows","allOverflows","overflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","checkMainAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","overflowsData","_middlewareData$flip2","_overflowsData$filter","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","referenceHiddenOffsets","referenceHidden","escapedOffsets","getBoundingRect","minX","minY","nativeClientRects","clientRects","sortedRects","prevRect","getRectsByLine","resetRects","firstRect","lastRect","isTop","isLeftSide","maxRight","minLeft","measureRects","_middlewareData$offse","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","convertValueToCoords","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","limitShift","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","comparer","GlToast","showGlobalToast","$toast","captionTop","fixed","hover","noBorderCollapse","outlined","responsive","tableClass","tableRendererMixin","isTableSimple","selectableTableClasses","stackedTableClasses","computedBusy","selectableTableAttrs","ariaAttrs","wrapperClasses","renderCaption","renderColgroup","renderTbody","renderTfoot","$table","tableClasses","tableAttrs","wrapperStyles","formClass","BDropdownForm","pad","autocomplete","displayField","inputId","inputLabel","inputName","textInput","customTrigger","triggerOnFocus","computedWidth","$parentEl","openedEvent","opened","drawEvent","pikadayConfig","dateString","parsedDate","defaultDateFormatter","titleEl","monthEl","yearEl","addAccessibleLabels","pikaday","pikaButtons","today","pikaButton","pikaYear","pikaMonth","pikaDay","pikaButtonDate","highlightPastDates","calendarTriggerBtn","resetDate","datepickerClasses","renderClearButton","formattedDate","inputAutocomplete","cleared","kebabCase","shouldDisableShortcuts","keyboard_shortcuts_enabled","disableShortcuts","BTableLite","stickyHeaderClass","localTableClass","DefaultTransition","afterEnter","onAfterEnter","ariaAtomic","ariaLive","BToaster","doRender","dead","staticName","emitOnRoot","$toaster","$target","linkProps","appendToast","autoHideDelay","bodyClass","headerClass","headerTag","isStatus","noAutoHide","noHoverPause","solid","static","toastClass","toaster","BToast","isMounted","localShow","isTransitioning","isHiding","dismissStarted","resumeDismiss","onBeforeEnter","beforeLeave","onBeforeLeave","afterLeave","onAfterLeave","ensureToaster","$_dismissTimer","listenOnRoot","computedToaster","clearDismissTimer","showEvent","buildEvent","emitEvent","hideEvent","setHoverHandler","bvEvent","div","bvEventRoot","$mount","computedDuration","onPause","onUnPause","passed","startDismissTimer","hiddenEvent","$headerContent","$title","$header","$body","onLinkClick","computedAttrs","toastClasses","scopedStyleAttrs","transitionHandlers","makeToast","BASE_PROPS","propsToSlots","toastContent","filterOptions","BVToastPlugin","plugins","plugin","BVToastPop","handleDestroy","BvToast","_root","toast","ToastPlugin","DEFAULT_OPTIONS","toastsCount","showToast","$bvToast","toastHiddenCallback","$root","updatedAutoHideDelay","reFlags","regexp","lastIndex","pluckCandidates","sortCandidates","bKey","maxInners","maxResults","scoreProvider","scoredCandidates","spotLeft","toggleSelection","checkedClasses"],"mappings":"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","file":"pages.projects.merge_requests.index.855b395f.chunk.js","sourcesContent":["var constant = require('./constant'),\n    createInverter = require('./_createInverter'),\n    identity = require('./identity');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n  if (value != null &&\n      typeof value.toString != 'function') {\n    value = nativeObjectToString.call(value);\n  }\n\n  result[value] = key;\n}, constant(identity));\n\nmodule.exports = invert;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n  var includes = comparator ? arrayIncludesWith : arrayIncludes,\n      length = arrays[0].length,\n      othLength = arrays.length,\n      othIndex = othLength,\n      caches = Array(othLength),\n      maxLength = Infinity,\n      result = [];\n\n  while (othIndex--) {\n    var array = arrays[othIndex];\n    if (othIndex && iteratee) {\n      array = arrayMap(array, baseUnary(iteratee));\n    }\n    maxLength = nativeMin(array.length, maxLength);\n    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n      ? new SetCache(othIndex && array)\n      : undefined;\n  }\n  array = arrays[0];\n\n  var index = -1,\n      seen = caches[0];\n\n  outer:\n  while (++index < length && result.length < maxLength) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (!(seen\n          ? cacheHas(seen, computed)\n          : includes(result, computed, comparator)\n        )) {\n      othIndex = othLength;\n      while (--othIndex) {\n        var cache = caches[othIndex];\n        if (!(cache\n              ? cacheHas(cache, computed)\n              : includes(arrays[othIndex], computed, comparator))\n            ) {\n          continue outer;\n        }\n      }\n      if (seen) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseIntersection;\n","/*!\n * Pikaday\n *\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/Pikaday/Pikaday\n */\n\n(function (root, factory)\n{\n    'use strict';\n\n    var moment;\n    if (typeof exports === 'object') {\n        // CommonJS module\n        // Load moment.js as an optional dependency\n        try { moment = require('moment'); } catch (e) {}\n        module.exports = factory(moment);\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(function (req)\n        {\n            // Load moment.js as an optional dependency\n            var id = 'moment';\n            try { moment = req(id); } catch (e) {}\n            return factory(moment);\n        });\n    } else {\n        root.Pikaday = factory(root.moment);\n    }\n}(this, function (moment)\n{\n    'use strict';\n\n    /**\n     * feature detection and helper functions\n     */\n    var hasMoment = typeof moment === 'function',\n\n    hasEventListeners = !!window.addEventListener,\n\n    document = window.document,\n\n    sto = window.setTimeout,\n\n    addEvent = function(el, e, callback, capture)\n    {\n        if (hasEventListeners) {\n            el.addEventListener(e, callback, !!capture);\n        } else {\n            el.attachEvent('on' + e, callback);\n        }\n    },\n\n    removeEvent = function(el, e, callback, capture)\n    {\n        if (hasEventListeners) {\n            el.removeEventListener(e, callback, !!capture);\n        } else {\n            el.detachEvent('on' + e, callback);\n        }\n    },\n\n    trim = function(str)\n    {\n        return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g,'');\n    },\n\n    hasClass = function(el, cn)\n    {\n        return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\n    },\n\n    addClass = function(el, cn)\n    {\n        if (!hasClass(el, cn)) {\n            el.className = (el.className === '') ? cn : el.className + ' ' + cn;\n        }\n    },\n\n    removeClass = function(el, cn)\n    {\n        el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\n    },\n\n    isArray = function(obj)\n    {\n        return (/Array/).test(Object.prototype.toString.call(obj));\n    },\n\n    isDate = function(obj)\n    {\n        return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n    },\n\n    isWeekend = function(date)\n    {\n        var day = date.getDay();\n        return day === 0 || day === 6;\n    },\n\n    isLeapYear = function(year)\n    {\n        // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n        return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n    },\n\n    getDaysInMonth = function(year, month)\n    {\n        return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n    },\n\n    setToStartOfDay = function(date)\n    {\n        if (isDate(date)) date.setHours(0,0,0,0);\n    },\n\n    compareDates = function(a,b)\n    {\n        // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n        return a.getTime() === b.getTime();\n    },\n\n    extend = function(to, from, overwrite)\n    {\n        var prop, hasProp;\n        for (prop in from) {\n            hasProp = to[prop] !== undefined;\n            if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {\n                if (isDate(from[prop])) {\n                    if (overwrite) {\n                        to[prop] = new Date(from[prop].getTime());\n                    }\n                }\n                else if (isArray(from[prop])) {\n                    if (overwrite) {\n                        to[prop] = from[prop].slice(0);\n                    }\n                } else {\n                    to[prop] = extend({}, from[prop], overwrite);\n                }\n            } else if (overwrite || !hasProp) {\n                to[prop] = from[prop];\n            }\n        }\n        return to;\n    },\n\n    fireEvent = function(el, eventName, data)\n    {\n        var ev;\n\n        if (document.createEvent) {\n            ev = document.createEvent('HTMLEvents');\n            ev.initEvent(eventName, true, false);\n            ev = extend(ev, data);\n            el.dispatchEvent(ev);\n        } else if (document.createEventObject) {\n            ev = document.createEventObject();\n            ev = extend(ev, data);\n            el.fireEvent('on' + eventName, ev);\n        }\n    },\n\n    adjustCalendar = function(calendar) {\n        if (calendar.month < 0) {\n            calendar.year -= Math.ceil(Math.abs(calendar.month)/12);\n            calendar.month += 12;\n        }\n        if (calendar.month > 11) {\n            calendar.year += Math.floor(Math.abs(calendar.month)/12);\n            calendar.month -= 12;\n        }\n        return calendar;\n    },\n\n    /**\n     * defaults and localisation\n     */\n    defaults = {\n\n        // bind the picker to a form field\n        field: null,\n\n        // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\n        bound: undefined,\n\n        // data-attribute on the input field with an aria assistance tekst (only applied when `bound` is set)\n        ariaLabel: 'Use the arrow keys to pick a date',\n\n        // position of the datepicker, relative to the field (default to bottom & left)\n        // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\n        position: 'bottom left',\n\n        // automatically fit in the viewport even if it means repositioning from the position option\n        reposition: true,\n\n        // the default output format for `.toString()` and `field` value\n        format: 'YYYY-MM-DD',\n\n        // the toString function which gets passed a current date object and format\n        // and returns a string\n        toString: null,\n\n        // used to create date object from current input string\n        parse: null,\n\n        // the initial date to view when first opened\n        defaultDate: null,\n\n        // make the `defaultDate` the initial selected value\n        setDefaultDate: false,\n\n        // first day of week (0: Sunday, 1: Monday etc)\n        firstDay: 0,\n\n        // the default flag for moment's strict date parsing\n        formatStrict: false,\n\n        // the minimum/earliest date that can be selected\n        minDate: null,\n        // the maximum/latest date that can be selected\n        maxDate: null,\n\n        // number of years either side, or array of upper/lower range\n        yearRange: 10,\n\n        // show week numbers at head of row\n        showWeekNumber: false,\n\n        // Week picker mode\n        pickWholeWeek: false,\n\n        // used internally (don't config outside)\n        minYear: 0,\n        maxYear: 9999,\n        minMonth: undefined,\n        maxMonth: undefined,\n\n        startRange: null,\n        endRange: null,\n\n        isRTL: false,\n\n        // Additional text to append to the year in the calendar title\n        yearSuffix: '',\n\n        // Render the month after year in the calendar title\n        showMonthAfterYear: false,\n\n        // Render days of the calendar grid that fall in the next or previous month\n        showDaysInNextAndPreviousMonths: false,\n\n        // Allows user to select days that fall in the next or previous month\n        enableSelectionDaysInNextAndPreviousMonths: false,\n\n        // how many months are visible\n        numberOfMonths: 1,\n\n        // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\n        // only used for the first display or when a selected date is not visible\n        mainCalendar: 'left',\n\n        // Specify a DOM element to render the calendar in\n        container: undefined,\n\n        // Blur field when date is selected\n        blurFieldOnSelect : true,\n\n        // internationalization\n        i18n: {\n            previousMonth : 'Previous Month',\n            nextMonth     : 'Next Month',\n            months        : ['January','February','March','April','May','June','July','August','September','October','November','December'],\n            weekdays      : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n            weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\n        },\n\n        // Theme Classname\n        theme: null,\n\n        // events array\n        events: [],\n\n        // callback function\n        onSelect: null,\n        onOpen: null,\n        onClose: null,\n        onDraw: null,\n\n        // Enable keyboard input\n        keyboardInput: true\n    },\n\n\n    /**\n     * templating functions to abstract HTML rendering\n     */\n    renderDayName = function(opts, day, abbr)\n    {\n        day += opts.firstDay;\n        while (day >= 7) {\n            day -= 7;\n        }\n        return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\n    },\n\n    renderDay = function(opts)\n    {\n        var arr = [];\n        var ariaSelected = 'false';\n        if (opts.isEmpty) {\n            if (opts.showDaysInNextAndPreviousMonths) {\n                arr.push('is-outside-current-month');\n\n                if(!opts.enableSelectionDaysInNextAndPreviousMonths) {\n                    arr.push('is-selection-disabled');\n                }\n\n            } else {\n                return '<td class=\"is-empty\"></td>';\n            }\n        }\n        if (opts.isDisabled) {\n            arr.push('is-disabled');\n        }\n        if (opts.isToday) {\n            arr.push('is-today');\n        }\n        if (opts.isSelected) {\n            arr.push('is-selected');\n            ariaSelected = 'true';\n        }\n        if (opts.hasEvent) {\n            arr.push('has-event');\n        }\n        if (opts.isInRange) {\n            arr.push('is-inrange');\n        }\n        if (opts.isStartRange) {\n            arr.push('is-startrange');\n        }\n        if (opts.isEndRange) {\n            arr.push('is-endrange');\n        }\n        return '<td data-day=\"' + opts.day + '\" class=\"' + arr.join(' ') + '\" aria-selected=\"' + ariaSelected + '\">' +\n                 '<button class=\"pika-button pika-day\" type=\"button\" ' +\n                    'data-pika-year=\"' + opts.year + '\" data-pika-month=\"' + opts.month + '\" data-pika-day=\"' + opts.day + '\">' +\n                        opts.day +\n                 '</button>' +\n               '</td>';\n    },\n\n    renderWeek = function (d, m, y) {\n        // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified.\n        var onejan = new Date(y, 0, 1),\n            weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay()+1)/7);\n        return '<td class=\"pika-week\">' + weekNum + '</td>';\n    },\n\n    renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)\n    {\n        return '<tr class=\"pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '\">' + (isRTL ? days.reverse() : days).join('') + '</tr>';\n    },\n\n    renderBody = function(rows)\n    {\n        return '<tbody>' + rows.join('') + '</tbody>';\n    },\n\n    renderHead = function(opts)\n    {\n        var i, arr = [];\n        if (opts.showWeekNumber) {\n            arr.push('<th></th>');\n        }\n        for (i = 0; i < 7; i++) {\n            arr.push('<th scope=\"col\"><abbr title=\"' + renderDayName(opts, i) + '\">' + renderDayName(opts, i, true) + '</abbr></th>');\n        }\n        return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n    },\n\n    renderTitle = function(instance, c, year, month, refYear, randId)\n    {\n        var i, j, arr,\n            opts = instance._o,\n            isMinYear = year === opts.minYear,\n            isMaxYear = year === opts.maxYear,\n            html = '<div id=\"' + randId + '\" class=\"pika-title\" role=\"heading\" aria-live=\"assertive\">',\n            monthHtml,\n            yearHtml,\n            prev = true,\n            next = true;\n\n        for (arr = [], i = 0; i < 12; i++) {\n            arr.push('<option value=\"' + (year === refYear ? i - c : 12 + i - c) + '\"' +\n                (i === month ? ' selected=\"selected\"': '') +\n                ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? 'disabled=\"disabled\"' : '') + '>' +\n                opts.i18n.months[i] + '</option>');\n        }\n\n        monthHtml = '<div class=\"pika-label\">' + opts.i18n.months[month] + '<select class=\"pika-select pika-select-month\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n        if (isArray(opts.yearRange)) {\n            i = opts.yearRange[0];\n            j = opts.yearRange[1] + 1;\n        } else {\n            i = year - opts.yearRange;\n            j = 1 + year + opts.yearRange;\n        }\n\n        for (arr = []; i < j && i <= opts.maxYear; i++) {\n            if (i >= opts.minYear) {\n                arr.push('<option value=\"' + i + '\"' + (i === year ? ' selected=\"selected\"': '') + '>' + (i) + '</option>');\n            }\n        }\n        yearHtml = '<div class=\"pika-label\">' + year + opts.yearSuffix + '<select class=\"pika-select pika-select-year\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n        if (opts.showMonthAfterYear) {\n            html += yearHtml + monthHtml;\n        } else {\n            html += monthHtml + yearHtml;\n        }\n\n        if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n            prev = false;\n        }\n\n        if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n            next = false;\n        }\n\n        if (c === 0) {\n            html += '<button class=\"pika-prev' + (prev ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.previousMonth + '</button>';\n        }\n        if (c === (instance._o.numberOfMonths - 1) ) {\n            html += '<button class=\"pika-next' + (next ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.nextMonth + '</button>';\n        }\n\n        return html += '</div>';\n    },\n\n    renderTable = function(opts, data, randId)\n    {\n        return '<table cellpadding=\"0\" cellspacing=\"0\" class=\"pika-table\" role=\"grid\" aria-labelledby=\"' + randId + '\">' + renderHead(opts) + renderBody(data) + '</table>';\n    },\n\n\n    /**\n     * Pikaday constructor\n     */\n    Pikaday = function(options)\n    {\n        var self = this,\n            opts = self.config(options);\n\n        self._onMouseDown = function(e)\n        {\n            if (!self._v) {\n                return;\n            }\n            e = e || window.event;\n            var target = e.target || e.srcElement;\n            if (!target) {\n                return;\n            }\n\n            if (!hasClass(target, 'is-disabled')) {\n                if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {\n                    self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\n                    if (opts.bound) {\n                        sto(function() {\n                            self.hide();\n                            if (opts.blurFieldOnSelect && opts.field) {\n                                opts.field.blur();\n                            }\n                        }, 100);\n                    }\n                }\n                else if (hasClass(target, 'pika-prev')) {\n                    self.prevMonth();\n                }\n                else if (hasClass(target, 'pika-next')) {\n                    self.nextMonth();\n                }\n            }\n            if (!hasClass(target, 'pika-select')) {\n                // if this is touch event prevent mouse events emulation\n                if (e.preventDefault) {\n                    e.preventDefault();\n                } else {\n                    e.returnValue = false;\n                    return false;\n                }\n            } else {\n                self._c = true;\n            }\n        };\n\n        self._onChange = function(e)\n        {\n            e = e || window.event;\n            var target = e.target || e.srcElement;\n            if (!target) {\n                return;\n            }\n            if (hasClass(target, 'pika-select-month')) {\n                self.gotoMonth(target.value);\n            }\n            else if (hasClass(target, 'pika-select-year')) {\n                self.gotoYear(target.value);\n            }\n        };\n\n        self._onKeyChange = function(e)\n        {\n            e = e || window.event;\n\n            if (self.isVisible()) {\n\n                switch(e.keyCode){\n                    case 13:\n                    case 27:\n                        if (opts.field) {\n                            opts.field.blur();\n                        }\n                        break;\n                    case 37:\n                        e.preventDefault();\n                        self.adjustDate('subtract', 1);\n                        break;\n                    case 38:\n                        self.adjustDate('subtract', 7);\n                        break;\n                    case 39:\n                        self.adjustDate('add', 1);\n                        break;\n                    case 40:\n                        self.adjustDate('add', 7);\n                        break;\n                }\n            }\n        };\n\n        self._onInputChange = function(e)\n        {\n            var date;\n\n            if (e.firedBy === self) {\n                return;\n            }\n            if (opts.parse) {\n                date = opts.parse(opts.field.value, opts.format);\n            } else if (hasMoment) {\n                date = moment(opts.field.value, opts.format, opts.formatStrict);\n                date = (date && date.isValid()) ? date.toDate() : null;\n            }\n            else {\n                date = new Date(Date.parse(opts.field.value));\n            }\n            if (isDate(date)) {\n              self.setDate(date);\n            }\n            if (!self._v) {\n                self.show();\n            }\n        };\n\n        self._onInputFocus = function()\n        {\n            self.show();\n        };\n\n        self._onInputClick = function()\n        {\n            self.show();\n        };\n\n        self._onInputBlur = function()\n        {\n            // IE allows pika div to gain focus; catch blur the input field\n            var pEl = document.activeElement;\n            do {\n                if (hasClass(pEl, 'pika-single')) {\n                    return;\n                }\n            }\n            while ((pEl = pEl.parentNode));\n\n            if (!self._c) {\n                self._b = sto(function() {\n                    self.hide();\n                }, 50);\n            }\n            self._c = false;\n        };\n\n        self._onClick = function(e)\n        {\n            e = e || window.event;\n            var target = e.target || e.srcElement,\n                pEl = target;\n            if (!target) {\n                return;\n            }\n            if (!hasEventListeners && hasClass(target, 'pika-select')) {\n                if (!target.onchange) {\n                    target.setAttribute('onchange', 'return;');\n                    addEvent(target, 'change', self._onChange);\n                }\n            }\n            do {\n                if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {\n                    return;\n                }\n            }\n            while ((pEl = pEl.parentNode));\n            if (self._v && target !== opts.trigger && pEl !== opts.trigger) {\n                self.hide();\n            }\n        };\n\n        self.el = document.createElement('div');\n        self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');\n\n        addEvent(self.el, 'mousedown', self._onMouseDown, true);\n        addEvent(self.el, 'touchend', self._onMouseDown, true);\n        addEvent(self.el, 'change', self._onChange);\n\n        if (opts.keyboardInput) {\n            addEvent(document, 'keydown', self._onKeyChange);\n        }\n\n        if (opts.field) {\n            if (opts.container) {\n                opts.container.appendChild(self.el);\n            } else if (opts.bound) {\n                document.body.appendChild(self.el);\n            } else {\n                opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\n            }\n            addEvent(opts.field, 'change', self._onInputChange);\n\n            if (!opts.defaultDate) {\n                if (hasMoment && opts.field.value) {\n                    opts.defaultDate = moment(opts.field.value, opts.format).toDate();\n                } else {\n                    opts.defaultDate = new Date(Date.parse(opts.field.value));\n                }\n                opts.setDefaultDate = true;\n            }\n        }\n\n        var defDate = opts.defaultDate;\n\n        if (isDate(defDate)) {\n            if (opts.setDefaultDate) {\n                self.setDate(defDate, true);\n            } else {\n                self.gotoDate(defDate);\n            }\n        } else {\n            self.gotoDate(new Date());\n        }\n\n        if (opts.bound) {\n            this.hide();\n            self.el.className += ' is-bound';\n            addEvent(opts.trigger, 'click', self._onInputClick);\n            addEvent(opts.trigger, 'focus', self._onInputFocus);\n            addEvent(opts.trigger, 'blur', self._onInputBlur);\n        } else {\n            this.show();\n        }\n    };\n\n\n    /**\n     * public Pikaday API\n     */\n    Pikaday.prototype = {\n\n\n        /**\n         * configure functionality\n         */\n        config: function(options)\n        {\n            if (!this._o) {\n                this._o = extend({}, defaults, true);\n            }\n\n            var opts = extend(this._o, options, true);\n\n            opts.isRTL = !!opts.isRTL;\n\n            opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n            opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;\n\n            opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\n\n            opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\n\n            opts.disableWeekends = !!opts.disableWeekends;\n\n            opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;\n\n            var nom = parseInt(opts.numberOfMonths, 10) || 1;\n            opts.numberOfMonths = nom > 4 ? 4 : nom;\n\n            if (!isDate(opts.minDate)) {\n                opts.minDate = false;\n            }\n            if (!isDate(opts.maxDate)) {\n                opts.maxDate = false;\n            }\n            if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\n                opts.maxDate = opts.minDate = false;\n            }\n            if (opts.minDate) {\n                this.setMinDate(opts.minDate);\n            }\n            if (opts.maxDate) {\n                this.setMaxDate(opts.maxDate);\n            }\n\n            if (isArray(opts.yearRange)) {\n                var fallback = new Date().getFullYear() - 10;\n                opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\n                opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\n            } else {\n                opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\n                if (opts.yearRange > 100) {\n                    opts.yearRange = 100;\n                }\n            }\n\n            return opts;\n        },\n\n        /**\n         * return a formatted string of the current selection (using Moment.js if available)\n         */\n        toString: function(format)\n        {\n            format = format || this._o.format;\n            if (!isDate(this._d)) {\n                return '';\n            }\n            if (this._o.toString) {\n              return this._o.toString(this._d, format);\n            }\n            if (hasMoment) {\n              return moment(this._d).format(format);\n            }\n            return this._d.toDateString();\n        },\n\n        /**\n         * return a Moment.js object of the current selection (if available)\n         */\n        getMoment: function()\n        {\n            return hasMoment ? moment(this._d) : null;\n        },\n\n        /**\n         * set the current selection from a Moment.js object (if available)\n         */\n        setMoment: function(date, preventOnSelect)\n        {\n            if (hasMoment && moment.isMoment(date)) {\n                this.setDate(date.toDate(), preventOnSelect);\n            }\n        },\n\n        /**\n         * return a Date object of the current selection\n         */\n        getDate: function()\n        {\n            return isDate(this._d) ? new Date(this._d.getTime()) : null;\n        },\n\n        /**\n         * set the current selection\n         */\n        setDate: function(date, preventOnSelect)\n        {\n            if (!date) {\n                this._d = null;\n\n                if (this._o.field) {\n                    this._o.field.value = '';\n                    fireEvent(this._o.field, 'change', { firedBy: this });\n                }\n\n                return this.draw();\n            }\n            if (typeof date === 'string') {\n                date = new Date(Date.parse(date));\n            }\n            if (!isDate(date)) {\n                return;\n            }\n\n            var min = this._o.minDate,\n                max = this._o.maxDate;\n\n            if (isDate(min) && date < min) {\n                date = min;\n            } else if (isDate(max) && date > max) {\n                date = max;\n            }\n\n            this._d = new Date(date.getTime());\n            setToStartOfDay(this._d);\n            this.gotoDate(this._d);\n\n            if (this._o.field) {\n                this._o.field.value = this.toString();\n                fireEvent(this._o.field, 'change', { firedBy: this });\n            }\n            if (!preventOnSelect && typeof this._o.onSelect === 'function') {\n                this._o.onSelect.call(this, this.getDate());\n            }\n        },\n\n        /**\n         * change view to a specific date\n         */\n        gotoDate: function(date)\n        {\n            var newCalendar = true;\n\n            if (!isDate(date)) {\n                return;\n            }\n\n            if (this.calendars) {\n                var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n                    lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),\n                    visibleDate = date.getTime();\n                // get the end of the month\n                lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);\n                lastVisibleDate.setDate(lastVisibleDate.getDate()-1);\n                newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\n            }\n\n            if (newCalendar) {\n                this.calendars = [{\n                    month: date.getMonth(),\n                    year: date.getFullYear()\n                }];\n                if (this._o.mainCalendar === 'right') {\n                    this.calendars[0].month += 1 - this._o.numberOfMonths;\n                }\n            }\n\n            this.adjustCalendars();\n        },\n\n        adjustDate: function(sign, days) {\n\n            var day = this.getDate() || new Date();\n            var difference = parseInt(days)*24*60*60*1000;\n\n            var newDay;\n\n            if (sign === 'add') {\n                newDay = new Date(day.valueOf() + difference);\n            } else if (sign === 'subtract') {\n                newDay = new Date(day.valueOf() - difference);\n            }\n\n            this.setDate(newDay);\n        },\n\n        adjustCalendars: function() {\n            this.calendars[0] = adjustCalendar(this.calendars[0]);\n            for (var c = 1; c < this._o.numberOfMonths; c++) {\n                this.calendars[c] = adjustCalendar({\n                    month: this.calendars[0].month + c,\n                    year: this.calendars[0].year\n                });\n            }\n            this.draw();\n        },\n\n        gotoToday: function()\n        {\n            this.gotoDate(new Date());\n        },\n\n        /**\n         * change view to a specific month (zero-index, e.g. 0: January)\n         */\n        gotoMonth: function(month)\n        {\n            if (!isNaN(month)) {\n                this.calendars[0].month = parseInt(month, 10);\n                this.adjustCalendars();\n            }\n        },\n\n        nextMonth: function()\n        {\n            this.calendars[0].month++;\n            this.adjustCalendars();\n        },\n\n        prevMonth: function()\n        {\n            this.calendars[0].month--;\n            this.adjustCalendars();\n        },\n\n        /**\n         * change view to a specific full year (e.g. \"2012\")\n         */\n        gotoYear: function(year)\n        {\n            if (!isNaN(year)) {\n                this.calendars[0].year = parseInt(year, 10);\n                this.adjustCalendars();\n            }\n        },\n\n        /**\n         * change the minDate\n         */\n        setMinDate: function(value)\n        {\n            if(value instanceof Date) {\n                setToStartOfDay(value);\n                this._o.minDate = value;\n                this._o.minYear  = value.getFullYear();\n                this._o.minMonth = value.getMonth();\n            } else {\n                this._o.minDate = defaults.minDate;\n                this._o.minYear  = defaults.minYear;\n                this._o.minMonth = defaults.minMonth;\n                this._o.startRange = defaults.startRange;\n            }\n\n            this.draw();\n        },\n\n        /**\n         * change the maxDate\n         */\n        setMaxDate: function(value)\n        {\n            if(value instanceof Date) {\n                setToStartOfDay(value);\n                this._o.maxDate = value;\n                this._o.maxYear = value.getFullYear();\n                this._o.maxMonth = value.getMonth();\n            } else {\n                this._o.maxDate = defaults.maxDate;\n                this._o.maxYear = defaults.maxYear;\n                this._o.maxMonth = defaults.maxMonth;\n                this._o.endRange = defaults.endRange;\n            }\n\n            this.draw();\n        },\n\n        setStartRange: function(value)\n        {\n            this._o.startRange = value;\n        },\n\n        setEndRange: function(value)\n        {\n            this._o.endRange = value;\n        },\n\n        /**\n         * refresh the HTML\n         */\n        draw: function(force)\n        {\n            if (!this._v && !force) {\n                return;\n            }\n            var opts = this._o,\n                minYear = opts.minYear,\n                maxYear = opts.maxYear,\n                minMonth = opts.minMonth,\n                maxMonth = opts.maxMonth,\n                html = '',\n                randId;\n\n            if (this._y <= minYear) {\n                this._y = minYear;\n                if (!isNaN(minMonth) && this._m < minMonth) {\n                    this._m = minMonth;\n                }\n            }\n            if (this._y >= maxYear) {\n                this._y = maxYear;\n                if (!isNaN(maxMonth) && this._m > maxMonth) {\n                    this._m = maxMonth;\n                }\n            }\n\n            randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n\n            for (var c = 0; c < opts.numberOfMonths; c++) {\n                html += '<div class=\"pika-lendar\">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '</div>';\n            }\n\n            this.el.innerHTML = html;\n\n            if (opts.bound) {\n                if(opts.field.type !== 'hidden') {\n                    sto(function() {\n                        opts.trigger.focus();\n                    }, 1);\n                }\n            }\n\n            if (typeof this._o.onDraw === 'function') {\n                this._o.onDraw(this);\n            }\n\n            if (opts.bound) {\n                // let the screen reader user know to use arrow keys\n                opts.field.setAttribute('aria-label', opts.ariaLabel);\n            }\n        },\n\n        adjustPosition: function()\n        {\n            var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned;\n\n            if (this._o.container) return;\n\n            this.el.style.position = 'absolute';\n\n            field = this._o.trigger;\n            pEl = field;\n            width = this.el.offsetWidth;\n            height = this.el.offsetHeight;\n            viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n            viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n            scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n            leftAligned = true;\n            bottomAligned = true;\n\n            if (typeof field.getBoundingClientRect === 'function') {\n                clientRect = field.getBoundingClientRect();\n                left = clientRect.left + window.pageXOffset;\n                top = clientRect.bottom + window.pageYOffset;\n            } else {\n                left = pEl.offsetLeft;\n                top  = pEl.offsetTop + pEl.offsetHeight;\n                while((pEl = pEl.offsetParent)) {\n                    left += pEl.offsetLeft;\n                    top  += pEl.offsetTop;\n                }\n            }\n\n            // default position is bottom & left\n            if ((this._o.reposition && left + width > viewportWidth) ||\n                (\n                    this._o.position.indexOf('right') > -1 &&\n                    left - width + field.offsetWidth > 0\n                )\n            ) {\n                left = left - width + field.offsetWidth;\n                leftAligned = false;\n            }\n            if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||\n                (\n                    this._o.position.indexOf('top') > -1 &&\n                    top - height - field.offsetHeight > 0\n                )\n            ) {\n                top = top - height - field.offsetHeight;\n                bottomAligned = false;\n            }\n\n            this.el.style.left = left + 'px';\n            this.el.style.top = top + 'px';\n\n            addClass(this.el, leftAligned ? 'left-aligned' : 'right-aligned');\n            addClass(this.el, bottomAligned ? 'bottom-aligned' : 'top-aligned');\n            removeClass(this.el, !leftAligned ? 'left-aligned' : 'right-aligned');\n            removeClass(this.el, !bottomAligned ? 'bottom-aligned' : 'top-aligned');\n        },\n\n        /**\n         * render HTML for a particular month\n         */\n        render: function(year, month, randId)\n        {\n            var opts   = this._o,\n                now    = new Date(),\n                days   = getDaysInMonth(year, month),\n                before = new Date(year, month, 1).getDay(),\n                data   = [],\n                row    = [];\n            setToStartOfDay(now);\n            if (opts.firstDay > 0) {\n                before -= opts.firstDay;\n                if (before < 0) {\n                    before += 7;\n                }\n            }\n            var previousMonth = month === 0 ? 11 : month - 1,\n                nextMonth = month === 11 ? 0 : month + 1,\n                yearOfPreviousMonth = month === 0 ? year - 1 : year,\n                yearOfNextMonth = month === 11 ? year + 1 : year,\n                daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);\n            var cells = days + before,\n                after = cells;\n            while(after > 7) {\n                after -= 7;\n            }\n            cells += 7 - after;\n            var isWeekSelected = false;\n            for (var i = 0, r = 0; i < cells; i++)\n            {\n                var day = new Date(year, month, 1 + (i - before)),\n                    isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\n                    isToday = compareDates(day, now),\n                    hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n                    isEmpty = i < before || i >= (days + before),\n                    dayNumber = 1 + (i - before),\n                    monthNumber = month,\n                    yearNumber = year,\n                    isStartRange = opts.startRange && compareDates(opts.startRange, day),\n                    isEndRange = opts.endRange && compareDates(opts.endRange, day),\n                    isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n                    isDisabled = (opts.minDate && day < opts.minDate) ||\n                                 (opts.maxDate && day > opts.maxDate) ||\n                                 (opts.disableWeekends && isWeekend(day)) ||\n                                 (opts.disableDayFn && opts.disableDayFn(day));\n\n                if (isEmpty) {\n                    if (i < before) {\n                        dayNumber = daysInPreviousMonth + dayNumber;\n                        monthNumber = previousMonth;\n                        yearNumber = yearOfPreviousMonth;\n                    } else {\n                        dayNumber = dayNumber - days;\n                        monthNumber = nextMonth;\n                        yearNumber = yearOfNextMonth;\n                    }\n                }\n\n                var dayConfig = {\n                        day: dayNumber,\n                        month: monthNumber,\n                        year: yearNumber,\n                        hasEvent: hasEvent,\n                        isSelected: isSelected,\n                        isToday: isToday,\n                        isDisabled: isDisabled,\n                        isEmpty: isEmpty,\n                        isStartRange: isStartRange,\n                        isEndRange: isEndRange,\n                        isInRange: isInRange,\n                        showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,\n                        enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths\n                    };\n\n                if (opts.pickWholeWeek && isSelected) {\n                    isWeekSelected = true;\n                }\n\n                row.push(renderDay(dayConfig));\n\n                if (++r === 7) {\n                    if (opts.showWeekNumber) {\n                        row.unshift(renderWeek(i - before, month, year));\n                    }\n                    data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));\n                    row = [];\n                    r = 0;\n                    isWeekSelected = false;\n                }\n            }\n            return renderTable(opts, data, randId);\n        },\n\n        isVisible: function()\n        {\n            return this._v;\n        },\n\n        show: function()\n        {\n            if (!this.isVisible()) {\n                this._v = true;\n                this.draw();\n                removeClass(this.el, 'is-hidden');\n                if (this._o.bound) {\n                    addEvent(document, 'click', this._onClick);\n                    this.adjustPosition();\n                }\n                if (typeof this._o.onOpen === 'function') {\n                    this._o.onOpen.call(this);\n                }\n            }\n        },\n\n        hide: function()\n        {\n            var v = this._v;\n            if (v !== false) {\n                if (this._o.bound) {\n                    removeEvent(document, 'click', this._onClick);\n                }\n                this.el.style.position = 'static'; // reset\n                this.el.style.left = 'auto';\n                this.el.style.top = 'auto';\n                addClass(this.el, 'is-hidden');\n                this._v = false;\n                if (v !== undefined && typeof this._o.onClose === 'function') {\n                    this._o.onClose.call(this);\n                }\n            }\n        },\n\n        /**\n         * GAME OVER\n         */\n        destroy: function()\n        {\n            var opts = this._o;\n\n            this.hide();\n            removeEvent(this.el, 'mousedown', this._onMouseDown, true);\n            removeEvent(this.el, 'touchend', this._onMouseDown, true);\n            removeEvent(this.el, 'change', this._onChange);\n            if (opts.keyboardInput) {\n                removeEvent(document, 'keydown', this._onKeyChange);\n            }\n            if (opts.field) {\n                removeEvent(opts.field, 'change', this._onInputChange);\n                if (opts.bound) {\n                    removeEvent(opts.trigger, 'click', this._onInputClick);\n                    removeEvent(opts.trigger, 'focus', this._onInputFocus);\n                    removeEvent(opts.trigger, 'blur', this._onInputBlur);\n                }\n            }\n            if (this.el.parentNode) {\n                this.el.parentNode.removeChild(this.el);\n            }\n        }\n\n    };\n\n    return Pikaday;\n}));\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n  return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","/**\n * Adds two numbers together\n * @param {Number} a\n * @param {Number} b\n */\nconst addition = (a, b) => a + b;\n\n/**\n * Returns the sum of all arguments\n * @param  {...Number} numbers\n */\nconst sum = function () {\n  for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n    numbers[_key] = arguments[_key];\n  }\n  return numbers.reduce(addition);\n}; // eslint-disable-line unicorn/no-array-callback-reference\n\n/**\n * Returns the average of all arguments\n * @param  {...Number} numbers\n */\nconst average = function () {\n  return sum(...arguments) / arguments.length;\n};\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 */\nfunction 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 */\nconst engineeringNotation = function (value) {\n  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  const invalidValues = [NaN, Infinity, -Infinity];\n  const num = Number(value);\n  if (invalidValues.includes(num) || invalidValues.includes(Number(precision))) {\n    return num.toString();\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  const exponentialNotation = num.toExponential(precision);\n  const power = exponentialNotation.split('e').map(Number)[1] || 0;\n  if (power < -24 || power > 24) {\n    return exponentialNotation;\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  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 */\nconst formatNumberToLocale = function (value) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let locales = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n  if (Number.isNaN(Number(value))) {\n    return value;\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\nconst toFloat = function (value) {\n  let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n  const float = parseFloat(value);\n  return Number.isNaN(float) ? defaultValue : float;\n};\n\nexport { addition, average, engineeringNotation, formatNumberToLocale, modulo, sum, toFloat };\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.isLink ? 'gl-link' : 'span',{tag:\"component\",attrs:{\"href\":_vm.href}},[_c(_vm.wrapperComponent,{ref:\"wrapperRef\",tag:\"component\",class:_vm.wrapperComponentClass,attrs:{\"data-testid\":_vm.anchorId}},[_vm._t(\"icon\",function(){return [(_vm.iconName)?_c('gl-icon',{class:_vm.iconClass,attrs:{\"name\":_vm.iconName,\"data-testid\":`${_vm.anchorId}-icon`}}):_vm._e()]}),_vm._v(\" \"),_vm._t(\"title\",function(){return [(_vm.title)?_c('span',{class:_vm.titleComponentClass,attrs:{\"data-testid\":`${_vm.anchorId}-title`}},[_vm._v(\"\\n        \"+_vm._s(_vm.title)+\"\\n      \")]):_vm._e()]})],2),_vm._v(\" \"),_c('gl-tooltip',{attrs:{\"target\":() => _vm.$refs.wrapperRef,\"placement\":_vm.tooltipPlacement}},[_vm._t(\"tooltip-text\",function(){return [(_vm.tooltipText)?[_vm._v(\"\\n        \"+_vm._s(_vm.tooltipText)+\"\\n      \")]:_vm._e()]})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./work_item_attribute.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./work_item_attribute.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltip, GlIcon, GlLink } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlTooltip,\n    GlIcon,\n    GlLink,\n  },\n  props: {\n    anchorId: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    wrapperComponent: {\n      type: String,\n      required: false,\n      default: 'span',\n    },\n    wrapperComponentClass: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    title: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    titleComponentClass: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    iconName: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    iconClass: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    tooltipText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    tooltipPlacement: {\n      type: String,\n      required: false,\n      default: 'bottom',\n    },\n    isLink: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    href: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n};\n</script>\n\n<template>\n  <component :is=\"isLink ? 'gl-link' : 'span'\" :href=\"href\">\n    <!-- wrapper  -->\n    <component\n      :is=\"wrapperComponent\"\n      ref=\"wrapperRef\"\n      :class=\"wrapperComponentClass\"\n      :data-testid=\"anchorId\"\n    >\n      <!-- icon  -->\n      <slot name=\"icon\">\n        <gl-icon\n          v-if=\"iconName\"\n          :class=\"iconClass\"\n          :name=\"iconName\"\n          :data-testid=\"`${anchorId}-icon`\"\n        />\n      </slot>\n      <!-- title  -->\n      <slot name=\"title\">\n        <span v-if=\"title\" :class=\"titleComponentClass\" :data-testid=\"`${anchorId}-title`\">\n          {{ title }}\n        </span>\n      </slot>\n    </component>\n    <!-- tooltip  -->\n    <gl-tooltip :target=\"() => $refs.wrapperRef\" :placement=\"tooltipPlacement\">\n      <slot name=\"tooltip-text\">\n        <template v-if=\"tooltipText\">\n          {{ tooltipText }}\n        </template>\n      </slot>\n    </gl-tooltip>\n  </component>\n</template>\n","import { render, staticRenderFns } from \"./work_item_attribute.vue?vue&type=template&id=01c1b9ee\"\nimport script from \"./work_item_attribute.vue?vue&type=script&lang=js\"\nexport * from \"./work_item_attribute.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 createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n  return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlButtonGroup',\n  props: {\n    /**\n     * When set, rendered the button group in vertical mode.\n     */\n    vertical: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g({class:!_vm.vertical ? 'btn-group' : 'btn-group-vertical',attrs:{\"role\":\"group\"}},_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import GlToken from '../token/token';\nimport { stopEvent } from '../../../utils/utils';\nimport GlFilteredSearchTokenSegment from './filtered_search_token_segment';\nimport { termTokenDefinition, match, tokenToOption, INTENT_ACTIVATE_PREVIOUS, TOKEN_CLOSE_SELECTOR, TERM_TOKEN_TYPE } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlFilteredSearchTerm',\n  components: {\n    GlFilteredSearchTokenSegment,\n    GlToken\n  },\n  inject: ['termsAsTokens'],\n  inheritAttrs: false,\n  props: {\n    /**\n     * Tokens available for this filtered search instance.\n     */\n    availableTokens: {\n      type: Array,\n      required: true\n    },\n    /**\n     * Determines if the term is being edited or not.\n     */\n    active: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Current term value.\n     */\n    value: {\n      type: Object,\n      required: false,\n      default: () => ({\n        data: ''\n      })\n    },\n    placeholder: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * HTML attributes to add to the search input.\n     */\n    searchInputAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * If this is the last token.\n     */\n    isLastToken: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The current `value` (tokens) of the ancestor GlFilteredSearch component.\n     */\n    currentValue: {\n      type: Array,\n      required: false,\n      default: () => []\n    },\n    cursorPosition: {\n      type: String,\n      required: false,\n      default: 'end',\n      validator: value => ['start', 'end'].includes(value)\n    },\n    /**\n     * The title of the text search option. Ignored unless termsAsTokens is enabled.\n     */\n    searchTextOptionLabel: {\n      type: String,\n      required: false,\n      default: termTokenDefinition.title\n    },\n    viewOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  computed: {\n    showInput() {\n      return this.termsAsTokens() || Boolean(this.placeholder);\n    },\n    showToken() {\n      return this.termsAsTokens() && Boolean(this.value.data);\n    },\n    suggestedTokens() {\n      const tokens = this.availableTokens.filter(token => match(token.title, this.value.data));\n      if (this.termsAsTokens() && this.value.data) {\n        tokens.push({\n          ...termTokenDefinition,\n          title: this.searchTextOptionLabel\n        });\n      }\n\n      // eslint-disable-next-line unicorn/no-array-callback-reference\n      return tokens.map(tokenToOption);\n    },\n    internalValue: {\n      get() {\n        return this.value.data;\n      },\n      set(data) {\n        /**\n         * Emitted when the token changes its value.\n         *\n         * @event input\n         * @type {object} dataObj Object containing the update value.\n         */\n        this.$emit('input', {\n          data\n        });\n      }\n    },\n    eventListeners() {\n      return this.viewOnly ? {} : {\n        mousedown: this.stopMousedownOnCloseButton,\n        close: this.destroyByClose\n      };\n    }\n  },\n  methods: {\n    onBackspace() {\n      /**\n       * Emitted when token value is empty and backspace is pressed.\n       * Includes user intent to activate previous token.\n       *\n       * @event destroy\n       * @type {object} details The user intent\n       */\n      this.$emit('destroy', {\n        intent: INTENT_ACTIVATE_PREVIOUS\n      });\n    },\n    stopMousedownOnCloseButton(event) {\n      if (event.target.closest(TOKEN_CLOSE_SELECTOR)) {\n        stopEvent(event);\n      }\n    },\n    destroyByClose() {\n      this.$emit('destroy');\n    },\n    onComplete(type) {\n      if (type === TERM_TOKEN_TYPE) {\n        // We've completed this term token\n        this.$emit('complete');\n      } else {\n        // We're changing the current token type\n        this.$emit('replace', {\n          type\n        });\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('div',{staticClass:\"gl-filtered-search-term gl-h-auto\",attrs:{\"data-testid\":\"filtered-search-term\"}},[_c('gl-filtered-search-token-segment',{ref:\"segment\",staticClass:\"gl-filtered-search-term-token\",attrs:{\"is-term\":\"\",\"active\":_vm.active,\"cursor-position\":_vm.cursorPosition,\"search-input-attributes\":_vm.searchInputAttributes,\"is-last-token\":_vm.isLastToken,\"current-value\":_vm.currentValue,\"view-only\":_vm.viewOnly,\"options\":_vm.suggestedTokens},on:{\"activate\":function($event){return _vm.$emit('activate')},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"complete\":_vm.onComplete,\"backspace\":_vm.onBackspace,\"submit\":function($event){return _vm.$emit('submit')},\"split\":function($event){return _vm.$emit('split', $event)},\"previous\":function($event){return _vm.$emit('previous')},\"next\":function($event){return _vm.$emit('next')}},scopedSlots:_vm._u([{key:\"view\",fn:function(ref){\nvar label = ref.label;\nreturn [(_vm.showToken)?_c('gl-token',_vm._g({class:{ 'gl-cursor-pointer': !_vm.viewOnly },attrs:{\"view-only\":_vm.viewOnly}},_vm.eventListeners),[_vm._v(_vm._s(_vm.value.data))]):(_vm.showInput)?_c('input',_vm._b({staticClass:\"gl-filtered-search-term-input\",class:{ 'gl-bg-gray-10': _vm.viewOnly },attrs:{\"placeholder\":_vm.placeholder,\"aria-label\":label,\"readonly\":_vm.viewOnly,\"data-testid\":\"filtered-search-term-input\"},on:{\"focusin\":function($event){return _vm.$emit('activate')},\"focusout\":function($event){return _vm.$emit('deactivate')}}},'input',_vm.searchInputAttributes,false)):[_vm._v(_vm._s(_vm.value.data))]]}}]),model:{value:(_vm.internalValue),callback:function ($$v) {_vm.internalValue=$$v;},expression:\"internalValue\"}})],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 isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { PortalTarget } from 'portal-vue';\nimport { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlIcon from '../icon/icon';\nimport GlSearchBoxByClick from '../search_box_by_click/search_box_by_click';\nimport GlFilteredSearchTerm from './filtered_search_term';\nimport { termTokenDefinition, createTerm, isEmptyTerm, needDenormalization, denormalizeTokens, INTENT_ACTIVATE_PREVIOUS, ensureTokenId, normalizeTokens } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nlet portalUuid = 0;\nfunction initialState() {\n  return [createTerm()];\n}\nvar script = {\n  name: 'GlFilteredSearch',\n  components: {\n    GlSearchBoxByClick,\n    GlIcon,\n    PortalTarget\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective\n  },\n  provide() {\n    portalUuid += 1;\n    this.portalName = `filters_portal_${portalUuid}`;\n    return {\n      portalName: this.portalName,\n      alignSuggestions: ref => this.alignSuggestions(ref),\n      // Return a function reference instead of a prop to work around vue-apollo@3 bug.\n      // TODO: This can be reverted once https://github.com/vuejs/vue-apollo/pull/1153\n      // has been merged and we consume it, or we upgrade to vue-apollo@4.\n      suggestionsListClass: () => this.suggestionsListClass,\n      termsAsTokens: () => this.termsAsTokens\n    };\n  },\n  inheritAttrs: false,\n  props: {\n    /**\n     * If provided, used as value of filtered search\n     */\n    value: {\n      required: false,\n      type: Array,\n      default: () => []\n    },\n    /**\n     * Available tokens\n     */\n    availableTokens: {\n      type: Array,\n      required: false,\n      default: () => [],\n      validator(value) {\n        // eslint-disable-next-line no-underscore-dangle\n        if (!value.__v_raw) {\n          // This is Vue 2\n          return true;\n        }\n\n        // eslint-disable-next-line no-underscore-dangle\n        const isOk = Array.isArray(value) && value.every(_ref => {\n          let {\n            token\n          } = _ref;\n          return token.__v_skip;\n        });\n        if (!isOk) {\n          // eslint-disable-next-line no-console\n          console.warn('You are using Vue3. In Vue3 each token component passed to filtered search must be wrapped into markRaw');\n        }\n        return isOk;\n      }\n    },\n    /**\n     * If provided, used as history items for this component\n     */\n    placeholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    },\n    clearButtonTitle: {\n      type: String,\n      required: false,\n      default: 'Clear'\n    },\n    historyItems: {\n      type: Array,\n      required: false,\n      default: null\n    },\n    /**\n     * Additional classes to add to the suggestion list menu. NOTE: this not reactive, and the value\n     * must be available and fixed when the component is instantiated\n     */\n    suggestionsListClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    /**\n     * Display operators' descriptions instead of their values (e.g., \"is\" instead of \"=\").\n     */\n    showFriendlyText: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * HTML attributes to add to the search button\n     */\n    searchButtonAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * HTML attributes to add to the search input\n     */\n    searchInputAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    viewOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Render search terms as GlTokens. Ideally, this prop will be as\n     * short-lived as possible, and this behavior will become the default and\n     * only behavior.\n     *\n     * This prop is *not* reactive.\n     *\n     * See https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2159.\n     */\n    termsAsTokens: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The title of the text search option. Ignored unless termsAsTokens is enabled.\n     */\n    searchTextOptionLabel: {\n      type: String,\n      required: false,\n      default: termTokenDefinition.title\n    },\n    /**\n     * Display search button to perform a search.\n     *\n     * Note: it is required to ensure accessibility for WCAG 2.1 3.2.2: On Input.\n     * If the search button is hidden, a separate button should be provided for the same context.\n     */\n    showSearchButton: {\n      type: Boolean,\n      required: false,\n      default: true\n    }\n  },\n  data() {\n    return {\n      tokens: initialState(),\n      activeTokenIdx: null,\n      suggestionsStyle: {},\n      intendedCursorPosition: 'end'\n    };\n  },\n  computed: {\n    activeToken() {\n      return this.tokens[this.activeTokenIdx];\n    },\n    appliedTokens() {\n      return this.tokens.filter(token => !isEmptyTerm(token));\n    },\n    lastTokenIdx() {\n      return this.tokens.length - 1;\n    },\n    isLastTokenActive() {\n      return this.activeTokenIdx === this.lastTokenIdx;\n    },\n    hasValue() {\n      return this.tokens.length > 1 || this.tokens[0].value.data !== '';\n    },\n    termPlaceholder() {\n      return this.hasValue ? null : this.placeholder;\n    },\n    currentAvailableTokens() {\n      return this.availableTokens.filter(token => {\n        if (token.disabled) {\n          return false;\n        }\n        if (token.unique) {\n          return !this.tokens.find(t => t.type === token.type);\n        }\n        return true;\n      });\n    }\n  },\n  watch: {\n    tokens: {\n      handler() {\n        if (process.env.NODE_ENV !== 'production') {\n          const invalidToken = this.tokens.find(token => !token.id);\n          if (invalidToken) {\n            throw new Error(`Token does not have an id:\\n${JSON.stringify(invalidToken)}`);\n          }\n        }\n        if ((this.tokens.length === 0 || !this.isLastTokenEmpty()) && !this.viewOnly) {\n          this.tokens.push(createTerm());\n        }\n\n        /**\n         * Emitted when the tokens (value) changes\n         * @property {array} tokens\n         */\n        this.$emit('input', this.tokens);\n      },\n      deep: true,\n      immediate: true\n    },\n    value: {\n      handler(newValue, oldValue) {\n        if (!isEqual(newValue, oldValue)) {\n          const value = newValue.length ? newValue : initialState();\n          this.applyNewValue(cloneDeep(value));\n        }\n      },\n      deep: true,\n      immediate: true\n    }\n  },\n  methods: {\n    applyNewValue(newValue) {\n      this.tokens = needDenormalization(newValue) ? denormalizeTokens(newValue, this.termsAsTokens) : newValue;\n    },\n    isActiveToken(idx) {\n      return this.activeTokenIdx === idx;\n    },\n    isLastToken(idx) {\n      return this.activeTokenIdx === null && idx === this.lastTokenIdx;\n    },\n    isLastTokenEmpty() {\n      return isEmptyTerm(this.tokens[this.lastTokenIdx]);\n    },\n    getTokenEntry(type) {\n      return this.availableTokens.find(t => t.type === type);\n    },\n    getTokenComponent(type) {\n      var _this$getTokenEntry;\n      return ((_this$getTokenEntry = this.getTokenEntry(type)) === null || _this$getTokenEntry === void 0 ? void 0 : _this$getTokenEntry.token) || GlFilteredSearchTerm;\n    },\n    getTokenClassList(idx) {\n      return {\n        'gl-filtered-search-item': true,\n        'gl-filtered-search-last-item': this.isLastToken(idx) && !this.viewOnly\n      };\n    },\n    activate(idx) {\n      if (!this.viewOnly) {\n        this.activeTokenIdx = idx;\n      }\n    },\n    activatePreviousToken() {\n      if (this.activeTokenIdx > 0) {\n        this.activeTokenIdx -= 1;\n        this.intendedCursorPosition = 'end';\n      }\n    },\n    activateNextToken() {\n      if (this.activeTokenIdx < this.value.length) {\n        this.activeTokenIdx += 1;\n        this.intendedCursorPosition = 'start';\n      }\n    },\n    alignSuggestions(ref) {\n      const offsetRef = ref.getBoundingClientRect().left;\n      const offsetMenu = this.$el.getBoundingClientRect().left;\n      const transform = `translateX(${Math.floor(offsetRef - offsetMenu)}px)`;\n      this.suggestionsStyle = {\n        transform\n      };\n    },\n    deactivate(token) {\n      this.intendedCursorPosition = 'end';\n      const tokenIdx = this.tokens.indexOf(token);\n      if (tokenIdx === -1 || this.activeTokenIdx !== tokenIdx) {\n        return;\n      }\n      if (!this.isLastTokenEmpty()) {\n        this.tokens.push(createTerm());\n      }\n      if (!this.isLastTokenActive && isEmptyTerm(this.activeToken)) {\n        this.tokens.splice(tokenIdx, 1);\n      }\n      this.activeTokenIdx = null;\n    },\n    destroyToken(idx) {\n      let {\n        intent\n      } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (this.tokens.length === 1) {\n        return;\n      }\n      this.tokens.splice(idx, 1);\n\n      // First, attempt to honor the user's activation intent behind the\n      // destruction of the token, if any. Otherwise, try to maintain the\n      // active state for the token that was active at the time. If that's not\n      // possible, make sure no token is active.\n      if (intent === INTENT_ACTIVATE_PREVIOUS) {\n        // If there is a previous token, activate it; else, activate the first token\n        this.activeTokenIdx = Math.max(idx - 1, 0);\n      } else if (idx < this.activeTokenIdx) {\n        // Preserve the active token's active status (it shifted down one index)\n        this.activeTokenIdx -= 1;\n      } else if (idx === this.activeTokenIdx) {\n        // User destroyed the active token; don't activate another one.\n        this.activeTokenIdx = null;\n      }\n      // Do nothing if there was no active token, or if idx > this.activeTokenIdx,\n      // to preserve the active state of the remaining tokens.\n    },\n    replaceToken(idx, token) {\n      this.$set(this.tokens, idx, ensureTokenId({\n        ...token,\n        value: {\n          data: '',\n          ...token.value\n        }\n      }));\n      this.activeTokenIdx = idx;\n    },\n    // This method can be deleted once termsAsTokens behavior is the default.\n    createTokens(idx) {\n      let newStrings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n      if (!this.isLastTokenActive && newStrings.length === 1 && newStrings[0] === '') {\n        this.activeTokenIdx = this.lastTokenIdx;\n        return;\n      }\n      const newTokens = newStrings.map(data => createTerm(data));\n      this.tokens.splice(idx + 1, 0, ...newTokens);\n      this.activeTokenIdx = idx + newStrings.length;\n    },\n    completeToken() {\n      if (this.activeTokenIdx === this.lastTokenIdx - 1) {\n        this.activeTokenIdx = this.lastTokenIdx;\n      } else {\n        this.activeTokenIdx = null;\n      }\n    },\n    submit() {\n      /**\n       * Emitted when search is submitted\n       * @property {array} tokens\n       */\n      this.$emit('submit', normalizeTokens(cloneDeep(this.tokens)));\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-search-box-by-click',_vm._b({attrs:{\"value\":_vm.tokens,\"history-items\":_vm.historyItems,\"clearable\":_vm.hasValue,\"search-button-attributes\":_vm.searchButtonAttributes,\"show-search-button\":_vm.showSearchButton,\"disabled\":_vm.viewOnly,\"data-testid\":\"filtered-search-input\"},on:{\"submit\":_vm.submit,\"input\":_vm.applyNewValue,\"history-item-selected\":function($event){return _vm.$emit('history-item-selected', $event)},\"clear\":function($event){return _vm.$emit('clear')},\"clear-history\":function($event){return _vm.$emit('clear-history')}},scopedSlots:_vm._u([{key:\"history-item\",fn:function(slotScope){return [_vm._t(\"history-item\",null,null,slotScope)]}},{key:\"input\",fn:function(){return [_c('div',{staticClass:\"gl-filtered-search-scrollable-container\",class:{\n        'gl-filtered-search-scrollable-container-with-search-button': _vm.showSearchButton,\n        '!gl-bg-gray-10 !gl-shadow-inner-1-gray-100': _vm.viewOnly,\n      }},[_c('div',{staticClass:\"gl-filtered-search-scrollable\"},_vm._l((_vm.tokens),function(token,idx){return _c(_vm.getTokenComponent(token.type),{key:token.id,ref:\"tokens\",refInFor:true,tag:\"component\",class:_vm.getTokenClassList(idx),attrs:{\"config\":_vm.getTokenEntry(token.type),\"active\":_vm.activeTokenIdx === idx,\"cursor-position\":_vm.intendedCursorPosition,\"available-tokens\":_vm.currentAvailableTokens,\"current-value\":_vm.tokens,\"index\":idx,\"placeholder\":_vm.termPlaceholder,\"show-friendly-text\":_vm.showFriendlyText,\"search-input-attributes\":_vm.searchInputAttributes,\"view-only\":_vm.viewOnly,\"is-last-token\":_vm.isLastToken(idx),\"search-text-option-label\":_vm.searchTextOptionLabel,\"applied-tokens\":_vm.appliedTokens},on:{\"activate\":function($event){return _vm.activate(idx)},\"deactivate\":function($event){return _vm.deactivate(token)},\"destroy\":function($event){return _vm.destroyToken(idx, $event)},\"replace\":function($event){return _vm.replaceToken(idx, $event)},\"complete\":_vm.completeToken,\"submit\":_vm.submit,\"split\":function($event){return _vm.createTokens(idx, $event)},\"previous\":_vm.activatePreviousToken,\"next\":_vm.activateNextToken},model:{value:(token.value),callback:function ($$v) {_vm.$set(token, \"value\", $$v);},expression:\"token.value\"}})}),1)]),_vm._v(\" \"),_c('portal-target',{key:_vm.activeTokenIdx,ref:\"menu\",style:(_vm.suggestionsStyle),attrs:{\"name\":_vm.portalName,\"slim\":\"\"}})]},proxy:true}],null,true)},'gl-search-box-by-click',_vm.$attrs,false))};\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 { getSel, isElement } from '../../../utils/dom';\n\n// Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\nconst textSelectionActive = function () {\n  let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n  const sel = getSel();\n  return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ? /* istanbul ignore next */sel.containsNode(el, true) : false;\n};\n\nexport { textSelectionActive };\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\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","import { stepIndexAndWrap } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst DEFER_TO_INITIAL_VALUE = -1;\nconst NO_ACTIVE_ITEM = -2;\nvar script = {\n  name: 'GlFilteredSearchSuggestionList',\n  inject: ['suggestionsListClass', 'termsAsTokens'],\n  provide() {\n    return {\n      filteredSearchSuggestionListInstance: this\n    };\n  },\n  props: {\n    /**\n     * Value to be initially selected in list.\n     */\n    initialValue: {\n      required: false,\n      validator: () => true,\n      default: null\n    }\n  },\n  data() {\n    return {\n      activeIdx: DEFER_TO_INITIAL_VALUE,\n      registeredItems: []\n    };\n  },\n  computed: {\n    initialActiveIdx() {\n      return this.registeredItems.findIndex(item => this.valuesMatch(item.value, this.initialValue));\n    },\n    initialActiveItem() {\n      return this.registeredItems[this.initialActiveIdx];\n    },\n    activeItem() {\n      if (!this.termsAsTokens() && this.activeIdx === NO_ACTIVE_ITEM) return null;\n      if (this.activeIdx === DEFER_TO_INITIAL_VALUE) return this.initialActiveItem;\n      return this.registeredItems[this.activeIdx];\n    },\n    listClasses() {\n      return [this.suggestionsListClass(), 'dropdown-menu gl-filtered-search-suggestion-list'];\n    }\n  },\n  watch: {\n    initialValue() {\n      this.activeIdx = DEFER_TO_INITIAL_VALUE;\n    }\n  },\n  methods: {\n    valuesMatch(firstValue, secondValue) {\n      if (firstValue == null || secondValue == null) return false;\n      return typeof firstValue === 'string' && typeof secondValue === 'string' ? firstValue.toLowerCase() === secondValue.toLowerCase() : firstValue === secondValue;\n    },\n    register(item) {\n      this.registeredItems.push(item);\n    },\n    unregister(item) {\n      const idx = this.registeredItems.indexOf(item);\n      if (idx !== -1) {\n        this.registeredItems.splice(idx, 1);\n        if (idx === this.activeIdx) {\n          this.activeIdx = DEFER_TO_INITIAL_VALUE;\n        }\n      }\n    },\n    nextItem() {\n      if (this.termsAsTokens()) {\n        this.stepItem(1);\n      } else {\n        this.stepItem(1, this.registeredItems.length - 1);\n      }\n    },\n    prevItem() {\n      if (this.termsAsTokens()) {\n        this.stepItem(-1);\n      } else {\n        this.stepItem(-1, 0);\n      }\n    },\n    stepItem(direction, endIdx) {\n      if (!this.termsAsTokens() && (this.activeIdx === endIdx || this.activeIdx === DEFER_TO_INITIAL_VALUE && this.initialActiveIdx === endIdx)) {\n        // The user wants to move past the end of the list, so ensure nothing is selected.\n        this.activeIdx = NO_ACTIVE_ITEM;\n      } else {\n        const index = this.activeIdx === DEFER_TO_INITIAL_VALUE ?\n        // Currently active item is set by initialValue (i.e., text input matching),\n        // so step relative to that.\n        this.initialActiveIdx :\n        // Otherwise, step relative to the explicitly (via up/down arrows) activated item.\n        this.activeIdx;\n        this.activeIdx = stepIndexAndWrap(index, direction, this.registeredItems.length);\n      }\n    },\n    getValue() {\n      return this.activeItem ? this.activeItem.value : null;\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('ul',{class:_vm.listClasses},[_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 last from 'lodash/last';\nimport { Portal } from 'portal-vue';\nimport { LEFT_MOUSE_BUTTON } from '../../../utils/constants';\nimport GlFilteredSearchSuggestion from './filtered_search_suggestion';\nimport GlFilteredSearchSuggestionList from './filtered_search_suggestion_list';\nimport { TERM_TOKEN_TYPE, splitOnQuotes, match, wrapTokenInQuotes } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n// We need some helpers to ensure @vue/compat compatibility\n// @vue/compat will render comment nodes for v-if and comments in HTML\n// Also it makes use of fragments - both comments and nodes are Symbols.\n// In Vue3 all of them (Comment, Fragment) are exposed as named exports on vue module\n// However we want to maintain compatibility with Vue2, so taking this hacky approach\n// relying on Symbol.toString()\n\n// I'm keeping this directly here instead of helper to increase probability of\n// fixing ASAP and because I don't want this helper to be reused\n// FIXME: replace with Symbols when we will switch to Vue3\n\nconst isVue3Comment = vnode => {\n  var _vnode$type, _vnode$type$toString;\n  return (vnode === null || vnode === void 0 ? void 0 : (_vnode$type = vnode.type) === null || _vnode$type === void 0 ? void 0 : (_vnode$type$toString = _vnode$type.toString) === null || _vnode$type$toString === void 0 ? void 0 : _vnode$type$toString.call(_vnode$type)) === 'Symbol(Comment)';\n};\nconst isVue3Fragment = vnode => {\n  var _vnode$type2, _vnode$type2$toString;\n  return (vnode === null || vnode === void 0 ? void 0 : (_vnode$type2 = vnode.type) === null || _vnode$type2 === void 0 ? void 0 : (_vnode$type2$toString = _vnode$type2.toString) === null || _vnode$type2$toString === void 0 ? void 0 : _vnode$type2$toString.call(_vnode$type2)) === 'Symbol(Fragment)';\n};\nconst isVNodeEmpty = vnode => {\n  if (isVue3Fragment(vnode)) {\n    // vnode.children might be an array or single node in edge cases\n    return Array.isArray(vnode.children) ?\n    // eslint-disable-next-line unicorn/no-array-callback-reference\n    vnode.children.every(isVNodeEmpty) : isVNodeEmpty(vnode.children);\n  }\n  if (isVue3Comment(vnode)) {\n    return true;\n  }\n  return false;\n};\nconst isSlotNotEmpty = slot => {\n  if (!slot) {\n    return false;\n  }\n  const vnodes = typeof slot === 'function' ? slot() : slot;\n  // eslint-disable-next-line unicorn/no-array-callback-reference\n  return !(Array.isArray(vnodes) ? vnodes.every(isVNodeEmpty) : isVNodeEmpty(vnodes));\n};\nvar script = {\n  name: 'GlFilteredSearchTokenSegment',\n  components: {\n    Portal,\n    GlFilteredSearchSuggestionList,\n    GlFilteredSearchSuggestion\n  },\n  inject: ['portalName', 'alignSuggestions', 'termsAsTokens'],\n  inheritAttrs: false,\n  props: {\n    /**\n     * If this token segment is currently being edited.\n     */\n    active: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    isTerm: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    label: {\n      type: String,\n      required: false,\n      default: 'Search'\n    },\n    multiSelect: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    options: {\n      type: Array,\n      required: false,\n      default: () => null\n    },\n    optionTextField: {\n      type: String,\n      required: false,\n      default: 'title'\n    },\n    customInputKeydownHandler: {\n      type: Function,\n      required: false,\n      default: () => () => false\n    },\n    /**\n     * Current term value\n     */\n    value: {\n      required: true,\n      validator: () => true\n    },\n    /**\n     * HTML attributes to add to the search input\n     */\n    searchInputAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * If this is the last token\n     */\n    isLastToken: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    currentValue: {\n      type: Array,\n      required: false,\n      default: () => []\n    },\n    cursorPosition: {\n      type: String,\n      required: false,\n      default: 'end',\n      validator: value => ['start', 'end'].includes(value)\n    },\n    viewOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      fallbackValue: this.value\n    };\n  },\n  computed: {\n    hasTermSuggestion() {\n      if (!this.termsAsTokens()) return false;\n      if (!this.options) return false;\n      return this.options.some(_ref => {\n        let {\n          value\n        } = _ref;\n        return value === TERM_TOKEN_TYPE;\n      });\n    },\n    matchingOption() {\n      var _this$options;\n      return (_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.find(o => o.value === this.value);\n    },\n    nonMultipleValue() {\n      return Array.isArray(this.value) ? last(this.value) : this.value;\n    },\n    inputValue: {\n      get() {\n        if (this.isTerm) {\n          return this.nonMultipleValue;\n        }\n        return this.matchingOption ? this.matchingOption[this.optionTextField] : this.nonMultipleValue;\n      },\n      set(inputValue) {\n        /**\n         * Emitted when this token segment's value changes.\n         *\n         * @type {object} option The current option.\n         */\n        this.$emit('input', inputValue);\n      }\n    },\n    hasOptionsOrSuggestions() {\n      var _this$options2;\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return ((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.length) || isSlotNotEmpty(this.$slots.suggestions);\n    },\n    defaultSuggestedValue() {\n      var _this$options$;\n      if (!this.options) {\n        return this.nonMultipleValue;\n      }\n      if (this.value) {\n        const option = this.getMatchingOptionForInputValue(this.inputValue) || this.getMatchingOptionForInputValue(this.inputValue, {\n          loose: true\n        });\n        if (option) return option.value;\n        if (this.hasTermSuggestion) return TERM_TOKEN_TYPE;\n        return null;\n      }\n      const defaultOption = this.options.find(op => op.default);\n      if (defaultOption) {\n        return defaultOption.value;\n      }\n      return this.isTerm ? undefined : (_this$options$ = this.options[0]) === null || _this$options$ === void 0 ? void 0 : _this$options$.value;\n    },\n    containerAttributes() {\n      return this.isLastToken && !this.active && this.currentValue.length > 1 && this.searchInputAttributes;\n    }\n  },\n  watch: {\n    active: {\n      immediate: true,\n      handler(newValue) {\n        if (newValue) {\n          this.activate();\n        } else {\n          this.deactivate();\n        }\n      }\n    },\n    inputValue(newValue) {\n      if (this.termsAsTokens()) return;\n      if (this.multiSelect) return;\n\n      /**\n       * This is a temporary workaround to implement the same behaviour\n       * implemented in https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2381\n       * for tokens with `terms-as-tokens=false` and `multi-select=false`.\n       *\n       * We're aiming to remove this temporary fix when\n       * https://gitlab.com/groups/gitlab-org/-/epics/15948 gets completed, as\n       * that refactoring will use the `@input` handler on the GlFilteredSearch\n       * component to handle tokens instead of doing workarounds.\n       */\n      if (typeof newValue !== 'string') return;\n      const hasUnclosedQuote = newValue.split('\"').length % 2 === 0;\n      if (newValue.indexOf(' ') === -1 || hasUnclosedQuote) {\n        return;\n      }\n      const [firstWord, ...otherWords] = splitOnQuotes(newValue).filter((w, idx, arr) => Boolean(w) || idx === arr.length - 1);\n      this.$emit('input', firstWord);\n      if (otherWords.length) {\n        /**\n         * Emitted when Space appears in token segment value\n         * @property {array|string} newStrings New strings to be converted into term tokens\n         */\n        this.$emit('split', otherWords);\n      }\n    }\n  },\n  methods: {\n    emitIfInactive(e) {\n      if (e.button === LEFT_MOUSE_BUTTON && !this.active) {\n        /**\n         * Emitted on mousedown event on the main component.\n         */\n        this.$emit('activate');\n        e.preventDefault();\n      }\n    },\n    getMatchingOptionForInputValue(inputValue) {\n      var _this$options3;\n      let {\n        loose\n      } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        loose: false\n      };\n      return (_this$options3 = this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.find(option => loose ? match(option[this.optionTextField], inputValue) : option[this.optionTextField] === inputValue);\n    },\n    activate() {\n      this.fallbackValue = this.value;\n      this.$nextTick(() => {\n        const {\n          input\n        } = this.$refs;\n        if (input) {\n          input.focus();\n          input.scrollIntoView({\n            block: 'nearest',\n            inline: 'end'\n          });\n          this.alignSuggestions(input);\n          if (this.cursorPosition === 'start') {\n            input === null || input === void 0 ? void 0 : input.setSelectionRange(0, 0);\n          }\n        }\n      });\n    },\n    deactivate() {\n      var _this$matchingOption;\n      if (!this.options || this.isTerm) {\n        return;\n      }\n      if (((_this$matchingOption = this.matchingOption) === null || _this$matchingOption === void 0 ? void 0 : _this$matchingOption.value) !== this.value) {\n        this.$emit('input', this.fallbackValue);\n      }\n    },\n    applySuggestion(suggestedValue) {\n      const formattedSuggestedValue = this.termsAsTokens() ? suggestedValue : wrapTokenInQuotes(suggestedValue);\n\n      /**\n       * Emitted when autocomplete entry is selected.\n       *\n       * @type {string} value The selected value.\n       */\n      this.$emit('select', formattedSuggestedValue);\n      if (!this.multiSelect) {\n        this.$emit('input', formattedSuggestedValue === TERM_TOKEN_TYPE ? this.inputValue : formattedSuggestedValue);\n        this.$emit('complete', formattedSuggestedValue);\n      }\n    },\n    handleInputKeydown(e) {\n      const {\n        key\n      } = e;\n      const {\n        suggestions,\n        input\n      } = this.$refs;\n      const suggestedValue = suggestions === null || suggestions === void 0 ? void 0 : suggestions.getValue();\n      const handlers = {\n        ArrowLeft: () => {\n          if (input.selectionStart === 0) {\n            e.preventDefault();\n            this.$emit('previous');\n          }\n        },\n        ArrowRight: () => {\n          if (input.selectionEnd === this.inputValue.length) {\n            e.preventDefault();\n            this.$emit('next');\n          }\n        },\n        Backspace: () => {\n          if (this.inputValue === '') {\n            e.preventDefault();\n            /**\n             * Emitted when Backspace is pressed and the value is empty\n             */\n            this.$emit('backspace');\n          }\n        },\n        Enter: () => {\n          e.preventDefault();\n          if (suggestedValue != null) {\n            this.applySuggestion(suggestedValue);\n          } else {\n            /**\n             * Emitted when Enter is pressed and no suggestion is selected\n             */\n            this.$emit('submit');\n          }\n        },\n        ':': () => {\n          if (suggestedValue != null) {\n            e.preventDefault();\n            this.applySuggestion(suggestedValue);\n          }\n        },\n        Escape: () => {\n          e.preventDefault();\n          /**\n           * Emitted when suggestion is selected from the suggestion list\n           */\n          this.$emit('complete');\n        }\n      };\n      const suggestionsHandlers = {\n        ArrowDown: () => suggestions.nextItem(),\n        Down: () => suggestions.nextItem(),\n        ArrowUp: () => suggestions.prevItem(),\n        Up: () => suggestions.prevItem()\n      };\n      if (this.hasOptionsOrSuggestions) {\n        Object.assign(handlers, suggestionsHandlers);\n      }\n      if (Object.keys(handlers).includes(key)) {\n        handlers[key]();\n        return;\n      }\n      this.customInputKeydownHandler(e, {\n        suggestedValue,\n        inputValue: this.inputValue,\n        applySuggestion: v => this.applySuggestion(v)\n      });\n    },\n    handleBlur() {\n      if (this.multiSelect) {\n        this.$emit('complete');\n      } else if (this.active) {\n        /**\n         * Emitted when this term token will lose its focus.\n         */\n        this.$emit('deactivate');\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('div',_vm._g(_vm._b({staticClass:\"gl-filtered-search-token-segment\",class:{\n    'gl-filtered-search-token-segment-active': _vm.active,\n    '!gl-cursor-text': _vm.viewOnly,\n  },attrs:{\"data-testid\":\"filtered-search-token-segment\"}},'div',_vm.containerAttributes,false),_vm.viewOnly ? {} : { mousedown: _vm.emitIfInactive }),[(_vm.active)?[_vm._t(\"before-input\",null,null,{ submitValue: _vm.applySuggestion }),_vm._v(\" \"),(((_vm.searchInputAttributes).type)==='checkbox')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"input\",staticClass:\"gl-filtered-search-token-segment-input\",attrs:{\"data-testid\":\"filtered-search-token-segment-input\",\"aria-label\":_vm.label,\"readonly\":_vm.viewOnly,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.inputValue)?_vm._i(_vm.inputValue,null)>-1:(_vm.inputValue)},on:{\"keydown\":_vm.handleInputKeydown,\"blur\":_vm.handleBlur,\"change\":function($event){var $$a=_vm.inputValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.inputValue=$$a.concat([$$v]));}else {$$i>-1&&(_vm.inputValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)));}}else {_vm.inputValue=$$c;}}}},'input',_vm.searchInputAttributes,false)):(((_vm.searchInputAttributes).type)==='radio')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"input\",staticClass:\"gl-filtered-search-token-segment-input\",attrs:{\"data-testid\":\"filtered-search-token-segment-input\",\"aria-label\":_vm.label,\"readonly\":_vm.viewOnly,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.inputValue,null)},on:{\"keydown\":_vm.handleInputKeydown,\"blur\":_vm.handleBlur,\"change\":function($event){_vm.inputValue=null;}}},'input',_vm.searchInputAttributes,false)):_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"input\",staticClass:\"gl-filtered-search-token-segment-input\",attrs:{\"data-testid\":\"filtered-search-token-segment-input\",\"aria-label\":_vm.label,\"readonly\":_vm.viewOnly,\"type\":(_vm.searchInputAttributes).type},domProps:{\"value\":(_vm.inputValue)},on:{\"keydown\":_vm.handleInputKeydown,\"blur\":_vm.handleBlur,\"input\":function($event){if($event.target.composing){ return; }_vm.inputValue=$event.target.value;}}},'input',_vm.searchInputAttributes,false)),_vm._v(\" \"),_c('portal',{key:(\"operator-\" + _vm._uid),attrs:{\"to\":_vm.portalName}},[(_vm.hasOptionsOrSuggestions)?_c('gl-filtered-search-suggestion-list',{key:(\"operator-\" + _vm._uid),ref:\"suggestions\",attrs:{\"initial-value\":_vm.defaultSuggestedValue},on:{\"suggestion\":_vm.applySuggestion}},[(_vm.options)?_vm._l((_vm.options),function(option,idx){return _c('gl-filtered-search-suggestion',{key:((option.value) + \"-\" + idx),attrs:{\"value\":option.value,\"icon-name\":option.icon}},[_vm._t(\"option\",function(){return [(option.component)?[_c(option.component,{tag:\"component\",attrs:{\"option\":option}})]:[_vm._v(\"\\n                \"+_vm._s(option[_vm.optionTextField])+\"\\n              \")]]},null,{ option: option })],2)}):_vm._t(\"suggestions\")],2):_vm._e()],1)]:_vm._t(\"view\",function(){return [_vm._v(_vm._s(_vm.inputValue))]},null,{ label: _vm.label, inputValue: _vm.inputValue })],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 { extend } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Supported values: 'lite', 'dark', or null\n  footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTfoot = /*#__PURE__*/extend({\n  name: NAME_TFOOT,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTfoot() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    tfootClasses() {\n      return [this.footVariant ? `thead-${this.footVariant}` : null];\n    },\n    tfootAttrs() {\n      return {\n        ...this.bvAttrs,\n        role: 'rowgroup'\n      };\n    }\n  },\n  render(h) {\n    return h('tfoot', {\n      class: this.tfootClasses,\n      attrs: this.tfootAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BTfoot, props };\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","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","import Vue from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\n\nconst itemValidator = item => {\n  var _item$text;\n  return (item === null || item === void 0 ? void 0 : (_item$text = item.text) === null || _item$text === void 0 ? void 0 : _item$text.length) > 0 && !Array.isArray(item === null || item === void 0 ? void 0 : item.items);\n};\nconst isItem = item => Boolean(item) && itemValidator(item);\nconst isGroup = group => Boolean(group) && Array.isArray(group.items) && Boolean(group.items.length) &&\n// eslint-disable-next-line unicorn/no-array-callback-reference\ngroup.items.every(isItem);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst itemsValidator = items => items.every(isItem) || items.every(isGroup);\nconst isListItem = tag => ['gl-disclosure-dropdown-group', 'gl-disclosure-dropdown-item', 'li'].includes(tag);\nconst isValidSlotTagVue2 = vNode => {\n  var _vNode$componentOptio;\n  return Boolean(vNode) && isListItem(((_vNode$componentOptio = vNode.componentOptions) === null || _vNode$componentOptio === void 0 ? void 0 : _vNode$componentOptio.tag) || vNode.tag);\n};\nconst isValidSlotTagVue3 = vNode => {\n  var _vNode$type;\n  return [DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME].includes((_vNode$type = vNode.type) === null || _vNode$type === void 0 ? void 0 : _vNode$type.name) || vNode.type === 'li';\n};\nconst hasOnlyListItemsVue2 = defaultSlot => {\n  const nodes = defaultSlot();\n  if (!Array.isArray(nodes)) {\n    return false;\n  }\n  const tags = nodes.filter(vNode => vNode.tag);\n  return tags.length && tags.every(tag => isValidSlotTagVue2(tag));\n};\nconst hasOnlyListItemsVue3 = defaultSlot => {\n  const nodes = defaultSlot();\n  const fragment = nodes.find(node => Array.isArray(node.children) && node.children.length);\n  const targetNodes = fragment ? fragment.children : nodes;\n  return targetNodes\n  // Remove empty text vNodes\n  .filter(vNode => !isString(vNode.text) || vNode.text.trim().length > 0).every(vNode => isValidSlotTagVue3(vNode));\n};\nconst hasOnlyListItems = defaultSlot => {\n  if (!isFunction(defaultSlot)) {\n    return false;\n  }\n  if (Vue.version.startsWith('3')) {\n    return hasOnlyListItemsVue3(defaultSlot);\n  }\n  return hasOnlyListItemsVue2(defaultSlot);\n};\n\nexport { hasOnlyListItems, isGroup, isItem, itemsValidator };\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props';\nimport { makeProp } from '../../../utils/props';\n\n// --- Props ---\n\nconst props = {\n  stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst stackedMixin = extend({\n  props,\n  computed: {\n    isStacked() {\n      const {\n        stacked\n      } = this;\n      // `true` when always stacked, or returns breakpoint specified\n      return stacked === '' ? true : stacked;\n    },\n    isStackedAlways() {\n      return this.isStacked === true;\n    },\n    stackedTableClasses() {\n      const {\n        isStackedAlways\n      } = this;\n      return {\n        'b-table-stacked': isStackedAlways,\n        [`b-table-stacked-${this.stacked}`]: !isStackedAlways && this.isStacked\n      };\n    }\n  }\n});\n\nexport { props, stackedMixin };\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","var arrayMap = require('./_arrayMap'),\n    baseGet = require('./_baseGet'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    baseSortBy = require('./_baseSortBy'),\n    baseUnary = require('./_baseUnary'),\n    compareMultiple = require('./_compareMultiple'),\n    identity = require('./identity'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        }\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nmodule.exports = baseOrderBy;\n","module.exports = require('./lib/visibility.timers.js')\n","import { identity } from '../../../utils/identity';\nimport { isArray, isString, isObject, isFunction } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants';\n\n// Private function to massage field entry into common object format\nconst processField = (key, value) => {\n  let field = null;\n  if (isString(value)) {\n    // Label shortcut\n    field = {\n      key,\n      label: value\n    };\n  } else if (isFunction(value)) {\n    // Formatter shortcut\n    field = {\n      key,\n      formatter: value\n    };\n  } else if (isObject(value)) {\n    field = clone(value);\n    field.key = field.key || key;\n  } else if (value !== false) {\n    // Fallback to just key\n    /* istanbul ignore next */\n    field = {\n      key\n    };\n  }\n  return field;\n};\n\n// We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\nconst normalizeFields = (origFields, items) => {\n  const fields = [];\n  if (isArray(origFields)) {\n    // Normalize array Form\n    origFields.filter(identity).forEach(f => {\n      if (isString(f)) {\n        fields.push({\n          key: f,\n          label: startCase(f)\n        });\n      } else if (isObject(f) && f.key && isString(f.key)) {\n        // Full object definition. We use assign so that we don't mutate the original\n        fields.push(clone(f));\n      } else if (isObject(f) && keys(f).length === 1) {\n        // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n        const key = keys(f)[0];\n        const field = processField(key, f[key]);\n        if (field) {\n          fields.push(field);\n        }\n      }\n    });\n  }\n\n  // If no field provided, take a sample from first record (if exits)\n  if (fields.length === 0 && isArray(items) && items.length > 0) {\n    const sample = items[0];\n    keys(sample).forEach(k => {\n      if (!IGNORED_FIELD_KEYS[k]) {\n        fields.push({\n          key: k,\n          label: startCase(k)\n        });\n      }\n    });\n  }\n\n  // Ensure we have a unique array of fields and that they have String labels\n  const memo = {};\n  return fields.filter(f => {\n    if (!memo[f.key]) {\n      memo[f.key] = true;\n      f.label = isString(f.label) ? f.label : startCase(f.key);\n      return true;\n    }\n    return false;\n  });\n};\n\nexport { normalizeFields };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { isArray, isString, isFunction } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { sortKeys, clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { normalizeFields } from './normalize-fields';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('value', {\n  type: PROP_TYPE_ARRAY,\n  defaultValue: []\n});\n\n// --- Props ---\n\nconst props = sortKeys({\n  ...modelProps,\n  fields: makeProp(PROP_TYPE_ARRAY, null),\n  // Provider mixin adds in `Function` type\n  items: makeProp(PROP_TYPE_ARRAY, []),\n  // Primary key for record\n  // If provided the value in each row must be unique!\n  primaryKey: makeProp(PROP_TYPE_STRING),\n  // `v-model` for retrieving the current displayed rows\n  [MODEL_PROP_NAME]: makeProp(PROP_TYPE_ARRAY, [])\n});\n\n// --- Mixin ---\n\n// @vue/component\nconst itemsMixin = extend({\n  mixins: [modelMixin, useParentMixin],\n  props,\n  data() {\n    const {\n      items\n    } = this;\n    return {\n      // Our local copy of the items\n      // Must be an array\n      localItems: isArray(items) ? items.slice() : []\n    };\n  },\n  computed: {\n    computedFields() {\n      // We normalize fields into an array of objects\n      // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n      return normalizeFields(this.fields, this.localItems);\n    },\n    computedFieldsObj() {\n      // Fields as a simple lookup hash object\n      // Mainly for formatter lookup and use in `scopedSlots` for convenience\n      // If the field has a formatter, it normalizes formatter to a\n      // function ref or `undefined` if no formatter\n      const {\n        bvParent\n      } = this;\n      return this.computedFields.reduce((obj, f) => {\n        // We use object spread here so we don't mutate the original field object\n        obj[f.key] = clone(f);\n        if (f.formatter) {\n          // Normalize formatter to a function ref or `undefined`\n          let formatter = f.formatter;\n          if (isString(formatter) && isFunction(bvParent[formatter])) {\n            formatter = bvParent[formatter];\n          } else if (!isFunction(formatter)) {\n            /* istanbul ignore next */\n            formatter = undefined;\n          }\n          // Return formatter function or `undefined` if none\n          obj[f.key].formatter = formatter;\n        }\n        return obj;\n      }, {});\n    },\n    computedItems() {\n      const {\n        paginatedItems,\n        sortedItems,\n        filteredItems,\n        localItems\n      } = safeVueInstance(this);\n      // Fallback if various mixins not provided\n      return (paginatedItems || sortedItems || filteredItems || localItems || /* istanbul ignore next */\n      []).slice();\n    },\n    context() {\n      const {\n        perPage,\n        currentPage\n      } = safeVueInstance(this);\n      // Current state of sorting, filtering and pagination props/values\n      return {\n        filter: this.localFilter,\n        sortBy: this.localSortBy,\n        sortDesc: this.localSortDesc,\n        perPage: mathMax(toInteger(perPage, 0), 0),\n        currentPage: mathMax(toInteger(currentPage, 0), 1),\n        apiUrl: this.apiUrl\n      };\n    }\n  },\n  watch: {\n    items(newValue) {\n      // Set `localItems`/`filteredItems` to a copy of the provided array\n      this.localItems = isArray(newValue) ? newValue.slice() : [];\n    },\n    // Watch for changes on `computedItems` and update the `v-model`\n    computedItems(newValue, oldValue) {\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    },\n    // Watch for context changes\n    context(newValue, oldValue) {\n      // Emit context information for external paging/filtering/sorting handling\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n      }\n    }\n  },\n  mounted() {\n    // Initially update the `v-model` of displayed items\n    this.$emit(MODEL_EVENT_NAME, this.computedItems);\n  },\n  methods: {\n    // Method to get the formatter method for a given field key\n    getFieldFormatter(key) {\n      const field = this.computedFieldsObj[key];\n      // `this.computedFieldsObj` has pre-normalized the formatter to a\n      // function ref if present, otherwise `undefined`\n      return field ? field.formatter : undefined;\n    }\n  }\n});\n\nexport { MODEL_EVENT_NAME, MODEL_PROP_NAME, itemsMixin, props };\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","(function() {\n  var AcronymResult, computeScore, emptyAcronymResult, isAcronymFullWord, isMatch, isSeparator, isWordEnd, isWordStart, miss_coeff, pos_bonus, scoreAcronyms, scoreCharacter, scoreConsecutives, scoreExact, scoreExactMatch, scorePattern, scorePosition, scoreSize, tau_size, wm;\n\n  wm = 150;\n\n  pos_bonus = 20;\n\n  tau_size = 150;\n\n  miss_coeff = 0.75;\n\n  exports.score = function(string, query, options) {\n    var allowErrors, preparedQuery, score, string_lw;\n    preparedQuery = options.preparedQuery, allowErrors = options.allowErrors;\n    if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n      return 0;\n    }\n    string_lw = string.toLowerCase();\n    score = computeScore(string, string_lw, preparedQuery);\n    return Math.ceil(score);\n  };\n\n  exports.isMatch = isMatch = function(subject, query_lw, query_up) {\n    var i, j, m, n, qj_lw, qj_up, si;\n    m = subject.length;\n    n = query_lw.length;\n    if (!m || n > m) {\n      return false;\n    }\n    i = -1;\n    j = -1;\n    while (++j < n) {\n      qj_lw = query_lw.charCodeAt(j);\n      qj_up = query_up.charCodeAt(j);\n      while (++i < m) {\n        si = subject.charCodeAt(i);\n        if (si === qj_lw || si === qj_up) {\n          break;\n        }\n      }\n      if (i === m) {\n        return false;\n      }\n    }\n    return true;\n  };\n\n  exports.computeScore = computeScore = function(subject, subject_lw, preparedQuery) {\n    var acro, acro_score, align, csc_diag, csc_row, csc_score, csc_should_rebuild, i, j, m, miss_budget, miss_left, n, pos, query, query_lw, record_miss, score, score_diag, score_row, score_up, si_lw, start, sz;\n    query = preparedQuery.query;\n    query_lw = preparedQuery.query_lw;\n    m = subject.length;\n    n = query.length;\n    acro = scoreAcronyms(subject, subject_lw, query, query_lw);\n    acro_score = acro.score;\n    if (acro.count === n) {\n      return scoreExact(n, m, acro_score, acro.pos);\n    }\n    pos = subject_lw.indexOf(query_lw);\n    if (pos > -1) {\n      return scoreExactMatch(subject, subject_lw, query, query_lw, pos, n, m);\n    }\n    score_row = new Array(n);\n    csc_row = new Array(n);\n    sz = scoreSize(n, m);\n    miss_budget = Math.ceil(miss_coeff * n) + 5;\n    miss_left = miss_budget;\n    csc_should_rebuild = true;\n    j = -1;\n    while (++j < n) {\n      score_row[j] = 0;\n      csc_row[j] = 0;\n    }\n    i = -1;\n    while (++i < m) {\n      si_lw = subject_lw[i];\n      if (!si_lw.charCodeAt(0) in preparedQuery.charCodes) {\n        if (csc_should_rebuild) {\n          j = -1;\n          while (++j < n) {\n            csc_row[j] = 0;\n          }\n          csc_should_rebuild = false;\n        }\n        continue;\n      }\n      score = 0;\n      score_diag = 0;\n      csc_diag = 0;\n      record_miss = true;\n      csc_should_rebuild = true;\n      j = -1;\n      while (++j < n) {\n        score_up = score_row[j];\n        if (score_up > score) {\n          score = score_up;\n        }\n        csc_score = 0;\n        if (query_lw[j] === si_lw) {\n          start = isWordStart(i, subject, subject_lw);\n          csc_score = csc_diag > 0 ? csc_diag : scoreConsecutives(subject, subject_lw, query, query_lw, i, j, start);\n          align = score_diag + scoreCharacter(i, j, start, acro_score, csc_score);\n          if (align > score) {\n            score = align;\n            miss_left = miss_budget;\n          } else {\n            if (record_miss && --miss_left <= 0) {\n              return Math.max(score, score_row[n - 1]) * sz;\n            }\n            record_miss = false;\n          }\n        }\n        score_diag = score_up;\n        csc_diag = csc_row[j];\n        csc_row[j] = csc_score;\n        score_row[j] = score;\n      }\n    }\n    score = score_row[n - 1];\n    return score * sz;\n  };\n\n  exports.isWordStart = isWordStart = function(pos, subject, subject_lw) {\n    var curr_s, prev_s;\n    if (pos === 0) {\n      return true;\n    }\n    curr_s = subject[pos];\n    prev_s = subject[pos - 1];\n    return isSeparator(prev_s) || (curr_s !== subject_lw[pos] && prev_s === subject_lw[pos - 1]);\n  };\n\n  exports.isWordEnd = isWordEnd = function(pos, subject, subject_lw, len) {\n    var curr_s, next_s;\n    if (pos === len - 1) {\n      return true;\n    }\n    curr_s = subject[pos];\n    next_s = subject[pos + 1];\n    return isSeparator(next_s) || (curr_s === subject_lw[pos] && next_s !== subject_lw[pos + 1]);\n  };\n\n  isSeparator = function(c) {\n    return c === ' ' || c === '.' || c === '-' || c === '_' || c === '/' || c === '\\\\';\n  };\n\n  scorePosition = function(pos) {\n    var sc;\n    if (pos < pos_bonus) {\n      sc = pos_bonus - pos;\n      return 100 + sc * sc;\n    } else {\n      return Math.max(100 + pos_bonus - pos, 0);\n    }\n  };\n\n  exports.scoreSize = scoreSize = function(n, m) {\n    return tau_size / (tau_size + Math.abs(m - n));\n  };\n\n  scoreExact = function(n, m, quality, pos) {\n    return 2 * n * (wm * quality + scorePosition(pos)) * scoreSize(n, m);\n  };\n\n  exports.scorePattern = scorePattern = function(count, len, sameCase, start, end) {\n    var bonus, sz;\n    sz = count;\n    bonus = 6;\n    if (sameCase === count) {\n      bonus += 2;\n    }\n    if (start) {\n      bonus += 3;\n    }\n    if (end) {\n      bonus += 1;\n    }\n    if (count === len) {\n      if (start) {\n        if (sameCase === len) {\n          sz += 2;\n        } else {\n          sz += 1;\n        }\n      }\n      if (end) {\n        bonus += 1;\n      }\n    }\n    return sameCase + sz * (sz + bonus);\n  };\n\n  exports.scoreCharacter = scoreCharacter = function(i, j, start, acro_score, csc_score) {\n    var posBonus;\n    posBonus = scorePosition(i);\n    if (start) {\n      return posBonus + wm * ((acro_score > csc_score ? acro_score : csc_score) + 10);\n    }\n    return posBonus + wm * csc_score;\n  };\n\n  exports.scoreConsecutives = scoreConsecutives = function(subject, subject_lw, query, query_lw, i, j, startOfWord) {\n    var k, m, mi, n, nj, sameCase, sz;\n    m = subject.length;\n    n = query.length;\n    mi = m - i;\n    nj = n - j;\n    k = mi < nj ? mi : nj;\n    sameCase = 0;\n    sz = 0;\n    if (query[j] === subject[i]) {\n      sameCase++;\n    }\n    while (++sz < k && query_lw[++j] === subject_lw[++i]) {\n      if (query[j] === subject[i]) {\n        sameCase++;\n      }\n    }\n    if (sz < k) {\n      i--;\n    }\n    if (sz === 1) {\n      return 1 + 2 * sameCase;\n    }\n    return scorePattern(sz, n, sameCase, startOfWord, isWordEnd(i, subject, subject_lw, m));\n  };\n\n  exports.scoreExactMatch = scoreExactMatch = function(subject, subject_lw, query, query_lw, pos, n, m) {\n    var end, i, pos2, sameCase, start;\n    start = isWordStart(pos, subject, subject_lw);\n    if (!start) {\n      pos2 = subject_lw.indexOf(query_lw, pos + 1);\n      if (pos2 > -1) {\n        start = isWordStart(pos2, subject, subject_lw);\n        if (start) {\n          pos = pos2;\n        }\n      }\n    }\n    i = -1;\n    sameCase = 0;\n    while (++i < n) {\n      if (query[pos + i] === subject[i]) {\n        sameCase++;\n      }\n    }\n    end = isWordEnd(pos + n - 1, subject, subject_lw, m);\n    return scoreExact(n, m, scorePattern(n, n, sameCase, start, end), pos);\n  };\n\n  AcronymResult = (function() {\n    function AcronymResult(score, pos, count) {\n      this.score = score;\n      this.pos = pos;\n      this.count = count;\n    }\n\n    return AcronymResult;\n\n  })();\n\n  emptyAcronymResult = new AcronymResult(0, 0.1, 0);\n\n  exports.scoreAcronyms = scoreAcronyms = function(subject, subject_lw, query, query_lw) {\n    var count, fullWord, i, j, m, n, qj_lw, sameCase, score, sepCount, sumPos;\n    m = subject.length;\n    n = query.length;\n    if (!(m > 1 && n > 1)) {\n      return emptyAcronymResult;\n    }\n    count = 0;\n    sepCount = 0;\n    sumPos = 0;\n    sameCase = 0;\n    i = -1;\n    j = -1;\n    while (++j < n) {\n      qj_lw = query_lw[j];\n      if (isSeparator(qj_lw)) {\n        i = subject_lw.indexOf(qj_lw, i + 1);\n        if (i > -1) {\n          sepCount++;\n          continue;\n        } else {\n          break;\n        }\n      }\n      while (++i < m) {\n        if (qj_lw === subject_lw[i] && isWordStart(i, subject, subject_lw)) {\n          if (query[j] === subject[i]) {\n            sameCase++;\n          }\n          sumPos += i;\n          count++;\n          break;\n        }\n      }\n      if (i === m) {\n        break;\n      }\n    }\n    if (count < 2) {\n      return emptyAcronymResult;\n    }\n    fullWord = count === n ? isAcronymFullWord(subject, subject_lw, query, count) : false;\n    score = scorePattern(count, n, sameCase, true, fullWord);\n    return new AcronymResult(score, sumPos / count, count + sepCount);\n  };\n\n  isAcronymFullWord = function(subject, subject_lw, query, nbAcronymInQuery) {\n    var count, i, m, n;\n    m = subject.length;\n    n = query.length;\n    count = 0;\n    if (m > 12 * n) {\n      return false;\n    }\n    i = -1;\n    while (++i < m) {\n      if (isWordStart(i, subject, subject_lw) && ++count > nbAcronymInQuery) {\n        return false;\n      }\n    }\n    return true;\n  };\n\n}).call(this);\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot';\n\n// --- Props ---\n\nconst props = {\n  footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Any Bootstrap theme variant (or custom)\n  // Falls back to `headRowVariant`\n  footRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'dark', 'light', or `null` (or custom)\n  footVariant: makeProp(PROP_TYPE_STRING),\n  tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tfootMixin = extend({\n  props,\n  methods: {\n    renderTFootCustom() {\n      const h = this.$createElement;\n      if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n        return h(BTfoot, {\n          class: this.tfootClass || null,\n          props: {\n            footVariant: this.footVariant || this.headVariant || null\n          },\n          key: 'bv-tfoot-custom'\n        }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n          items: this.computedItems.slice(),\n          fields: this.computedFields.slice(),\n          columns: this.computedFields.length\n        }));\n      }\n      return h();\n    },\n    renderTfoot() {\n      // Passing true to renderThead will make it render a tfoot\n      return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n    }\n  }\n});\n\nexport { props, tfootMixin };\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nmodule.exports = compareAscending;\n","const DISCLOSURE_DROPDOWN_ITEM_NAME = 'GlDisclosureDropdownItem';\nconst DISCLOSURE_DROPDOWN_GROUP_NAME = 'GlDisclosureDropdownGroup';\nconst DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS = {\n  top: 'top',\n  bottom: 'bottom'\n};\n\nexport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME, DISCLOSURE_DROPDOWN_ITEM_NAME };\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport { stopEvent, filterVisible } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_FOCUS_CONTENT, POSITION_ABSOLUTE, POSITION_FIXED, HOME, END, ARROW_UP, ARROW_DOWN, ENTER, SPACE, GL_DROPDOWN_CONTENTS_CLASS } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlBaseDropdown, { BASE_DROPDOWN_CLASS } from '../base_dropdown/base_dropdown';\nimport GlDisclosureDropdownItem, { ITEM_CLASS } from './disclosure_dropdown_item';\nimport GlDisclosureDropdownGroup from './disclosure_dropdown_group';\nimport { itemsValidator, hasOnlyListItems, isItem } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst DROPDOWN_SELECTOR = `.${BASE_DROPDOWN_CLASS}`;\nconst ITEM_SELECTOR = `.${ITEM_CLASS}`;\nvar script = {\n  name: 'GlDisclosureDropdown',\n  events: {\n    GL_DROPDOWN_SHOWN,\n    GL_DROPDOWN_HIDDEN,\n    GL_DROPDOWN_BEFORE_CLOSE,\n    GL_DROPDOWN_FOCUS_CONTENT\n  },\n  components: {\n    GlBaseDropdown,\n    GlDisclosureDropdownItem,\n    GlDisclosureDropdownGroup\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     * 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    /**\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     * Custom toggle id.\n     * For instance, it can be referenced by tooltip or popover\n     */\n    toggleId: {\n      type: String,\n      required: false,\n      default: () => uniqueId('dropdown-toggle-btn-')\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 disclosure dropdown 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     * 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     * 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     * Close the dropdown on item click (action)\n     */\n    autoClose: {\n      type: Boolean,\n      required: false,\n      default: true\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  },\n  data() {\n    return {\n      disclosureId: uniqueId('disclosure-'),\n      nextFocusedItemIndex: null\n    };\n  },\n  computed: {\n    disclosureTag() {\n      var _this$items;\n      if ((_this$items = this.items) !== null && _this$items !== void 0 && _this$items.length ||\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      hasOnlyListItems(this.$scopedSlots.default || this.$slots.default)) {\n        return 'ul';\n      }\n      return 'div';\n    },\n    hasCustomToggle() {\n      return Boolean(this.$scopedSlots.toggle);\n    }\n  },\n  mounted() {\n    if (this.startOpened) {\n      this.open();\n    }\n  },\n  methods: {\n    open() {\n      this.$refs.baseDropdown.open();\n    },\n    close() {\n      this.$refs.baseDropdown.close();\n    },\n    onShow() {\n      /**\n       * Emitted when dropdown is shown\n       *\n       * @event shown\n       */\n      this.$emit(GL_DROPDOWN_SHOWN);\n    },\n    onBeforeClose(event) {\n      /**\n       * Emitted when dropdown is about to be closed\n       *\n       * @event beforeClose\n       */\n      this.$emit(GL_DROPDOWN_BEFORE_CLOSE, event);\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      } = event;\n      const elements = this.getFocusableListItemElements();\n      if (elements.length < 1) return;\n      let stop = true;\n      if (code === HOME) {\n        this.focusItem(0, elements);\n      } else if (code === END) {\n        this.focusItem(elements.length - 1, elements);\n      } else if (code === ARROW_UP) {\n        this.focusNextItem(event, elements, -1);\n      } else if (code === ARROW_DOWN) {\n        this.focusNextItem(event, elements, 1);\n      } else if (code === ENTER || code === SPACE) {\n        this.handleAutoClose(event);\n      } else {\n        stop = false;\n      }\n      if (stop) {\n        stopEvent(event);\n      }\n    },\n    getFocusableListItemElements() {\n      var _this$$refs$content;\n      const items = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelectorAll(ITEM_SELECTOR);\n      return filterVisible(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    closeAndFocus() {\n      this.$refs.baseDropdown.closeAndFocus();\n    },\n    handleAction(action) {\n      // See https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4376 for\n      // detailed explanation why we need requestAnimationFrame\n      window.requestAnimationFrame(() => {\n        /**\n         * Emitted when one of disclosure dropdown items is clicked\n         *\n         * @event action\n         */\n        this.$emit('action', action);\n      });\n    },\n    handleAutoClose(e) {\n      if (this.autoClose && e.target.closest(ITEM_SELECTOR) && e.target.closest(DROPDOWN_SELECTOR) === this.$refs.baseDropdown.$el) {\n        this.closeAndFocus();\n      }\n    },\n    uniqueItemId() {\n      return uniqueId(`disclosure-item-`);\n    },\n    isItem\n  },\n  GL_DROPDOWN_CONTENTS_CLASS\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\",staticClass:\"gl-disclosure-dropdown\",attrs:{\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.toggleText,\"toggle-class\":_vm.toggleClass,\"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,\"block\":_vm.block,\"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,_vm.$options.events.GL_DROPDOWN_BEFORE_CLOSE,_vm.onBeforeClose,_vm.$options.events.GL_DROPDOWN_FOCUS_CONTENT,_vm.onKeydown]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._t(\"header\"),_vm._v(\" \"),_c(_vm.disclosureTag,{ref:\"content\",tag:\"component\",class:_vm.$options.GL_DROPDOWN_CONTENTS_CLASS,attrs:{\"id\":_vm.disclosureId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.toggleId,\"data-testid\":\"disclosure-content\",\"tabindex\":\"-1\"},on:{\"keydown\":_vm.onKeydown,\"click\":_vm.handleAutoClose}},[_vm._t(\"default\",function(){return [_vm._l((_vm.items),function(item,index){return [(_vm.isItem(item))?[_c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([('list-item' in _vm.$scopedSlots)?{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}:null],null,true)})]:[_c('gl-disclosure-dropdown-group',{key:item.name,attrs:{\"bordered\":index !== 0,\"group\":item},on:{\"action\":_vm.handleAction},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.$scopedSlots['list-item'])?_vm._l((item.items),function(groupItem){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":groupItem},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":groupItem})]},proxy:true}],null,true)})}):_vm._e()],2)]]})]})],2),_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 { DROPDOWN_SELECTOR, ITEM_SELECTOR };\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./local_storage_sync.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./local_storage_sync.vue?vue&type=script&lang=js\"","<script>\nimport { isEqual, isString } from 'lodash';\n\n/**\n * This component will save and restore a value to and from localStorage.\n * The value will be saved only when the value changes; the initial value won't be saved.\n *\n * By default, the value will be saved using JSON.stringify(), and retrieved back using JSON.parse().\n *\n * If you would like to save the raw string instead, you may set the 'asString' prop to true, though be aware that this is a\n * legacy prop to maintain backwards compatibility.\n *\n * For new components saving data for the first time, it's recommended to not use 'asString' even if you're saving a string; it will still be\n * saved and restored properly using JSON.stringify()/JSON.parse().\n */\nexport default {\n  props: {\n    storageKey: {\n      type: String,\n      required: true,\n    },\n    value: {\n      type: [String, Number, Boolean, Array, Object],\n      required: false,\n      default: '',\n    },\n    asString: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    persist: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    clear: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  watch: {\n    value(newVal) {\n      if (!this.persist) return;\n\n      this.saveValue(this.serialize(newVal));\n    },\n    clear(newVal) {\n      if (newVal) {\n        localStorage.removeItem(this.storageKey);\n      }\n    },\n  },\n  mounted() {\n    // On mount, trigger update if we actually have a localStorageValue\n    const { exists, value } = this.getStorageValue();\n\n    if (exists && !isEqual(value, this.value)) {\n      this.$emit('input', value);\n    }\n  },\n  methods: {\n    getStorageValue() {\n      const value = localStorage.getItem(this.storageKey);\n\n      if (value === null) {\n        return { exists: false };\n      }\n\n      try {\n        return { exists: true, value: this.deserialize(value) };\n      } catch {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `[gitlab] Failed to deserialize value from localStorage (key=${this.storageKey})`,\n          value,\n        );\n        // default to \"don't use localStorage value\"\n        return { exists: false };\n      }\n    },\n    saveValue(val) {\n      localStorage.setItem(this.storageKey, val);\n    },\n    serialize(val) {\n      if (!isString(val) && this.asString) {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `[gitlab] LocalStorageSync is saving`,\n          val,\n          `to the key \"${this.storageKey}\", but it is not a string and the 'asString' prop is true. This will save and restore the stringified value rather than the original value. If this is not intended, please remove or set the 'asString' prop to false.`,\n        );\n      }\n\n      return this.asString ? val : JSON.stringify(val);\n    },\n    deserialize(val) {\n      return this.asString ? val : JSON.parse(val);\n    },\n  },\n  render() {\n    return this.$scopedSlots.default?.();\n  },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./local_storage_sync.vue?vue&type=script&lang=js\"\nexport * from \"./local_storage_sync.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_reviewers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_reviewers.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport { __, sprintf } from '~/locale';\nimport UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';\n\nexport default {\n  components: {\n    UserAvatarLink,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    reviewers: {\n      type: Array,\n      required: true,\n    },\n    iconSize: {\n      type: Number,\n      required: false,\n      default: 24,\n    },\n    imgCssClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    maxVisible: {\n      type: Number,\n      required: false,\n      default: 3,\n    },\n  },\n  data() {\n    return {\n      maxReviewers: 99,\n    };\n  },\n  computed: {\n    reviewersToShow() {\n      const numShownReviewers = this.reviewers.length - this.numHiddenReviewers;\n      return this.reviewers.slice(0, numShownReviewers);\n    },\n    reviewersCounterTooltip() {\n      return sprintf(__('%{count} more reviewers'), { count: this.numHiddenReviewers });\n    },\n    numHiddenReviewers() {\n      if (this.reviewers.length > this.maxVisible) {\n        return this.reviewers.length - this.maxVisible + 1;\n      }\n      return 0;\n    },\n    reviewerCounterLabel() {\n      if (this.numHiddenReviewers > this.maxReviewers) {\n        return `${this.maxReviewers}+`;\n      }\n\n      return `+${this.numHiddenReviewers}`;\n    },\n  },\n  methods: {\n    avatarUrlTitle(reviewer) {\n      return sprintf(__('Review requested from %{reviewerName}'), {\n        reviewerName: reviewer.name,\n      });\n    },\n  },\n};\n</script>\n<template>\n  <div>\n    <user-avatar-link\n      v-for=\"reviewer in reviewersToShow\"\n      :key=\"reviewer.id\"\n      :link-href=\"reviewer.webPath\"\n      :img-alt=\"avatarUrlTitle(reviewer)\"\n      :img-css-classes=\"imgCssClasses\"\n      img-css-wrapper-classes=\"gl-inline-flex\"\n      :img-src=\"reviewer.avatarUrl\"\n      :img-size=\"iconSize\"\n      class=\"author-link\"\n      tooltip-placement=\"bottom\"\n    >\n      <span data-testid=\"js-reviewer-tooltip\">\n        <span class=\"gl-block gl-font-bold\">{{ s__('Label|Reviewer') }}</span> {{ reviewer.name }}\n        <span v-if=\"reviewer.username\">@{{ reviewer.username }}</span>\n      </span>\n    </user-avatar-link>\n    <span\n      v-if=\"numHiddenReviewers > 0\"\n      v-gl-tooltip.bottom\n      :title=\"reviewersCounterTooltip\"\n      class=\"avatar-counter\"\n      data-testid=\"avatar-counter-content\"\n      >{{ reviewerCounterLabel }}</span\n    >\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./merge_request_reviewers.vue?vue&type=template&id=21d03268\"\nimport script from \"./merge_request_reviewers.vue?vue&type=script&lang=js\"\nexport * from \"./merge_request_reviewers.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._l((_vm.reviewersToShow),function(reviewer){return _c('user-avatar-link',{key:reviewer.id,staticClass:\"author-link\",attrs:{\"link-href\":reviewer.webPath,\"img-alt\":_vm.avatarUrlTitle(reviewer),\"img-css-classes\":_vm.imgCssClasses,\"img-css-wrapper-classes\":\"gl-inline-flex\",\"img-src\":reviewer.avatarUrl,\"img-size\":_vm.iconSize,\"tooltip-placement\":\"bottom\"}},[_c('span',{attrs:{\"data-testid\":\"js-reviewer-tooltip\"}},[_c('span',{staticClass:\"gl-block gl-font-bold\"},[_vm._v(_vm._s(_vm.s__('Label|Reviewer')))]),_vm._v(\" \"+_vm._s(reviewer.name)+\"\\n      \"),(reviewer.username)?_c('span',[_vm._v(\"@\"+_vm._s(reviewer.username))]):_vm._e()])])}),_vm._v(\" \"),(_vm.numHiddenReviewers > 0)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.bottom\",modifiers:{\"bottom\":true}}],staticClass:\"avatar-counter\",attrs:{\"title\":_vm.reviewersCounterTooltip,\"data-testid\":\"avatar-counter-content\"}},[_vm._v(_vm._s(_vm.reviewerCounterLabel))]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import fuzzaldrinPlus from 'fuzzaldrin-plus';\nimport axios from '~/lib/utils/axios_utils';\n\nimport { MAX_LIST_SIZE } from '../constants';\n\nexport class AutocompleteCache {\n  constructor() {\n    this.cache = new Map();\n    this.mutators = new Map();\n    this.formatters = new Map();\n    this.searchProperties = new Map();\n  }\n\n  setUpCache({ url, property, mutator, formatter }) {\n    this.mutators.set(url, mutator);\n    this.formatters.set(url, formatter);\n    this.searchProperties.set(url, property);\n  }\n\n  async fetch({ url, searchProperty, search, mutator, formatter }) {\n    this.setUpCache({ url, property: searchProperty, mutator, formatter });\n\n    if (!this.cache.has(url)) {\n      await this.updateLocalCache(url);\n    }\n\n    return this.retrieveFromLocalCache(url, search);\n  }\n\n  async updateLocalCache(url) {\n    const mutator = this.mutators.get(url);\n\n    return axios.get(url).then(({ data }) => {\n      let finalData = data;\n\n      if (mutator) {\n        finalData = mutator(finalData);\n      }\n\n      this.cache.set(url, finalData);\n    });\n  }\n\n  retrieveFromLocalCache(url, search) {\n    const searchProperty = this.searchProperties.get(url);\n    const formatter = this.formatters.get(url);\n    let result = search\n      ? fuzzaldrinPlus.filter(this.cache.get(url), search, { key: searchProperty })\n      : this.cache.get(url).slice(0, MAX_LIST_SIZE);\n\n    if (formatter) {\n      result = formatter(result);\n    }\n\n    return result;\n  }\n}\n","export const MAX_LIST_SIZE = 10;\n","import { __ } from '~/locale';\n\nexport const i18n = {\n  closed: __('Closed'),\n  merged: __('Merged'),\n  yes: __('Yes'),\n  no: __('No'),\n  errorFetchingBranches: __('Failed to load branches. Please try again.'),\n  errorFetchingCounts: __('An error occurred while getting merge request counts'),\n  errorFetchingMergeRequests: __('An error occurred while loading merge requests'),\n  upvotes: __('Upvotes'),\n  downvots: __('Downvotes'),\n  newMergeRequest: __('New merge request'),\n};\n\nexport const BRANCH_LIST_REFRESH_INTERVAL = 600000; // 10 minutes (* 60 seconds, * 1000 milliseconds)\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"gl-list-none gl-gap-3 gl-p-0\"},[(_vm.mergeRequest.upvotes)?_c('li',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.$options.i18n.upvotes,\"data-testid\":\"issuable-upvotes\"}},[_c('gl-icon',{attrs:{\"name\":\"thumb-up\"}}),_vm._v(\"\\n    \"+_vm._s(_vm.mergeRequest.upvotes)+\"\\n  \")],1):_vm._e(),_vm._v(\" \"),(_vm.mergeRequest.downvotes)?_c('li',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.$options.i18n.downvotes,\"data-testid\":\"issuable-downvotes\"}},[_c('gl-icon',{attrs:{\"name\":\"thumb-down\"}}),_vm._v(\"\\n    \"+_vm._s(_vm.mergeRequest.downvotes)+\"\\n  \")],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_statistics.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_statistics.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { i18n } from '../constants';\n\nexport default {\n  i18n,\n  components: {\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    mergeRequest: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <ul class=\"gl-list-none gl-gap-3 gl-p-0\">\n    <li\n      v-if=\"mergeRequest.upvotes\"\n      v-gl-tooltip\n      :title=\"$options.i18n.upvotes\"\n      data-testid=\"issuable-upvotes\"\n    >\n      <gl-icon name=\"thumb-up\" />\n      {{ mergeRequest.upvotes }}\n    </li>\n    <li\n      v-if=\"mergeRequest.downvotes\"\n      v-gl-tooltip\n      :title=\"$options.i18n.downvotes\"\n      data-testid=\"issuable-downvotes\"\n    >\n      <gl-icon name=\"thumb-down\" />\n      {{ mergeRequest.downvotes }}\n    </li>\n  </ul>\n</template>\n","import { render, staticRenderFns } from \"./merge_request_statistics.vue?vue&type=template&id=6620ff04\"\nimport script from \"./merge_request_statistics.vue?vue&type=script&lang=js\"\nexport * from \"./merge_request_statistics.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./more_actions_dropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./more_actions_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlButton,\n  GlIcon,\n  GlDisclosureDropdown,\n  GlDisclosureDropdownItem,\n  GlDisclosureDropdownGroup,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport CsvImportExportButtons from '~/issuable/components/csv_import_export_buttons.vue';\nimport { __ } from '~/locale';\n\nexport default {\n  components: {\n    GlButton,\n    GlIcon,\n    GlDisclosureDropdown,\n    GlDisclosureDropdownItem,\n    GlDisclosureDropdownGroup,\n    CsvImportExportButtons,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  provide: {\n    showExportButton: true,\n  },\n  inject: ['isSignedIn', 'issuableType', 'email', 'exportCsvPath', 'rssUrl'],\n  props: {\n    count: {\n      type: Number,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      isDropdownVisible: false,\n      exportCsvPathWithQuery: this.getExportCsvPathWithQuery(),\n    };\n  },\n  computed: {\n    moreActionsTooltip() {\n      return this.isDropdownVisible ? '' : this.$options.i18n.toggleText;\n    },\n    subscribeToRSSItem() {\n      return {\n        text: this.$options.i18n.subscribeToRSS,\n        href: this.rssUrl,\n      };\n    },\n  },\n  watch: {\n    $route() {\n      this.exportCsvPathWithQuery = this.getExportCsvPathWithQuery();\n    },\n  },\n  methods: {\n    showDropdown() {\n      this.isDropdownVisible = true;\n    },\n    hideDropdown() {\n      this.isDropdownVisible = false;\n    },\n    getExportCsvPathWithQuery() {\n      return `${this.exportCsvPath}${window.location.search}`;\n    },\n  },\n  i18n: {\n    toggleText: __('Actions'),\n    subscribeToRSS: __('Subscribe to RSS feed'),\n  },\n};\n</script>\n\n<template>\n  <gl-disclosure-dropdown\n    v-gl-tooltip.top.viewport=\"moreActionsTooltip\"\n    block\n    placement=\"bottom-end\"\n    @shown=\"showDropdown\"\n    @hidden=\"hideDropdown\"\n  >\n    <template #toggle>\n      <div class=\"gl-min-h-7\">\n        <gl-button\n          class=\"gl-w-full md:!gl-hidden\"\n          button-text-classes=\"gl-flex gl-justify-between gl-w-full\"\n          category=\"secondary\"\n          :aria-label=\"$options.i18n.toggleText\"\n        >\n          <span>{{ $options.i18n.toggleText }}</span>\n          <gl-icon class=\"dropdown-chevron\" name=\"chevron-down\" />\n        </gl-button>\n        <gl-button\n          class=\"!gl-hidden md:!gl-flex\"\n          category=\"tertiary\"\n          icon=\"ellipsis_v\"\n          :aria-label=\"$options.i18n.toggleText\"\n          :title=\"$options.i18n.toggleText\"\n        />\n      </div>\n    </template>\n\n    <template v-if=\"exportCsvPath\">\n      <csv-import-export-buttons\n        v-if=\"isSignedIn\"\n        :issuable-count=\"count\"\n        :export-csv-path=\"exportCsvPathWithQuery\"\n      />\n      <gl-disclosure-dropdown-group :bordered=\"isSignedIn\">\n        <gl-disclosure-dropdown-item :item=\"subscribeToRSSItem\" />\n      </gl-disclosure-dropdown-group>\n    </template>\n    <gl-disclosure-dropdown-item v-else :item=\"subscribeToRSSItem\" />\n  </gl-disclosure-dropdown>\n</template>\n","import { render, staticRenderFns } from \"./more_actions_dropdown.vue?vue&type=template&id=1db9a962\"\nimport script from \"./more_actions_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./more_actions_dropdown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.top.viewport\",value:(_vm.moreActionsTooltip),expression:\"moreActionsTooltip\",modifiers:{\"top\":true,\"viewport\":true}}],attrs:{\"block\":\"\",\"placement\":\"bottom-end\"},on:{\"shown\":_vm.showDropdown,\"hidden\":_vm.hideDropdown},scopedSlots:_vm._u([{key:\"toggle\",fn:function(){return [_c('div',{staticClass:\"gl-min-h-7\"},[_c('gl-button',{staticClass:\"gl-w-full md:!gl-hidden\",attrs:{\"button-text-classes\":\"gl-flex gl-justify-between gl-w-full\",\"category\":\"secondary\",\"aria-label\":_vm.$options.i18n.toggleText}},[_c('span',[_vm._v(_vm._s(_vm.$options.i18n.toggleText))]),_vm._v(\" \"),_c('gl-icon',{staticClass:\"dropdown-chevron\",attrs:{\"name\":\"chevron-down\"}})],1),_vm._v(\" \"),_c('gl-button',{staticClass:\"!gl-hidden md:!gl-flex\",attrs:{\"category\":\"tertiary\",\"icon\":\"ellipsis_v\",\"aria-label\":_vm.$options.i18n.toggleText,\"title\":_vm.$options.i18n.toggleText}})],1)]},proxy:true}])},[_vm._v(\" \"),(_vm.exportCsvPath)?[(_vm.isSignedIn)?_c('csv-import-export-buttons',{attrs:{\"issuable-count\":_vm.count,\"export-csv-path\":_vm.exportCsvPathWithQuery}}):_vm._e(),_vm._v(\" \"),_c('gl-disclosure-dropdown-group',{attrs:{\"bordered\":_vm.isSignedIn}},[_c('gl-disclosure-dropdown-item',{attrs:{\"item\":_vm.subscribeToRSSItem}})],1)]:_c('gl-disclosure-dropdown-item',{attrs:{\"item\":_vm.subscribeToRSSItem}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default __webpack_public_path__ + \"empty-merge-requests-md.83c3b841.svg\";","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty_state.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty_state.vue?vue&type=script&lang=js\"","<script>\nimport emptyStateSvg from '@gitlab/svgs/dist/illustrations/empty-state/empty-search-md.svg';\nimport emptyMergeRequestsStateSvg from '@gitlab/svgs/dist/illustrations/empty-state/empty-merge-requests-md.svg';\nimport { GlButton, GlEmptyState } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n  components: {\n    GlButton,\n    GlEmptyState,\n  },\n  inject: {\n    newMergeRequestPath: {\n      default: false,\n    },\n  },\n  props: {\n    hasSearch: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isOpenTab: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    hasMergeRequests: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    title() {\n      if (this.hasSearch) {\n        return __('No results found');\n      }\n\n      if (!this.hasMergeRequests) {\n        return __(\n          \"Merge requests are a place to propose changes you've made to a project and discuss those changes with others\",\n        );\n      }\n\n      if (this.isOpenTab) {\n        return __('There are no open merge requests');\n      }\n\n      return __('There are no closed merge requests');\n    },\n    description() {\n      if (this.hasSearch) {\n        return __('To widen your search, change or remove filters above.');\n      }\n\n      if (!this.hasMergeRequests) {\n        return __('Interested parties can even contribute by pushing commits if they want to.');\n      }\n\n      return null;\n    },\n    svgPath() {\n      return this.hasSearch ? emptyStateSvg : emptyMergeRequestsStateSvg;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-empty-state\n    :description=\"description\"\n    :title=\"title\"\n    :svg-path=\"svgPath\"\n    data-testid=\"issuable-empty-state\"\n  >\n    <template #actions>\n      <gl-button\n        v-if=\"newMergeRequestPath\"\n        :href=\"newMergeRequestPath\"\n        variant=\"confirm\"\n        data-event-tracking=\"click_new_merge_request_empty_list\"\n        data-testid=\"new-merge-request-button\"\n      >\n        {{ __('New merge request') }}\n      </gl-button>\n    </template>\n  </gl-empty-state>\n</template>\n","import { render, staticRenderFns } from \"./empty_state.vue?vue&type=template&id=5ad6f4c5\"\nimport script from \"./empty_state.vue?vue&type=script&lang=js\"\nexport * from \"./empty_state.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-empty-state',{attrs:{\"description\":_vm.description,\"title\":_vm.title,\"svg-path\":_vm.svgPath,\"data-testid\":\"issuable-empty-state\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(_vm.newMergeRequestPath)?_c('gl-button',{attrs:{\"href\":_vm.newMergeRequestPath,\"variant\":\"confirm\",\"data-event-tracking\":\"click_new_merge_request_empty_list\",\"data-testid\":\"new-merge-request-button\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('New merge request'))+\"\\n    \")]):_vm._e()]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlFilteredSearchToken, GlButton, GlLink, GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { isEmpty } from 'lodash';\nimport ApprovalCount from 'ee_else_ce/merge_requests/components/approval_count.vue';\nimport { sprintf, __ } from '~/locale';\nimport Api from '~/api';\nimport * as Sentry from '~/sentry/sentry_browser_wrapper';\nimport { STATUS_ALL, STATUS_CLOSED, STATUS_OPEN, STATUS_MERGED } from '~/issues/constants';\nimport { fetchPolicies } from '~/lib/graphql';\nimport { isPositiveInteger } from '~/lib/utils/number_utils';\nimport { scrollUp } from '~/lib/utils/scroll_utils';\nimport { getParameterByName, mergeUrlParams } from '~/lib/utils/url_utility';\nimport { TYPENAME_USER } from '~/graphql_shared/constants';\nimport { convertToGraphQLId, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport IssuableList from '~/vue_shared/issuable/list/components/issuable_list_root.vue';\nimport IssuableMilestone from '~/vue_shared/issuable/list/components/issuable_milestone.vue';\nimport { DEFAULT_PAGE_SIZE, mergeRequestListTabs } from '~/vue_shared/issuable/list/constants';\nimport {\n  OPERATORS_IS,\n  OPERATORS_IS_NOT,\n  TOKEN_TITLE_APPROVED_BY,\n  TOKEN_TYPE_APPROVED_BY,\n  TOKEN_TITLE_APPROVER,\n  TOKEN_TYPE_APPROVER,\n  TOKEN_TITLE_AUTHOR,\n  TOKEN_TYPE_AUTHOR,\n  TOKEN_TITLE_DRAFT,\n  TOKEN_TYPE_DRAFT,\n  TOKEN_TITLE_TARGET_BRANCH,\n  TOKEN_TYPE_TARGET_BRANCH,\n  TOKEN_TITLE_SOURCE_BRANCH,\n  TOKEN_TYPE_SOURCE_BRANCH,\n  TOKEN_TITLE_ASSIGNEE,\n  TOKEN_TYPE_ASSIGNEE,\n  TOKEN_TITLE_REVIEWER,\n  TOKEN_TYPE_REVIEWER,\n  TOKEN_TYPE_MERGE_USER,\n  TOKEN_TITLE_MERGE_USER,\n  TOKEN_TITLE_MILESTONE,\n  TOKEN_TYPE_MILESTONE,\n  TOKEN_TITLE_MY_REACTION,\n  TOKEN_TYPE_MY_REACTION,\n  TOKEN_TITLE_LABEL,\n  TOKEN_TYPE_LABEL,\n  TOKEN_TITLE_RELEASE,\n  TOKEN_TYPE_RELEASE,\n  TOKEN_TITLE_DEPLOYED_BEFORE,\n  TOKEN_TYPE_DEPLOYED_BEFORE,\n  TOKEN_TITLE_DEPLOYED_AFTER,\n  TOKEN_TYPE_DEPLOYED_AFTER,\n  TOKEN_TYPE_ENVIRONMENT,\n  TOKEN_TITLE_ENVIRONMENT,\n} from '~/vue_shared/components/filtered_search_bar/constants';\nimport {\n  convertToApiParams,\n  convertToSearchQuery,\n  convertToUrlParams,\n  deriveSortKey,\n  getFilterTokens,\n  getInitialPageParams,\n  getSortOptions,\n} from '~/issues/list/utils';\nimport {\n  CREATED_DESC,\n  PARAM_FIRST_PAGE_SIZE,\n  PARAM_LAST_PAGE_SIZE,\n  PARAM_PAGE_AFTER,\n  PARAM_PAGE_BEFORE,\n  PARAM_STATE,\n  urlSortParams,\n  PARAM_SORT,\n} from '~/issues/list/constants';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport MergeRequestReviewers from '~/issuable/components/merge_request_reviewers.vue';\nimport IssuableByEmail from '~/issuable/components/issuable_by_email.vue';\nimport setSortPreferenceMutation from '~/issues/list/queries/set_sort_preference.mutation.graphql';\nimport issuableEventHub from '~/issues/list/eventhub';\nimport searchLabelsQuery from '~/issues/list/queries/search_labels.query.graphql';\nimport { AutocompleteCache } from '../../utils/autocomplete_cache';\nimport { i18n, BRANCH_LIST_REFRESH_INTERVAL } from '../constants';\nimport MergeRequestStatistics from './merge_request_statistics.vue';\nimport MergeRequestMoreActionsDropdown from './more_actions_dropdown.vue';\nimport EmptyState from './empty_state.vue';\nimport DiscussionsBadge from './discussions_badge.vue';\n\nconst UserToken = () => import('~/vue_shared/components/filtered_search_bar/tokens/user_token.vue');\nconst BranchToken = () =>\n  import('~/vue_shared/components/filtered_search_bar/tokens/branch_token.vue');\nconst MilestoneToken = () =>\n  import('~/vue_shared/components/filtered_search_bar/tokens/milestone_token.vue');\nconst LabelToken = () =>\n  import('~/vue_shared/components/filtered_search_bar/tokens/label_token.vue');\nconst ReleaseToken = () => import('./tokens/release_client_search_token.vue');\nconst EnvironmentToken = () => import('./tokens/environment_token.vue');\nconst EmojiToken = () =>\n  import('~/vue_shared/components/filtered_search_bar/tokens/emoji_token.vue');\nconst DateToken = () => import('~/vue_shared/components/filtered_search_bar/tokens/date_token.vue');\n\nfunction cacheIsExpired(cacheAge, compareTo = Date.now()) {\n  return cacheAge + BRANCH_LIST_REFRESH_INTERVAL <= compareTo;\n}\n\nexport default {\n  name: 'MergeRequestsListApp',\n  i18n,\n  mergeRequestListTabs,\n  components: {\n    GlButton,\n    GlLink,\n    GlIcon,\n    IssuableList,\n    CiIcon,\n    MergeRequestStatistics,\n    MergeRequestMoreActionsDropdown,\n    MergeRequestReviewers,\n    ApprovalCount,\n    EmptyState,\n    IssuableMilestone,\n    IssuableByEmail,\n    DiscussionsBadge,\n    NewResourceDropdown: () =>\n      import('~/vue_shared/components/new_resource_dropdown/new_resource_dropdown.vue'),\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  inject: {\n    autocompleteAwardEmojisPat: { default: '' },\n    fullPath: { default: '' },\n    hasAnyMergeRequests: { default: false },\n    hasScopedLabelsFeature: { default: false },\n    initialSort: { default: '' },\n    isPublicVisibilityRestricted: { default: false },\n    isSignedIn: { default: false },\n    newMergeRequestPath: { default: '' },\n    releasesEndpoint: { default: '' },\n    canBulkUpdate: { default: false },\n    environmentNamesPath: { default: '' },\n    mergeTrainsPath: { default: undefined },\n    defaultBranch: { default: '' },\n    initialEmail: { default: '' },\n    getMergeRequestsQuery: { default: undefined },\n    getMergeRequestsCountsQuery: { default: undefined },\n    isProject: { default: true },\n    groupId: { default: undefined },\n    showNewResourceDropdown: { default: undefined },\n  },\n  data() {\n    return {\n      namespaceId: null,\n      branchCacheAges: {},\n      filterTokens: [],\n      mergeRequests: [],\n      mergeRequestCounts: {},\n      mergeRequestsError: null,\n      pageInfo: {},\n      pageParams: {},\n      sortKey: CREATED_DESC,\n      state: STATUS_OPEN,\n      pageSize: DEFAULT_PAGE_SIZE,\n      showBulkEditSidebar: false,\n    };\n  },\n  apollo: {\n    mergeRequests: {\n      query() {\n        return this.getMergeRequestsQuery;\n      },\n      variables() {\n        return this.queryVariables;\n      },\n      update(data) {\n        return data.namespace.mergeRequests?.nodes ?? [];\n      },\n      fetchPolicy: fetchPolicies.CACHE_AND_NETWORK,\n      nextFetchPolicy: fetchPolicies.CACHE_FIRST,\n      notifyOnNetworkStatusChange: true,\n      result({ data }) {\n        if (!data) {\n          return;\n        }\n        this.namespaceId = getIdFromGraphQLId(data.namespace.id);\n        this.pageInfo = data.namespace.mergeRequests?.pageInfo ?? {};\n      },\n      error(error) {\n        this.mergeRequestsError = this.$options.i18n.errorFetchingMergeRequests;\n        Sentry.captureException(error);\n      },\n      skip() {\n        return !this.hasAnyMergeRequests || isEmpty(this.pageParams) || !this.getMergeRequestsQuery;\n      },\n    },\n    mergeRequestCounts: {\n      query() {\n        return this.getMergeRequestsCountsQuery;\n      },\n      variables() {\n        return this.queryVariables;\n      },\n      update(data) {\n        return data.namespace ?? {};\n      },\n      error(error) {\n        this.mergeRequestsError = this.$options.i18n.errorFetchingCounts;\n        Sentry.captureException(error);\n      },\n      skip() {\n        return (\n          !this.hasAnyMergeRequests || isEmpty(this.pageParams) || !this.getMergeRequestsCountsQuery\n        );\n      },\n    },\n  },\n  computed: {\n    queryVariables() {\n      return {\n        fullPath: this.fullPath,\n        hideUsers: this.isPublicVisibilityRestricted && !this.isSignedIn,\n        isSignedIn: this.isSignedIn,\n        sort: this.sortKey,\n        state: this.state,\n        ...this.pageParams,\n        ...this.apiFilterParams,\n        search: this.searchQuery,\n      };\n    },\n    hasSearch() {\n      return Boolean(\n        this.searchQuery ||\n          Object.keys(this.urlFilterParams).length ||\n          this.pageParams.afterCursor ||\n          this.pageParams.beforeCursor,\n      );\n    },\n    apiFilterParams() {\n      return convertToApiParams(this.filterTokens);\n    },\n    urlFilterParams() {\n      return convertToUrlParams(this.filterTokens);\n    },\n    searchQuery() {\n      return convertToSearchQuery(this.filterTokens);\n    },\n    searchTokens() {\n      const preloadedUsers = [\n        window.gon?.current_user_id && {\n          id: convertToGraphQLId(TYPENAME_USER, gon.current_user_id),\n          name: gon.current_user_fullname,\n          username: gon.current_username,\n          avatar_url: gon.current_user_avatar_url,\n        },\n      ].filter(Boolean);\n\n      return [\n        {\n          type: TOKEN_TYPE_AUTHOR,\n          title: TOKEN_TITLE_AUTHOR,\n          icon: 'pencil',\n          token: UserToken,\n          dataType: 'user',\n          defaultUsers: [],\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          recentSuggestionsStorageKey: `${this.fullPath}-merge-requests-recent-tokens-author`,\n          preloadedUsers,\n          multiselect: false,\n        },\n        {\n          type: TOKEN_TYPE_ASSIGNEE,\n          title: TOKEN_TITLE_ASSIGNEE,\n          icon: 'user',\n          token: UserToken,\n          dataType: 'user',\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          recentSuggestionsStorageKey: `${this.fullPath}-merge-requests-recent-tokens-assignee`,\n          preloadedUsers,\n          multiSelect: false,\n          unique: true,\n        },\n        {\n          type: TOKEN_TYPE_REVIEWER,\n          title: TOKEN_TITLE_REVIEWER,\n          icon: 'user',\n          token: UserToken,\n          dataType: 'user',\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          recentSuggestionsStorageKey: `${this.fullPath}-merge-requests-recent-tokens-reviewer`,\n          preloadedUsers,\n          multiSelect: false,\n          unique: true,\n        },\n        {\n          type: TOKEN_TYPE_MERGE_USER,\n          title: TOKEN_TITLE_MERGE_USER,\n          icon: 'merge',\n          token: UserToken,\n          dataType: 'user',\n          defaultUsers: [],\n          operators: OPERATORS_IS,\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          recentSuggestionsStorageKey: `${this.fullPath}-merge_requests-recent-tokens-merged_by`,\n          preloadedUsers,\n          multiselect: false,\n          unique: true,\n        },\n        {\n          type: TOKEN_TYPE_APPROVER,\n          title: TOKEN_TITLE_APPROVER,\n          icon: 'approval',\n          token: UserToken,\n          dataType: 'user',\n          operators: OPERATORS_IS,\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          recentSuggestionsStorageKey: `${this.fullPath}-merge_requests-recent-tokens-approvers`,\n          preloadedUsers,\n          multiSelect: false,\n        },\n        {\n          type: TOKEN_TYPE_APPROVED_BY,\n          title: TOKEN_TITLE_APPROVED_BY,\n          icon: 'approval',\n          token: UserToken,\n          dataType: 'user',\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          recentSuggestionsStorageKey: `${this.fullPath}-merge_requests-recent-tokens-approved_by`,\n          preloadedUsers,\n          multiSelect: false,\n        },\n        {\n          type: TOKEN_TYPE_MILESTONE,\n          title: TOKEN_TITLE_MILESTONE,\n          icon: 'milestone',\n          token: MilestoneToken,\n          recentSuggestionsStorageKey: `${this.fullPath}-merge-requests-recent-tokens-milestone`,\n          shouldSkipSort: true,\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          multiselect: false,\n          unique: true,\n        },\n        {\n          type: TOKEN_TYPE_LABEL,\n          title: TOKEN_TITLE_LABEL,\n          icon: 'labels',\n          token: LabelToken,\n          fetchLabels: this.fetchLabels,\n          recentSuggestionsStorageKey: `${this.fullPath}-merge_requests-recent-tokens-label`,\n        },\n        {\n          type: TOKEN_TYPE_RELEASE,\n          title: TOKEN_TITLE_RELEASE,\n          icon: 'rocket',\n          token: ReleaseToken,\n          operators: OPERATORS_IS_NOT,\n          releasesEndpoint: this.releasesEndpoint,\n        },\n        this.isSignedIn && {\n          type: TOKEN_TYPE_MY_REACTION,\n          title: TOKEN_TITLE_MY_REACTION,\n          icon: 'thumb-up',\n          token: EmojiToken,\n          unique: true,\n          fetchEmojis: this.fetchEmojis,\n          recentSuggestionsStorageKey: `${this.fullPath}-merge_requests-recent-tokens-my_reaction`,\n        },\n        {\n          type: TOKEN_TYPE_DRAFT,\n          title: TOKEN_TITLE_DRAFT,\n          icon: 'pencil-square',\n          token: GlFilteredSearchToken,\n          operators: OPERATORS_IS,\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          multiselect: false,\n          options: [\n            { value: 'yes', title: this.$options.i18n.yes },\n            { value: 'no', title: this.$options.i18n.no },\n          ],\n          unique: true,\n        },\n        {\n          type: TOKEN_TYPE_TARGET_BRANCH,\n          title: TOKEN_TITLE_TARGET_BRANCH,\n          icon: 'arrow-right',\n          token: BranchToken,\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          fetchBranches: this.fetchTargetBranches,\n        },\n        {\n          type: TOKEN_TYPE_SOURCE_BRANCH,\n          title: TOKEN_TITLE_SOURCE_BRANCH,\n          icon: 'branch',\n          token: BranchToken,\n          fullPath: this.fullPath,\n          isProject: this.isProject,\n          fetchBranches: this.fetchSourceBranches,\n        },\n        {\n          type: TOKEN_TYPE_ENVIRONMENT,\n          title: TOKEN_TITLE_ENVIRONMENT,\n          icon: 'environment',\n          token: EnvironmentToken,\n          operators: OPERATORS_IS,\n          multiselect: false,\n          unique: true,\n          environmentsEndpoint: this.environmentNamesPath,\n        },\n        {\n          type: TOKEN_TYPE_DEPLOYED_BEFORE,\n          title: TOKEN_TITLE_DEPLOYED_BEFORE,\n          icon: 'clock',\n          token: DateToken,\n          operators: OPERATORS_IS,\n        },\n        {\n          type: TOKEN_TYPE_DEPLOYED_AFTER,\n          title: TOKEN_TITLE_DEPLOYED_AFTER,\n          icon: 'clock',\n          token: DateToken,\n          operators: OPERATORS_IS,\n        },\n      ].filter(Boolean);\n    },\n    showPaginationControls() {\n      return (\n        this.mergeRequests.length > 0 &&\n        (this.pageInfo.hasNextPage || this.pageInfo.hasPreviousPage)\n      );\n    },\n    sortOptions() {\n      return getSortOptions({ hasManualSort: false, hasMergedDate: this.state === STATUS_MERGED });\n    },\n    tabCounts() {\n      const { openedMergeRequests, closedMergeRequests, mergedMergeRequests, allMergeRequests } =\n        this.mergeRequestCounts;\n      return {\n        [STATUS_OPEN]: openedMergeRequests?.count,\n        [STATUS_MERGED]: mergedMergeRequests?.count,\n        [STATUS_CLOSED]: closedMergeRequests?.count,\n        [STATUS_ALL]: allMergeRequests?.count,\n      };\n    },\n    urlParams() {\n      return {\n        sort: urlSortParams[this.sortKey],\n        state: this.state,\n        ...this.urlFilterParams,\n        first_page_size: this.pageParams.firstPageSize,\n        last_page_size: this.pageParams.lastPageSize,\n        page_after: this.pageParams.afterCursor ?? undefined,\n        page_before: this.pageParams.beforeCursor ?? undefined,\n      };\n    },\n    isLoading() {\n      return (\n        this.$apollo.queries.mergeRequests.loading &&\n        !this.$apollo.provider.clients.defaultClient.readQuery({\n          query: this.getMergeRequestsQuery,\n          variables: this.queryVariables,\n        })\n      );\n    },\n    isOpenTab() {\n      return this.state === STATUS_OPEN;\n    },\n    isBulkEditButtonDisabled() {\n      return this.showBulkEditSidebar || !this.mergeRequests.length;\n    },\n    resourceDropdownQueryVariables() {\n      return { fullPath: this.fullPath };\n    },\n    currentTabCount() {\n      return this.tabCounts[this.state] || 0;\n    },\n  },\n  watch: {\n    $route(newValue, oldValue) {\n      if (newValue.fullPath !== oldValue.fullPath) {\n        this.updateData(getParameterByName(PARAM_SORT));\n      }\n    },\n    state: {\n      handler(val) {\n        document\n          .querySelector('.js-status-dropdown-container')\n          ?.classList.toggle('gl-hidden', val === STATUS_MERGED);\n      },\n      immediate: true,\n    },\n  },\n  created() {\n    this.updateData(this.initialSort);\n    this.autocompleteCache = new AutocompleteCache();\n  },\n  mounted() {\n    issuableEventHub.$on('issuables:toggleBulkEdit', this.toggleBulkEditSidebar);\n  },\n  beforeDestroy() {\n    issuableEventHub.$off('issuables:toggleBulkEdit', this.toggleBulkEditSidebar);\n  },\n  methods: {\n    getBranchPath(branchType = 'other') {\n      const typeUrls = {\n        source: '/-/autocomplete/merge_request_source_branches.json',\n        target: '/-/autocomplete/merge_request_target_branches.json',\n        other: Api.buildUrl(Api.createBranchPath).replace(':id', encodeURIComponent(this.fullPath)),\n      };\n      const url = typeUrls[branchType];\n\n      return url && this.namespaceId\n        ? mergeUrlParams({ [this.isProject ? 'project_id' : 'group_id']: this.namespaceId }, url)\n        : typeUrls.other;\n    },\n    async updateBranchCache(branchType, path) {\n      const lastCheck = this.branchCacheAges[branchType];\n\n      if (cacheIsExpired(lastCheck)) {\n        await this.autocompleteCache.updateLocalCache(path);\n      }\n    },\n    async fetchBranches(type = 'other', search) {\n      const branchPath = this.getBranchPath(type);\n      const cacheAge = this.branchCacheAges[type];\n      const runTime = Date.now();\n\n      await this.updateBranchCache(type, branchPath);\n\n      const fetch = this.autocompleteCache.fetch({\n        mutator: (branchList) =>\n          branchList.map((branch, index) => ({\n            ...branch,\n            name: branch.name || branch.title,\n            id: index,\n          })),\n        formatter: (results) => ({ data: results }),\n        url: branchPath,\n        searchProperty: 'name',\n        search,\n      });\n\n      fetch\n        .then(() => {\n          if (!cacheAge || cacheIsExpired(cacheAge, runTime)) {\n            this.branchCacheAges[type] = Date.now();\n          }\n        })\n        .catch(() => {\n          // An error has occurred, but there's nothing the user can do about it, so... we're swallowing it.\n        });\n\n      return fetch;\n    },\n    fetchTargetBranches(search) {\n      return this.fetchBranches('target', search);\n    },\n    fetchSourceBranches(search) {\n      return this.fetchBranches('source', search);\n    },\n    fetchEmojis(search) {\n      return this.autocompleteCache.fetch({\n        url: this.autocompleteAwardEmojisPath,\n        cacheName: 'emojis',\n        searchProperty: 'name',\n        search,\n      });\n    },\n    fetchLabelsWithFetchPolicy(search, fetchPolicy = fetchPolicies.CACHE_FIRST) {\n      return this.$apollo\n        .query({\n          query: searchLabelsQuery,\n          variables: { fullPath: this.fullPath, search, isProject: this.isProject },\n          fetchPolicy,\n        })\n        .then(({ data }) => (data.project || data.group).labels.nodes)\n        .then((labels) =>\n          // TODO remove once we can search by title-only on the backend\n          // https://gitlab.com/gitlab-org/gitlab/-/issues/346353\n          labels.filter((label) => label.title.toLowerCase().includes(search.toLowerCase())),\n        );\n    },\n    fetchLabels(search) {\n      return this.fetchLabelsWithFetchPolicy(search);\n    },\n    getStatus(mergeRequest) {\n      if (mergeRequest.state === STATUS_CLOSED) {\n        return this.$options.i18n.closed;\n      }\n      if (mergeRequest.state === STATUS_MERGED) {\n        return this.$options.i18n.merged;\n      }\n      return undefined;\n    },\n    getReviewers(issuable) {\n      return issuable.reviewers?.nodes || [];\n    },\n    handleClickTab(state) {\n      if (this.state === state) {\n        return;\n      }\n\n      this.state = state;\n      this.pageParams = getInitialPageParams(this.pageSize);\n\n      this.$router.push({ query: this.urlParams });\n    },\n    handleNextPage() {\n      this.pageParams = {\n        afterCursor: this.pageInfo.endCursor,\n        firstPageSize: this.pageSize,\n      };\n      scrollUp();\n\n      this.$router.push({ query: this.urlParams });\n    },\n    handlePreviousPage() {\n      this.pageParams = {\n        beforeCursor: this.pageInfo.startCursor,\n        lastPageSize: this.pageSize,\n      };\n      scrollUp();\n\n      this.$router.push({ query: this.urlParams });\n    },\n    handleFilter(tokens) {\n      this.filterTokens = tokens;\n      this.pageParams = getInitialPageParams(this.pageSize);\n\n      this.$router.push({ query: this.urlParams });\n    },\n    handleSort(sortKey) {\n      if (this.sortKey === sortKey) {\n        return;\n      }\n\n      this.sortKey = sortKey;\n      this.pageParams = getInitialPageParams(this.pageSize);\n\n      if (this.isSignedIn) {\n        this.saveSortPreference(sortKey);\n      }\n\n      this.$router.push({ query: this.urlParams });\n    },\n    saveSortPreference(sortKey) {\n      this.$apollo\n        .mutate({\n          mutation: setSortPreferenceMutation,\n          variables: { input: { mergeRequestsSort: sortKey } },\n        })\n        .then(({ data }) => {\n          if (data.userPreferencesUpdate.errors.length) {\n            throw new Error(data.userPreferencesUpdate.errors);\n          }\n        })\n        .catch((error) => {\n          Sentry.captureException(error);\n        });\n    },\n    updateData(sort) {\n      const firstPageSize = getParameterByName(PARAM_FIRST_PAGE_SIZE);\n      const lastPageSize = getParameterByName(PARAM_LAST_PAGE_SIZE);\n      const state = getParameterByName(PARAM_STATE);\n\n      this.filterTokens = getFilterTokens(window.location.search);\n      this.pageParams = getInitialPageParams(\n        this.pageSize,\n        isPositiveInteger(firstPageSize) ? parseInt(firstPageSize, 10) : undefined,\n        isPositiveInteger(lastPageSize) ? parseInt(lastPageSize, 10) : undefined,\n        getParameterByName(PARAM_PAGE_AFTER),\n        getParameterByName(PARAM_PAGE_BEFORE),\n      );\n      this.sortKey = deriveSortKey({ sort, state });\n      this.state = state || STATUS_OPEN;\n    },\n    isMergeRequestBroken(mergeRequest) {\n      return (\n        mergeRequest.commitCount === 0 ||\n        !mergeRequest.sourceBranchExists ||\n        !mergeRequest.targetBranchExists ||\n        mergeRequest.conflicts\n      );\n    },\n    toggleBulkEditSidebar(showBulkEditSidebar) {\n      this.showBulkEditSidebar = showBulkEditSidebar;\n    },\n    async handleBulkUpdateClick() {\n      if (!this.hasInitBulkEdit) {\n        const bulkUpdateSidebar = await import('~/issuable');\n        bulkUpdateSidebar.initBulkUpdateSidebar('issuable_');\n\n        this.hasInitBulkEdit = true;\n      }\n\n      issuableEventHub.$emit('issuables:enableBulkEdit');\n    },\n    handleUpdateLegacyBulkEdit() {\n      // If \"select all\" checkbox was checked, wait for all checkboxes\n      // to be checked before updating IssuableBulkUpdateSidebar class\n      this.$nextTick(() => {\n        issuableEventHub.$emit('issuables:updateBulkEdit');\n      });\n    },\n    targetBranchTooltip(mergeRequest) {\n      return sprintf(__('Target branch: %{target_branch}'), {\n        target_branch: mergeRequest.targetBranch,\n      });\n    },\n  },\n  STATUS_OPEN,\n};\n</script>\n\n<template>\n  <div>\n    <issuable-list\n      v-if=\"hasAnyMergeRequests\"\n      :namespace=\"fullPath\"\n      recent-searches-storage-key=\"merge_requests\"\n      :search-tokens=\"searchTokens\"\n      :has-scoped-labels-feature=\"hasScopedLabelsFeature\"\n      :initial-filter-value=\"filterTokens\"\n      :sort-options=\"sortOptions\"\n      :initial-sort-by=\"sortKey\"\n      :issuables=\"mergeRequests\"\n      issuable-symbol=\"!\"\n      :error=\"mergeRequestsError\"\n      :tabs=\"$options.mergeRequestListTabs\"\n      :current-tab=\"state\"\n      :tab-counts=\"tabCounts\"\n      :issuables-loading=\"isLoading\"\n      :show-pagination-controls=\"showPaginationControls\"\n      :default-page-size=\"pageSize\"\n      sync-filter-and-sort\n      use-keyset-pagination\n      :has-next-page=\"pageInfo.hasNextPage\"\n      :has-previous-page=\"pageInfo.hasPreviousPage\"\n      issuable-item-class=\"merge-request\"\n      :show-bulk-edit-sidebar=\"showBulkEditSidebar\"\n      @click-tab=\"handleClickTab\"\n      @next-page=\"handleNextPage\"\n      @previous-page=\"handlePreviousPage\"\n      @sort=\"handleSort\"\n      @filter=\"handleFilter\"\n      @update-legacy-bulk-edit=\"handleUpdateLegacyBulkEdit\"\n    >\n      <template #nav-actions>\n        <div class=\"gl-flex gl-gap-3\">\n          <gl-button\n            v-if=\"mergeTrainsPath\"\n            :href=\"mergeTrainsPath\"\n            data-testid=\"merge-trains\"\n            variant=\"link\"\n            class=\"gl-mr-3\"\n          >\n            {{ __('Merge trains') }}\n          </gl-button>\n          <gl-button\n            v-if=\"canBulkUpdate\"\n            class=\"gl-grow\"\n            :disabled=\"isBulkEditButtonDisabled\"\n            data-testid=\"bulk-edit\"\n            @click=\"handleBulkUpdateClick\"\n          >\n            {{ __('Bulk edit') }}\n          </gl-button>\n\n          <gl-button\n            v-if=\"newMergeRequestPath\"\n            variant=\"confirm\"\n            :href=\"newMergeRequestPath\"\n            data-testid=\"new-merge-request-button\"\n            data-event-tracking=\"click_new_merge_request_list\"\n          >\n            {{ $options.i18n.newMergeRequest }}\n          </gl-button>\n\n          <new-resource-dropdown\n            v-if=\"showNewResourceDropdown\"\n            resource-type=\"merge-request\"\n            :group-id=\"groupId\"\n            :query-variables=\"resourceDropdownQueryVariables\"\n            with-local-storage\n          />\n\n          <merge-request-more-actions-dropdown :count=\"currentTabCount\" />\n        </div>\n      </template>\n\n      <template #status=\"{ issuable = {} }\">\n        {{ getStatus(issuable) }}\n        <gl-link\n          v-if=\"issuable.state === $options.STATUS_OPEN && isMergeRequestBroken(issuable)\"\n          v-gl-tooltip\n          :href=\"issuable.webUrl\"\n          :title=\"__('Cannot be merged automatically')\"\n          data-testid=\"merge-request-cannot-merge\"\n        >\n          <gl-icon name=\"warning-solid\" variant=\"strong\" />\n        </gl-link>\n      </template>\n\n      <template #timeframe=\"{ issuable = {} }\">\n        <issuable-milestone v-if=\"issuable.milestone\" :milestone=\"issuable.milestone\" />\n      </template>\n\n      <template #target-branch=\"{ issuable = {} }\">\n        <span\n          v-if=\"defaultBranch && issuable.targetBranch !== defaultBranch\"\n          class=\"project-ref-path gl-inline-block gl-max-w-26 gl-truncate gl-align-bottom\"\n          data-testid=\"target-branch\"\n        >\n          <gl-link\n            v-gl-tooltip\n            :href=\"issuable.targetBranchPath\"\n            :title=\"targetBranchTooltip(issuable)\"\n            class=\"ref-name !gl-text-subtle\"\n          >\n            <gl-icon name=\"branch\" :size=\"12\" class=\"gl-mr-2\" />{{ issuable.targetBranch }}\n          </gl-link>\n        </span>\n      </template>\n\n      <template #discussions=\"{ issuable = {} }\">\n        <li v-if=\"issuable.resolvableDiscussionsCount\" class=\"!gl-mr-0 gl-hidden sm:gl-inline-flex\">\n          <discussions-badge :merge-request=\"issuable\" />\n        </li>\n      </template>\n\n      <template #statistics=\"{ issuable = {} }\">\n        <li\n          v-if=\"issuable.upvotes || issuable.downvotes\"\n          class=\"!gl-mr-0 gl-hidden sm:gl-inline-flex\"\n        >\n          <merge-request-statistics :merge-request=\"issuable\" class=\"gl-flex\" />\n        </li>\n      </template>\n\n      <template #approval-status=\"{ issuable = {} }\">\n        <li v-if=\"issuable.approvalsRequired || issuable.approvedBy.nodes.length\" class=\"!gl-mr-0\">\n          <approval-count :merge-request=\"issuable\" full-text class=\"gl-mt-1\" />\n        </li>\n      </template>\n\n      <template #pipeline-status=\"{ issuable = {} }\">\n        <li\n          v-if=\"issuable.headPipeline && issuable.headPipeline.detailedStatus\"\n          class=\"issuable-pipeline-status !gl-mr-0 gl-hidden sm:gl-flex\"\n        >\n          <ci-icon :status=\"issuable.headPipeline.detailedStatus\" use-link show-tooltip />\n        </li>\n      </template>\n\n      <template #reviewers=\"{ issuable = {} }\">\n        <li v-if=\"getReviewers(issuable).length\" class=\"issuable-reviewers !gl-mr-0\">\n          <merge-request-reviewers\n            :reviewers=\"getReviewers(issuable)\"\n            :icon-size=\"16\"\n            :max-visible=\"4\"\n            class=\"gl-flex gl-items-center\"\n          />\n        </li>\n      </template>\n\n      <template #empty-state>\n        <empty-state :has-search=\"hasSearch\" :is-open-tab=\"isOpenTab\" />\n      </template>\n    </issuable-list>\n    <empty-state v-else :has-merge-requests=\"false\" />\n    <issuable-by-email\n      v-if=\"initialEmail\"\n      class=\"gl-pb-7 gl-pt-5 gl-text-center\"\n      data-track-action=\"click_email_issue_project_issues_empty_merge_request_page\"\n      data-track-label=\"email_issue_project_merge_request_empty_list\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_requests_list_app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_requests_list_app.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./merge_requests_list_app.vue?vue&type=template&id=a6cae478\"\nimport script from \"./merge_requests_list_app.vue?vue&type=script&lang=js\"\nexport * from \"./merge_requests_list_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.hasAnyMergeRequests)?_c('issuable-list',{attrs:{\"namespace\":_vm.fullPath,\"recent-searches-storage-key\":\"merge_requests\",\"search-tokens\":_vm.searchTokens,\"has-scoped-labels-feature\":_vm.hasScopedLabelsFeature,\"initial-filter-value\":_vm.filterTokens,\"sort-options\":_vm.sortOptions,\"initial-sort-by\":_vm.sortKey,\"issuables\":_vm.mergeRequests,\"issuable-symbol\":\"!\",\"error\":_vm.mergeRequestsError,\"tabs\":_vm.$options.mergeRequestListTabs,\"current-tab\":_vm.state,\"tab-counts\":_vm.tabCounts,\"issuables-loading\":_vm.isLoading,\"show-pagination-controls\":_vm.showPaginationControls,\"default-page-size\":_vm.pageSize,\"sync-filter-and-sort\":\"\",\"use-keyset-pagination\":\"\",\"has-next-page\":_vm.pageInfo.hasNextPage,\"has-previous-page\":_vm.pageInfo.hasPreviousPage,\"issuable-item-class\":\"merge-request\",\"show-bulk-edit-sidebar\":_vm.showBulkEditSidebar},on:{\"click-tab\":_vm.handleClickTab,\"next-page\":_vm.handleNextPage,\"previous-page\":_vm.handlePreviousPage,\"sort\":_vm.handleSort,\"filter\":_vm.handleFilter,\"update-legacy-bulk-edit\":_vm.handleUpdateLegacyBulkEdit},scopedSlots:_vm._u([{key:\"nav-actions\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-gap-3\"},[(_vm.mergeTrainsPath)?_c('gl-button',{staticClass:\"gl-mr-3\",attrs:{\"href\":_vm.mergeTrainsPath,\"data-testid\":\"merge-trains\",\"variant\":\"link\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Merge trains'))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.canBulkUpdate)?_c('gl-button',{staticClass:\"gl-grow\",attrs:{\"disabled\":_vm.isBulkEditButtonDisabled,\"data-testid\":\"bulk-edit\"},on:{\"click\":_vm.handleBulkUpdateClick}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Bulk edit'))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.newMergeRequestPath)?_c('gl-button',{attrs:{\"variant\":\"confirm\",\"href\":_vm.newMergeRequestPath,\"data-testid\":\"new-merge-request-button\",\"data-event-tracking\":\"click_new_merge_request_list\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.newMergeRequest)+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.showNewResourceDropdown)?_c('new-resource-dropdown',{attrs:{\"resource-type\":\"merge-request\",\"group-id\":_vm.groupId,\"query-variables\":_vm.resourceDropdownQueryVariables,\"with-local-storage\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('merge-request-more-actions-dropdown',{attrs:{\"count\":_vm.currentTabCount}})],1)]},proxy:true},{key:\"status\",fn:function({ issuable = {} }){return [_vm._v(\"\\n      \"+_vm._s(_vm.getStatus(issuable))+\"\\n      \"),(issuable.state === _vm.$options.STATUS_OPEN && _vm.isMergeRequestBroken(issuable))?_c('gl-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"href\":issuable.webUrl,\"title\":_vm.__('Cannot be merged automatically'),\"data-testid\":\"merge-request-cannot-merge\"}},[_c('gl-icon',{attrs:{\"name\":\"warning-solid\",\"variant\":\"strong\"}})],1):_vm._e()]}},{key:\"timeframe\",fn:function({ issuable = {} }){return [(issuable.milestone)?_c('issuable-milestone',{attrs:{\"milestone\":issuable.milestone}}):_vm._e()]}},{key:\"target-branch\",fn:function({ issuable = {} }){return [(_vm.defaultBranch && issuable.targetBranch !== _vm.defaultBranch)?_c('span',{staticClass:\"project-ref-path gl-inline-block gl-max-w-26 gl-truncate gl-align-bottom\",attrs:{\"data-testid\":\"target-branch\"}},[_c('gl-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"ref-name !gl-text-subtle\",attrs:{\"href\":issuable.targetBranchPath,\"title\":_vm.targetBranchTooltip(issuable)}},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":\"branch\",\"size\":12}}),_vm._v(_vm._s(issuable.targetBranch)+\"\\n        \")],1)],1):_vm._e()]}},{key:\"discussions\",fn:function({ issuable = {} }){return [(issuable.resolvableDiscussionsCount)?_c('li',{staticClass:\"!gl-mr-0 gl-hidden sm:gl-inline-flex\"},[_c('discussions-badge',{attrs:{\"merge-request\":issuable}})],1):_vm._e()]}},{key:\"statistics\",fn:function({ issuable = {} }){return [(issuable.upvotes || issuable.downvotes)?_c('li',{staticClass:\"!gl-mr-0 gl-hidden sm:gl-inline-flex\"},[_c('merge-request-statistics',{staticClass:\"gl-flex\",attrs:{\"merge-request\":issuable}})],1):_vm._e()]}},{key:\"approval-status\",fn:function({ issuable = {} }){return [(issuable.approvalsRequired || issuable.approvedBy.nodes.length)?_c('li',{staticClass:\"!gl-mr-0\"},[_c('approval-count',{staticClass:\"gl-mt-1\",attrs:{\"merge-request\":issuable,\"full-text\":\"\"}})],1):_vm._e()]}},{key:\"pipeline-status\",fn:function({ issuable = {} }){return [(issuable.headPipeline && issuable.headPipeline.detailedStatus)?_c('li',{staticClass:\"issuable-pipeline-status !gl-mr-0 gl-hidden sm:gl-flex\"},[_c('ci-icon',{attrs:{\"status\":issuable.headPipeline.detailedStatus,\"use-link\":\"\",\"show-tooltip\":\"\"}})],1):_vm._e()]}},{key:\"reviewers\",fn:function({ issuable = {} }){return [(_vm.getReviewers(issuable).length)?_c('li',{staticClass:\"issuable-reviewers !gl-mr-0\"},[_c('merge-request-reviewers',{staticClass:\"gl-flex gl-items-center\",attrs:{\"reviewers\":_vm.getReviewers(issuable),\"icon-size\":16,\"max-visible\":4}})],1):_vm._e()]}},{key:\"empty-state\",fn:function(){return [_c('empty-state',{attrs:{\"has-search\":_vm.hasSearch,\"is-open-tab\":_vm.isOpenTab}})]},proxy:true}],null,false,749995883)}):_c('empty-state',{attrs:{\"has-merge-requests\":false}}),_vm._v(\" \"),(_vm.initialEmail)?_c('issuable-by-email',{staticClass:\"gl-pb-7 gl-pt-5 gl-text-center\",attrs:{\"data-track-action\":\"click_email_issue_project_issues_empty_merge_request_page\",\"data-track-label\":\"email_issue_project_merge_request_empty_list\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport VueRouter from 'vue-router';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport { defaultClient } from '~/graphql_shared/issuable_client';\nimport MergeRequestsListApp from './components/merge_requests_list_app.vue';\nimport MoreactionsDropdown from './components/more_actions_dropdown.vue';\n\nexport async function mountMergeRequestListsApp({\n  getMergeRequestsQuery,\n  getMergeRequestsCountsQuery,\n  isProject = true,\n} = {}) {\n  const el = document.querySelector('.js-merge-request-list-root');\n\n  if (!el) {\n    return null;\n  }\n\n  Vue.use(VueApollo);\n  Vue.use(VueRouter);\n\n  const {\n    autocompleteAwardEmojisPath,\n    fullPath,\n    groupId,\n    hasAnyMergeRequests,\n    hasScopedLabelsFeature,\n    initialSort,\n    isPublicVisibilityRestricted,\n    isSignedIn,\n    newMergeRequestPath,\n    showExportButton,\n    issuableType,\n    email,\n    exportCsvPath,\n    rssUrl,\n    releasesEndpoint,\n    canBulkUpdate,\n    environmentNamesPath,\n    mergeTrainsPath,\n    defaultBranch,\n    initialEmail,\n    emailsHelpPagePath,\n    quickActionsHelpPath,\n    markdownHelpPath,\n    resetPath,\n    showNewResourceDropdown,\n  } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'MergeRequestsListRoot',\n    apolloProvider: new VueApollo({\n      defaultClient,\n    }),\n    router: new VueRouter({\n      base: window.location.pathname,\n      mode: 'history',\n      routes: [{ path: '/' }],\n    }),\n    provide: {\n      fullPath,\n      autocompleteAwardEmojisPath,\n      hasAnyMergeRequests: parseBoolean(hasAnyMergeRequests),\n      hasScopedLabelsFeature: parseBoolean(hasScopedLabelsFeature),\n      initialSort,\n      isPublicVisibilityRestricted: parseBoolean(isPublicVisibilityRestricted),\n      isSignedIn: parseBoolean(isSignedIn),\n      newMergeRequestPath,\n      showExportButton: parseBoolean(showExportButton),\n      issuableType,\n      email,\n      exportCsvPath,\n      rssUrl,\n      releasesEndpoint,\n      canBulkUpdate: parseBoolean(canBulkUpdate),\n      environmentNamesPath,\n      mergeTrainsPath,\n      defaultBranch,\n      initialEmail,\n      emailsHelpPagePath,\n      quickActionsHelpPath,\n      markdownHelpPath,\n      resetPath,\n      getMergeRequestsQuery,\n      getMergeRequestsCountsQuery,\n      isProject,\n      groupId: groupId ? `${groupId}` : null,\n      showNewResourceDropdown: parseBoolean(showNewResourceDropdown),\n    },\n    render: (createComponent) => createComponent(MergeRequestsListApp),\n  });\n}\n\nexport async function mountMoreActionsDropdown() {\n  const el = document.querySelector('#js-vue-mr-list-more-actions');\n\n  if (!el) {\n    return null;\n  }\n\n  const {\n    isSignedIn,\n    showExportButton,\n    issuableType,\n    issuableCount,\n    email,\n    exportCsvPath,\n    rssUrl,\n  } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'MergeRequestsListMoreActions',\n    provide: {\n      isSignedIn: parseBoolean(isSignedIn),\n      showExportButton: parseBoolean(showExportButton),\n      issuableType,\n      issuableCount: Number(issuableCount),\n      email,\n      exportCsvPath,\n      rssUrl,\n    },\n    render: (createComponent) => createComponent(MoreactionsDropdown),\n  });\n}\n","var arrayReduce = require('./_arrayReduce'),\n    deburr = require('./deburr'),\n    words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nmodule.exports = createCompounder;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"setSortPreference\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UserPreferencesUpdateInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPreferencesUpdate\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":124}};\n    doc.loc.source = {\"body\":\"mutation setSortPreference($input: UserPreferencesUpdateInput!) {\\n  userPreferencesUpdate(input: $input) {\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"setSortPreference\"] = oneQuery(doc, \"setSortPreference\");\n        \n","import first from 'lodash/first';\nimport last from 'lodash/last';\nimport isString from 'lodash/isString';\nimport { modulo } from '../../../utils/number_utils';\n\nconst TERM_TOKEN_TYPE = 'filtered-search-term';\nconst INTENT_ACTIVATE_PREVIOUS = 'intent-activate-previous';\nconst TOKEN_CLOSE_SELECTOR = '.gl-token-close';\nfunction isEmptyTerm(token) {\n  return token.type === TERM_TOKEN_TYPE && token.value.data.trim() === '';\n}\nfunction normalizeTokens(tokens) {\n  const result = [];\n  tokens.forEach(token => {\n    if (isEmptyTerm(token)) {\n      return;\n    }\n    if (token.type !== TERM_TOKEN_TYPE) {\n      result.push({\n        ...token\n      });\n    } else if (result.length > 0 && typeof result[result.length - 1] === 'string') {\n      result[result.length - 1] += ` ${token.value.data}`;\n    } else {\n      result.push(token.value.data);\n    }\n  });\n  return result;\n}\nfunction assertValidTokens(tokens) {\n  if (!Array.isArray(tokens) && !typeof tokens === 'string') {\n    throw new TypeError('Either string or array of tokens is expected');\n  }\n}\nfunction needDenormalization(tokens) {\n  if (typeof tokens === 'string') {\n    return true;\n  }\n  assertValidTokens(tokens);\n  return tokens.some(t => typeof t === 'string' || !t.id);\n}\n\n/**\n * Given an initial index, step size and array length, returns an index that is\n * within the array bounds (unless step is 0; see † below).\n *\n * The step can be any positive or negative integer, including zero.\n *\n * An out-of-bounds index is considered 'uninitialised', and is handled\n * specially. For instance, the 'next' index of 'uninitialised' is the first\n * index:\n *\n *     stepIndexAndWrap(-1, 1, 5) === 0\n *\n * The 'previous' index of 'uninitialised' is the last index:\n *\n *     stepIndexAndWrap(-1, -1, 5) === 4\n *\n * †: If step is 0, the index is returned as-is, which may be out-of-bounds.\n *\n * @param {number} index The initial index.\n * @param {number} step The amount to step by (positive or negative).\n * @param {number} length The length of the array.\n * @returns {number}\n */\nfunction stepIndexAndWrap(index, step, length) {\n  if (step === 0) return index;\n  let start;\n  const indexInRange = index >= 0 && index < length;\n  if (indexInRange) {\n    // Step from the valid index.\n    start = index;\n  } else if (step > 0) {\n    // Step forwards from the beginning of the array.\n    start = -1;\n  } else {\n    // Step backwards from the end of the array.\n    start = length;\n  }\n  return modulo(start + step, length);\n}\n\n/**\n * Transforms a given token definition to an option definition.\n *\n * @param {Object} token A token definition (see GlFilteredSearch's\n *     availableTokens prop).\n * @returns {Object} A option definition (see GlFilteredSearchTokenSegment's\n *     options prop).\n */\nfunction tokenToOption(_ref) {\n  let {\n    icon,\n    title,\n    type,\n    optionComponent\n  } = _ref;\n  return {\n    icon,\n    title,\n    value: type,\n    component: optionComponent\n  };\n}\nlet tokenIdCounter = 0;\nconst getTokenId = () => {\n  const tokenId = `token-${tokenIdCounter}`;\n  tokenIdCounter += 1;\n  return tokenId;\n};\n/**\n * Ensure the given token has an `id` property, which `GlFilteredSearch` relies\n * on as a unique key for the token.\n *\n * If the given token does not have an `id`, it returns a shallow copy of the\n * token with an `id`. Otherwise, it returns the given token.\n *\n * @param {object} token The token to check.\n * @returns {object} A token with an `id`.\n */\nfunction ensureTokenId(token) {\n  if (!token.id) {\n    return {\n      ...token,\n      id: getTokenId()\n    };\n  }\n  return token;\n}\nfunction createTerm() {\n  let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  return {\n    id: getTokenId(),\n    type: TERM_TOKEN_TYPE,\n    value: {\n      data\n    }\n  };\n}\nfunction denormalizeTokens(inputTokens) {\n  let termsAsTokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  assertValidTokens(inputTokens);\n  const tokens = Array.isArray(inputTokens) ? inputTokens : [inputTokens];\n  return tokens.reduce((result, t) => {\n    if (typeof t === 'string') {\n      if (termsAsTokens) {\n        const trimmedText = t.trim();\n        if (trimmedText) result.push(createTerm(trimmedText));\n      } else {\n        const stringTokens = t.split(' ').filter(Boolean);\n        stringTokens.forEach(strToken => result.push(createTerm(strToken)));\n      }\n    } else {\n      result.push(ensureTokenId(t));\n    }\n    return result;\n  }, []);\n}\n\n/**\n * Returns `true` if `text` contains `query` (case insensitive).\n *\n * This is used in `filter` and `find` array methods for token segment options.\n *\n * @param {string} text The string to look within.\n * @param {string} query The string to find inside the text.\n * @returns {boolean}\n */\nfunction match(text, query) {\n  return text.toLowerCase().includes(query.toLowerCase());\n}\nconst termTokenDefinition = {\n  type: TERM_TOKEN_TYPE,\n  icon: 'title',\n  title: 'Search for this text'\n};\nfunction splitOnQuotes(str) {\n  if (first(str) === \"'\" && last(str) === \"'\") {\n    return [str];\n  }\n  if (first(str) === '\"' && last(str) === '\"') {\n    return [str];\n  }\n  const queue = str.split(' ');\n  const result = [];\n  let waitingForMatchingQuote = false;\n  let quoteContent = '';\n  while (queue.length) {\n    const part = queue.shift();\n    const quoteIndex = part.indexOf('\"');\n    if (quoteIndex === -1) {\n      if (waitingForMatchingQuote) {\n        quoteContent += ` ${part}`;\n      } else {\n        result.push(part);\n      }\n    } else {\n      const [firstPart, secondPart] = part.split('\"', 2);\n      if (waitingForMatchingQuote) {\n        waitingForMatchingQuote = false;\n        quoteContent += ` ${firstPart}\"`;\n        result.push(quoteContent);\n        quoteContent = '';\n        if (secondPart.length) {\n          queue.unshift(secondPart);\n        }\n      } else {\n        waitingForMatchingQuote = true;\n        if (firstPart.length) {\n          result.push(firstPart);\n        }\n        quoteContent = `\"${secondPart}`;\n      }\n    }\n  }\n  return result;\n}\n\n/**\n *  wraps the incoming token in double quotes.\n *  Eg. Foo Bar becomes \"Foo Bar\"\n *\n *  1. token must have space.\n *  2. token should not already have a quote around it.\n */\nfunction wrapTokenInQuotes(token) {\n  if (!isString(token)) {\n    return token;\n  }\n  if (!token.includes(' ')) {\n    return token;\n  }\n  const quotes = [\"'\", '\"'];\n\n  // If the token starts and ends with a quote, eg. \"Foo Bar\", then return the original token.\n  if (quotes.some(quote => first(token) === quote && last(token) === quote)) {\n    return token;\n  }\n  return `\"${token}\"`;\n}\n\nexport { INTENT_ACTIVATE_PREVIOUS, TERM_TOKEN_TYPE, TOKEN_CLOSE_SELECTOR, createTerm, denormalizeTokens, ensureTokenId, isEmptyTerm, match, needDenormalization, normalizeTokens, splitOnQuotes, stepIndexAndWrap, termTokenDefinition, tokenToOption, wrapTokenInQuotes };\n","var baseDifference = require('./_baseDifference'),\n    baseFlatten = require('./_baseFlatten'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n    : [];\n});\n\nmodule.exports = difference;\n","import GlBaseAnimatedIcon from './base_animated_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlAnimatedNotificationIcon',\n  extends: GlBaseAnimatedIcon\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('svg',{class:_vm.iconStateClass,attrs:{\"aria-label\":_vm.ariaLabel,\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{staticClass:\"gl-animated-notifications-bottom-part\",attrs:{\"d\":\"M3.72 11.25L2.35519 12.837C2.21579 12.9991 2.33095 13.25 2.54473 13.25H13.4428C13.6586 13.25 13.773 12.995 13.6296 12.8338L12.22 11.25V7C12.22 6.06556 11.9184 5.20155 11.4073 4.5\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-notifications-top-part\",attrs:{\"d\":\"M3.72 11.75V7C3.72 4.65279 5.62279 2.75 7.97 2.75C9.38277 2.75 10.6345 3.43933 11.4073 4.5\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-notifications-line\",attrs:{\"d\":\"M1.75 14.25L14.2461 1.75391\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M6 13H10V13C10 14.1046 9.10457 15 8 15V15C6.89543 15 6 14.1046 6 13V13Z\",\"fill\":\"currentColor\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M7 2C7 1.44772 7.44772 1 8 1V1C8.55228 1 9 1.44772 9 2V2C9 2.55228 8.55228 3 8 3V3C7.44772 3 7 2.55228 7 2V2Z\",\"fill\":\"currentColor\"}})])};\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","// These utility methods come from the Gitlab repo; app/assets/javascripts/lib/utils/datetime_utility.js\n\n/**\n * This method allows you to create new Date instance from existing\n * date instance without keeping the reference.\n *\n * @param {Date} date\n */\nconst newDate = date => date instanceof Date ? new Date(date.getTime()) : new Date();\n\n/**\n * Computes the difference between 2 date objects.\n *\n * @param {Date} a the start date\n * @param {Date} b the end date\n * @example\n * // returns 5\n * getDayDifference(new Date('2020-08-10'), new Date('2020-08-15'));\n * @returns {Number} Number of days between the 2 dates\n */\nconst getDayDifference = (a, b) => {\n  const millisecondsPerDay = 1000 * 60 * 60 * 24;\n  const date1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());\n  const date2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());\n  return Math.floor((date2 - date1) / millisecondsPerDay);\n};\n\n/**\n * Subtracts a given number of days from a given date and returns the new date.\n *\n * @param {Date} date the date that we will substract days from\n * @param {Number} daysInPast number of days that are subtracted from a given date\n * @example\n * // returns Mon Aug 10 2020 00:00:00\n * getDateInPast(new Date('2020-08-15'), 5);\n * @returns {Date} Date in past as Date object\n */\nconst getDateInPast = (date, daysInPast) => new Date(newDate(date).setDate(date.getDate() - daysInPast));\n\n/**\n * Adds a given number of days to a given date and returns the new date.\n *\n * @param {Date} date the date that we will add days to\n * @param {Number} daysInFuture number of days that are added to a given date\n * @example\n * // returns Mon Aug 15 2020 00:00:00\n * getDateInFuture(new Date('2020-08-10'), 5);\n * @returns {Date} Date in future as Date object\n */\nconst getDateInFuture = (date, daysInFuture) => new Date(newDate(date).setDate(date.getDate() + daysInFuture));\n\n/**\n * Are the given two dates equal\n *\n * @param {Date} date1\n * @param {Date} date2\n * @returns {Boolean}\n */\nconst areDatesEqual = (date1, date2) => Boolean(date1 && date2 && new Date(date1).getTime() === new Date(date2).getTime());\n\nexport { areDatesEqual, getDateInFuture, getDateInPast, getDayDifference, newDate };\n","import GlBaseAnimatedIcon from './base_animated_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlAnimatedTodoIcon',\n  extends: GlBaseAnimatedIcon\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('svg',{class:_vm.iconStateClass,attrs:{\"aria-label\":_vm.ariaLabel,\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{staticClass:\"gl-animated-todo-box\",attrs:{\"d\":\"M14.25 6.75L14.25 13C14.25 13.6904 13.6904 14.25 13 14.25L3 14.25C2.30964 14.25 1.75 13.6904 1.75 13L1.75 3C1.75 2.30964 2.30964 1.75 3 1.75L13.25 1.75\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-todo-plus-line\",attrs:{\"d\":\"M10.75 3L15.25 3\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-todo-plus-line\",attrs:{\"d\":\"M13 5.25L13 0.75\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-todo-check\",attrs:{\"d\":\"M6.75 7.76299L9.15312 10.2469L15.25 4.15\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])};\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 basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var baseFlatten = require('./_baseFlatten'),\n    baseRest = require('./_baseRest'),\n    baseUniq = require('./_baseUniq'),\n    isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","var asciiWords = require('./_asciiWords'),\n    hasUnicodeWord = require('./_hasUnicodeWord'),\n    toString = require('./toString'),\n    unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { translate } from '../../../utils/i18n';\nimport { progressBarVariantOptions } from '../../../utils/constants';\nimport { toFloat } from '../../../utils/number_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst backgroundClasses = {\n  [progressBarVariantOptions.primary]: 'gl-progress-bar-primary',\n  [progressBarVariantOptions.success]: 'gl-progress-bar-success',\n  [progressBarVariantOptions.danger]: 'gl-progress-bar-danger',\n  [progressBarVariantOptions.warning]: 'gl-progress-bar-warning'\n};\nvar script = {\n  name: 'GlProgressBar',\n  props: {\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: translate('GlProgressBar.ariaLabel', 'Progress bar')\n    },\n    value: {\n      type: [Number, String],\n      required: false,\n      default: 0\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: 'primary',\n      validator: value => Object.keys(progressBarVariantOptions).includes(value)\n    },\n    max: {\n      type: [Number, String],\n      required: false,\n      default: 100\n    },\n    height: {\n      type: String,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    progressHeight() {\n      return {\n        height: this.height\n      };\n    },\n    computedValue() {\n      return toFloat(this.value, 0);\n    },\n    computedMax() {\n      const max = toFloat(this.max, 100);\n      return max > 0 ? max : 100;\n    },\n    progressBarStyles() {\n      return {\n        transform: `scaleX(${this.computedValue / this.computedMax})`\n      };\n    },\n    classes() {\n      return ['gl-progress', backgroundClasses[this.variant]];\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-progress-bar progress\",style:(_vm.progressHeight)},[_c('div',{class:_vm.classes,style:(_vm.progressBarStyles),attrs:{\"role\":\"progressbar\",\"aria-label\":_vm.ariaLabel,\"aria-valuemin\":\"0\",\"aria-valuemax\":String(_vm.computedMax),\"aria-valuenow\":_vm.computedValue}})])};\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","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","/**\n * Map<HTMLElement, { callback: Function, eventTypes: Array<string> }>\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<string>}\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","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isButtonTrigger)?_c('gl-button',_vm._b({attrs:{\"variant\":_vm.variant,\"category\":_vm.category,\"icon\":_vm.icon},on:{\"click\":_vm.openModal}},'gl-button',_vm.componentAttributes,false),[_vm._v(\"\\n  \"+_vm._s(_vm.displayText)+\"\\n\")]):(_vm.isWithEmojiTrigger)?_c('gl-link',_vm._b({on:{\"click\":_vm.openModal}},'gl-link',_vm.componentAttributes,false),[_vm._v(\"\\n  \"+_vm._s(_vm.displayText)+\"\\n  \"),_c('gl-emoji',{staticClass:\"gl-mr-1 gl-align-baseline gl-text-size-reset\",attrs:{\"data-name\":_vm.icon}})],1):(_vm.isDropdownWithEmojiTrigger)?_c('gl-dropdown-item',_vm._b({on:{\"click\":_vm.openModal}},'gl-dropdown-item',_vm.componentAttributes,false),[_vm._v(\"\\n  \"+_vm._s(_vm.displayText)+\"\\n  \"),_c('gl-emoji',{staticClass:\"gl-mr-1 gl-align-baseline gl-text-size-reset\",attrs:{\"data-name\":_vm.icon}})],1):(_vm.isDisclosureTrigger)?_c('gl-disclosure-dropdown-item',_vm._b({attrs:{\"item\":_vm.item},on:{\"action\":_vm.handleDisclosureDropdownAction}},'gl-disclosure-dropdown-item',_vm.componentAttributes,false)):_c('gl-link',_vm._b({attrs:{\"data-is-link\":\"true\"},on:{\"click\":_vm.openModal}},'gl-link',_vm.componentAttributes,false),[_vm._v(\"\\n  \"+_vm._s(_vm.displayText)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./invite_members_trigger.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./invite_members_trigger.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLink, GlDropdownItem, GlDisclosureDropdownItem } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport eventHub from '../event_hub';\nimport {\n  TRIGGER_ELEMENT_BUTTON,\n  TRIGGER_ELEMENT_WITH_EMOJI,\n  TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI,\n  TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN,\n} from '../constants';\n\nexport default {\n  components: { GlButton, GlLink, GlDropdownItem, GlDisclosureDropdownItem },\n  props: {\n    displayText: {\n      type: String,\n      required: false,\n      default: s__('InviteMembers|Invite team members'),\n    },\n    icon: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    classes: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    category: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    triggerSource: {\n      type: String,\n      required: true,\n    },\n    triggerElement: {\n      type: String,\n      required: false,\n      default: 'button',\n    },\n  },\n  computed: {\n    componentAttributes() {\n      return {\n        class: this.classes,\n        'data-testid': 'invite-members-button',\n      };\n    },\n    item() {\n      return { text: this.displayText };\n    },\n    isButtonTrigger() {\n      return this.triggerElement === TRIGGER_ELEMENT_BUTTON;\n    },\n    isWithEmojiTrigger() {\n      return this.triggerElement === TRIGGER_ELEMENT_WITH_EMOJI;\n    },\n    isDropdownWithEmojiTrigger() {\n      return this.triggerElement === TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI;\n    },\n    isDisclosureTrigger() {\n      return this.triggerElement === TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN;\n    },\n  },\n  methods: {\n    openModal() {\n      eventHub.$emit('openModal', { source: this.triggerSource });\n    },\n    handleDisclosureDropdownAction() {\n      this.openModal();\n      this.$emit('modal-opened');\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-button\n    v-if=\"isButtonTrigger\"\n    v-bind=\"componentAttributes\"\n    :variant=\"variant\"\n    :category=\"category\"\n    :icon=\"icon\"\n    @click=\"openModal\"\n  >\n    {{ displayText }}\n  </gl-button>\n  <gl-link v-else-if=\"isWithEmojiTrigger\" v-bind=\"componentAttributes\" @click=\"openModal\">\n    {{ displayText }}\n    <gl-emoji class=\"gl-mr-1 gl-align-baseline gl-text-size-reset\" :data-name=\"icon\" />\n  </gl-link>\n  <gl-dropdown-item\n    v-else-if=\"isDropdownWithEmojiTrigger\"\n    v-bind=\"componentAttributes\"\n    @click=\"openModal\"\n  >\n    {{ displayText }}\n    <gl-emoji class=\"gl-mr-1 gl-align-baseline gl-text-size-reset\" :data-name=\"icon\" />\n  </gl-dropdown-item>\n  <gl-disclosure-dropdown-item\n    v-else-if=\"isDisclosureTrigger\"\n    v-bind=\"componentAttributes\"\n    :item=\"item\"\n    @action=\"handleDisclosureDropdownAction\"\n  />\n  <gl-link v-else v-bind=\"componentAttributes\" data-is-link=\"true\" @click=\"openModal\">\n    {{ displayText }}\n  </gl-link>\n</template>\n","import { render, staticRenderFns } from \"./invite_members_trigger.vue?vue&type=template&id=cb0ec660\"\nimport script from \"./invite_members_trigger.vue?vue&type=script&lang=js\"\nexport * from \"./invite_members_trigger.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { STATUS_ALL, STATUS_CLOSED, STATUS_OPEN, STATUS_MERGED } from '~/issues/constants';\nimport { __ } from '~/locale';\n\nexport const issuableListTabs = [\n  {\n    id: 'state-opened',\n    name: STATUS_OPEN,\n    title: __('Open'),\n    titleTooltip: __('Filter by issues that are currently opened.'),\n  },\n  {\n    id: 'state-closed',\n    name: STATUS_CLOSED,\n    title: __('Closed'),\n    titleTooltip: __('Filter by issues that are currently closed.'),\n  },\n  {\n    id: 'state-all',\n    name: STATUS_ALL,\n    title: __('All'),\n    titleTooltip: __('Show all issues.'),\n  },\n];\n\nexport const mergeRequestListTabs = [\n  {\n    id: 'state-opened',\n    name: STATUS_OPEN,\n    title: __('Open'),\n    titleTooltip: __('Filter by merge requests that are currently opened.'),\n  },\n  {\n    id: 'state-merged',\n    name: STATUS_MERGED,\n    title: __('Merged'),\n    titleTooltip: __('Filter by merge requests that are merged.'),\n  },\n  {\n    id: 'state-closed',\n    name: STATUS_CLOSED,\n    title: __('Closed'),\n    titleTooltip: __('Filter by merge requests that are currently closed.'),\n  },\n  {\n    id: 'state-all',\n    name: STATUS_ALL,\n    title: __('All'),\n    titleTooltip: __('Show all merge requests.'),\n  },\n];\n\nexport const availableSortOptions = [\n  {\n    id: 1,\n    title: __('Created date'),\n    sortDirection: {\n      descending: 'created_desc',\n      ascending: 'created_asc',\n    },\n  },\n  {\n    id: 2,\n    title: __('Updated date'),\n    sortDirection: {\n      descending: 'updated_desc',\n      ascending: 'updated_asc',\n    },\n  },\n];\n\nexport const DEFAULT_PAGE_SIZE = 20;\n\nexport const DEFAULT_SKELETON_COUNT = 5;\n\nexport const PAGE_SIZE_STORAGE_KEY = 'issuable_list_page_size';\n","import { closest, getAttr, getById, select, matches } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\n\nconst TABLE_TAG_NAMES = ['TD', 'TH', 'TR'];\n\n// Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\nconst filterEvent = event => {\n  // Exit early when we don't have a target element\n  if (!event || !event.target) {\n    /* istanbul ignore next */\n    return false;\n  }\n  const el = event.target;\n  // Exit early when element is disabled or a table element\n  if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n    return false;\n  }\n  // Ignore the click when it was inside a dropdown menu\n  if (closest('.dropdown-menu', el)) {\n    return true;\n  }\n  const label = el.tagName === 'LABEL' ? el : closest('label', el);\n  // If the label's form control is not disabled then we don't propagate event\n  // Modern browsers have `label.control` that references the associated input, but IE 11\n  // does not have this property on the label element, so we resort to DOM lookups\n  if (label) {\n    const labelFor = getAttr(label, 'for');\n    const input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n    if (input && !input.disabled) {\n      return true;\n    }\n  }\n  // Otherwise check if the event target matches one of the selectors in the\n  // event filter (i.e. anchors, non disabled inputs, etc.)\n  // Return `true` if we should ignore the event\n  return matches(el, EVENT_FILTER);\n};\n\nexport { filterEvent };\n","import GlDropdownItem from '../dropdown/dropdown_item';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlFilteredSearchSuggestion',\n  components: {\n    GlDropdownItem\n  },\n  inject: ['filteredSearchSuggestionListInstance'],\n  inheritAttrs: false,\n  props: {\n    /**\n     * Value that will be emitted if this suggestion is selected.\n     */\n    value: {\n      required: true,\n      validator: () => true\n    }\n  },\n  computed: {\n    isActive() {\n      return this.filteredSearchSuggestionListInstance.activeItem === this;\n    }\n  },\n  watch: {\n    isActive(newValue) {\n      if (newValue) {\n        window.requestAnimationFrame(() => {\n          var _this$$refs$item, _this$$refs$item$$el;\n          (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : (_this$$refs$item$$el = _this$$refs$item.$el) === null || _this$$refs$item$$el === void 0 ? void 0 : _this$$refs$item$$el.scrollIntoView({\n            block: 'nearest',\n            inline: 'end'\n          });\n        });\n      }\n    }\n  },\n  created() {\n    this.filteredSearchSuggestionListInstance.register(this);\n  },\n  beforeDestroy() {\n    this.filteredSearchSuggestionListInstance.unregister(this);\n  },\n  methods: {\n    emitValue() {\n      // We use href argument for gl-dropdown-item to use <a> instead of <button>\n      // due to https://bugs.webkit.org/show_bug.cgi?id=22261\n      this.filteredSearchSuggestionListInstance.$emit('suggestion', this.value);\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-dropdown-item',_vm._b({ref:\"item\",staticClass:\"gl-filtered-search-suggestion\",class:{ 'gl-filtered-search-suggestion-active': _vm.isActive },attrs:{\"data-testid\":\"filtered-search-suggestion\",\"tabindex\":\"-1\",\"href\":\"#\"},nativeOn:{\"mousedown\":function($event){$event.preventDefault();return _vm.emitValue.apply(null, arguments)}}},'gl-dropdown-item',_vm.$attrs,false),[_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 { NAME_MODAL } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { matches, select, hasAttr, setAttr, getAttr, isDisabled } from '../../utils/dom';\nimport { getRootActionEventName, eventOff, eventOn } from '../../utils/events';\nimport { isString } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport { getEventRoot } from '../../utils/get-event-root';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\n\n// Emitted show event for modal\nconst ROOT_ACTION_EVENT_NAME_SHOW = getRootActionEventName(NAME_MODAL, EVENT_NAME_SHOW);\n\n// Prop name we use to store info on root element\nconst PROPERTY = '__bv_modal_directive__';\nconst getTarget = _ref => {\n  let {\n    modifiers = {},\n    arg,\n    value\n  } = _ref;\n  // Try value, then arg, otherwise pick last modifier\n  return isString(value) ? value : isString(arg) ? arg : keys(modifiers).reverse()[0];\n};\nconst getTriggerElement = el => {\n  // If root element is a dropdown-item or nav-item, we\n  // need to target the inner link or button instead\n  return el && matches(el, '.dropdown-menu > li, li.nav-item') ? select('a, button', el) || el : el;\n};\nconst setRole = trigger => {\n  // Ensure accessibility on non button elements\n  if (trigger && trigger.tagName !== 'BUTTON') {\n    // Only set a role if the trigger element doesn't have one\n    if (!hasAttr(trigger, 'role')) {\n      setAttr(trigger, 'role', 'button');\n    }\n    // Add a tabindex is not a button or link, and tabindex is not provided\n    if (trigger.tagName !== 'A' && !hasAttr(trigger, 'tabindex')) {\n      setAttr(trigger, 'tabindex', '0');\n    }\n  }\n};\nconst bind = (el, binding, vnode) => {\n  const target = getTarget(binding);\n  const trigger = getTriggerElement(el);\n  if (target && trigger) {\n    const handler = event => {\n      // `currentTarget` is the element with the listener on it\n      const currentTarget = event.currentTarget;\n      if (!isDisabled(currentTarget)) {\n        const type = event.type;\n        const key = event.keyCode;\n        // Open modal only if trigger is not disabled\n        if (type === 'click' || type === 'keydown' && (key === CODE_ENTER || key === CODE_SPACE)) {\n          getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_SHOW, target, currentTarget);\n        }\n      }\n    };\n    el[PROPERTY] = {\n      handler,\n      target,\n      trigger\n    };\n    // If element is not a button, we add `role=\"button\"` for accessibility\n    setRole(trigger);\n    // Listen for click events\n    eventOn(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    if (trigger.tagName !== 'BUTTON' && getAttr(trigger, 'role') === 'button') {\n      // If trigger isn't a button but has role button,\n      // we also listen for `keydown.space` && `keydown.enter`\n      eventOn(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    }\n  }\n};\nconst unbind = el => {\n  const oldProp = el[PROPERTY] || {};\n  const trigger = oldProp.trigger;\n  const handler = oldProp.handler;\n  if (trigger && handler) {\n    eventOff(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n  }\n  delete el[PROPERTY];\n};\nconst componentUpdated = (el, binding, vnode) => {\n  const oldProp = el[PROPERTY] || {};\n  const target = getTarget(binding);\n  const trigger = getTriggerElement(el);\n  if (target !== oldProp.target || trigger !== oldProp.trigger) {\n    // We bind and rebind if the target or trigger changes\n    unbind(el);\n    bind(el, binding, vnode);\n  }\n  // If trigger element is not a button, ensure `role=\"button\"`\n  // is still set for accessibility\n  setRole(trigger);\n};\nconst updated = () => {};\n\n/*\n * Export our directive\n */\nconst VBModal = {\n  inserted: componentUpdated,\n  updated,\n  componentUpdated,\n  unbind\n};\n\nexport { VBModal };\n","import isEmpty from 'lodash/isEmpty';\nimport { maxZIndex, drawerVariants } from '../../../utils/constants';\nimport GlButton from '../button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlDrawer',\n  components: {\n    GlButton\n  },\n  props: {\n    open: {\n      type: Boolean,\n      required: true\n    },\n    headerHeight: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    headerSticky: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    zIndex: {\n      type: Number,\n      required: false,\n      default: maxZIndex\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: drawerVariants.default,\n      validator: value => Object.keys(drawerVariants).includes(value)\n    }\n  },\n  computed: {\n    positionFromTop() {\n      return !isEmpty(this.headerHeight) ? this.headerHeight : 0;\n    },\n    drawerStyles() {\n      const styles = {\n        top: this.positionFromTop,\n        zIndex: this.zIndex\n      };\n      if (this.positionFromTop) {\n        styles.maxHeight = `calc(100vh - ${this.positionFromTop})`;\n      }\n      return styles;\n    },\n    drawerHeaderStyles() {\n      return {\n        zIndex: this.headerSticky ? maxZIndex : null\n      };\n    },\n    shouldRenderFooter() {\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return Boolean(this.$slots.footer);\n    },\n    variantClass() {\n      // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n      return `gl-drawer-${this.variant}`;\n    }\n  },\n  watch: {\n    open: {\n      immediate: true,\n      handler(open) {\n        if (open) {\n          document.addEventListener('keydown', this.handleEscape);\n        } else {\n          document.removeEventListener('keydown', this.handleEscape);\n        }\n      }\n    }\n  },\n  beforeDestroy() {\n    document.removeEventListener('keydown', this.handleEscape);\n  },\n  methods: {\n    emitOpened() {\n      /**\n       * Emits when the opening animation has finished.\n       * @event opened\n       */\n      this.$emit('opened');\n    },\n    handleEscape(e) {\n      const ESC = 27;\n      if (this.open && e.keyCode === ESC) {\n        this.$emit('close');\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('transition',{attrs:{\"name\":\"gl-drawer\"},on:{\"after-enter\":_vm.emitOpened}},[(_vm.open)?_c('aside',{staticClass:\"gl-drawer\",class:_vm.variantClass,style:(_vm.drawerStyles)},[_c('div',{staticClass:\"gl-drawer-header\",class:{ 'gl-drawer-header-sticky': _vm.headerSticky },style:(_vm.drawerHeaderStyles)},[_c('div',{staticClass:\"gl-drawer-title\"},[_vm._t(\"title\"),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-drawer-close-button\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"icon\":\"close\",\"aria-label\":\"Close drawer\"},on:{\"click\":function($event){return _vm.$emit('close')}}})],2),_vm._v(\" \"),_vm._t(\"header\")],2),_vm._v(\" \"),_c('div',{staticClass:\"gl-drawer-body\",class:{ 'gl-drawer-body-scrim': !_vm.shouldRenderFooter }},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.shouldRenderFooter)?_c('div',{staticClass:\"gl-drawer-footer gl-drawer-footer-sticky\",class:{ 'gl-drawer-body-scrim-on-footer': _vm.shouldRenderFooter },style:({ zIndex: _vm.zIndex })},[_vm._t(\"footer\")],2):_vm._e()]):_vm._e()])};\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",";(function (window) {\n    \"use strict\";\n\n    var lastTimer = -1;\n\n    var install = function (Visibility) {\n\n        // Run callback every `interval` milliseconds if page is visible and\n        // every `hiddenInterval` milliseconds if page is hidden.\n        //\n        //   Visibility.every(60 * 1000, 5 * 60 * 1000, function () {\n        //       checkNewMails();\n        //   });\n        //\n        // You can skip `hiddenInterval` and callback will be called only if\n        // page is visible.\n        //\n        //   Visibility.every(1000, function () {\n        //       updateCountdown();\n        //   });\n        //\n        // It is analog of `setInterval(callback, interval)` but use visibility\n        // state.\n        //\n        // It return timer ID, that you can use in `Visibility.stop(id)` to stop\n        // timer (`clearInterval` analog).\n        // Warning: timer ID is different from interval ID from `setInterval`,\n        // so don’t use it in `clearInterval`.\n        //\n        // On change state from hidden to visible timers will be execute.\n        Visibility.every = function (interval, hiddenInterval, callback) {\n            Visibility._time();\n\n            if ( !callback ) {\n                callback = hiddenInterval;\n                hiddenInterval = null;\n            }\n\n            lastTimer += 1;\n            var number = lastTimer;\n\n            Visibility._timers[number] = {\n                visible:  interval,\n                hidden:   hiddenInterval,\n                callback: callback\n            };\n            Visibility._run(number, false);\n\n            if ( Visibility.isSupported() ) {\n                Visibility._listen();\n            }\n            return number;\n        };\n\n        // Stop timer from `every` method by it ID (`every` method return it).\n        //\n        //   slideshow = Visibility.every(5 * 1000, function () {\n        //       changeSlide();\n        //   });\n        //   $('.stopSlideshow').click(function () {\n        //       Visibility.stop(slideshow);\n        //   });\n        Visibility.stop = function(id) {\n            if ( !Visibility._timers[id] ) {\n                return false;\n            }\n            Visibility._stop(id);\n            delete Visibility._timers[id];\n            return true;\n        };\n\n        // Callbacks and intervals added by `every` method.\n        Visibility._timers = { };\n\n        // Initialize variables on page loading.\n        Visibility._time = function () {\n            if ( Visibility._timed ) {\n                return;\n            }\n            Visibility._timed     = true;\n            Visibility._wasHidden = Visibility.hidden();\n\n            Visibility.change(function () {\n                Visibility._stopRun();\n                Visibility._wasHidden = Visibility.hidden();\n            });\n        };\n\n        // Try to run timer from every method by it’s ID. It will be use\n        // `interval` or `hiddenInterval` depending on visibility state.\n        // If page is hidden and `hiddenInterval` is null,\n        // it will not run timer.\n        //\n        // Argument `runNow` say, that timers must be execute now too.\n        Visibility._run = function (id, runNow) {\n            var interval,\n                timer = Visibility._timers[id];\n\n            if ( Visibility.hidden() ) {\n                if ( null === timer.hidden ) {\n                    return;\n                }\n                interval = timer.hidden;\n            } else {\n                interval = timer.visible;\n            }\n\n            var runner = function () {\n                timer.last = new Date();\n                timer.callback.call(window);\n            }\n\n            if ( runNow ) {\n                var now  = new Date();\n                var last = now - timer.last ;\n\n                if ( interval > last ) {\n                    timer.delay = setTimeout(function () {\n                        timer.id = setInterval(runner, interval);\n                        runner();\n                    }, interval - last);\n                } else {\n                    timer.id = setInterval(runner, interval);\n                    runner();\n                }\n\n            } else {\n              timer.id = setInterval(runner, interval);\n            }\n        };\n\n        // Stop timer from `every` method by it’s ID.\n        Visibility._stop = function (id) {\n            var timer = Visibility._timers[id];\n            clearInterval(timer.id);\n            clearTimeout(timer.delay);\n            delete timer.id;\n            delete timer.delay;\n        };\n\n        // Listener for `visibilitychange` event.\n        Visibility._stopRun = function (event) {\n            var isHidden  = Visibility.hidden(),\n                wasHidden = Visibility._wasHidden;\n\n            if ( (isHidden && !wasHidden) || (!isHidden && wasHidden) ) {\n                for ( var i in Visibility._timers ) {\n                    Visibility._stop(i);\n                    Visibility._run(i, !isHidden);\n                }\n            }\n        };\n\n        return Visibility;\n    }\n\n    if ( typeof(module) != 'undefined' && module.exports ) {\n        module.exports = install(require('./visibility.core'));\n    } else {\n        install(window.Visibility)\n    }\n\n})(window);\n","import { BFormRadio } from '../../../../vendor/bootstrap-vue/src/components/form-radio/form-radio';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst {\n  model\n} = BFormRadio.options;\nvar script = {\n  name: 'GlFormRadio',\n  components: {\n    BFormRadio\n  },\n  inheritAttrs: false,\n  model: {\n    prop: model.prop,\n    event: model.event\n  },\n  props: {\n    /**\n     * Whether the radio is checked\n     */\n    checked: {\n      type: [String, Number, Boolean, Object],\n      required: false,\n      default: false\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-radio',_vm._b({staticClass:\"gl-form-radio\",attrs:{\"checked\":_vm.checked},on:{\"input\":function($event){return _vm.$emit('input', $event)},\"change\":function($event){return _vm.$emit('change', $event)}}},'b-form-radio',_vm.$attrs,false),[_vm._t(\"default\"),_vm._v(\" \"),(_vm.$scopedSlots.help)?_c('p',{staticClass:\"help-text\"},[_vm._t(\"help\")],2):_vm._e()],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var baseForOwn = require('./_baseForOwn');\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n  baseForOwn(object, function(value, key, object) {\n    setter(accumulator, iteratee(value), key, object);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseInverter;\n","(function() {\n  var Query, defaultPathSeparator, filter, matcher, parseOptions, pathScorer, preparedQueryCache, scorer;\n\n  filter = require('./filter');\n\n  matcher = require('./matcher');\n\n  scorer = require('./scorer');\n\n  pathScorer = require('./pathScorer');\n\n  Query = require('./query');\n\n  preparedQueryCache = null;\n\n  defaultPathSeparator = (typeof process !== \"undefined\" && process !== null ? process.platform : void 0) === \"win32\" ? '\\\\' : '/';\n\n  module.exports = {\n    filter: function(candidates, query, options) {\n      if (options == null) {\n        options = {};\n      }\n      if (!((query != null ? query.length : void 0) && (candidates != null ? candidates.length : void 0))) {\n        return [];\n      }\n      options = parseOptions(options, query);\n      return filter(candidates, query, options);\n    },\n    score: function(string, query, options) {\n      if (options == null) {\n        options = {};\n      }\n      if (!((string != null ? string.length : void 0) && (query != null ? query.length : void 0))) {\n        return 0;\n      }\n      options = parseOptions(options, query);\n      if (options.usePathScoring) {\n        return pathScorer.score(string, query, options);\n      } else {\n        return scorer.score(string, query, options);\n      }\n    },\n    match: function(string, query, options) {\n      var _i, _ref, _results;\n      if (options == null) {\n        options = {};\n      }\n      if (!string) {\n        return [];\n      }\n      if (!query) {\n        return [];\n      }\n      if (string === query) {\n        return (function() {\n          _results = [];\n          for (var _i = 0, _ref = string.length; 0 <= _ref ? _i < _ref : _i > _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); }\n          return _results;\n        }).apply(this);\n      }\n      options = parseOptions(options, query);\n      return matcher.match(string, query, options);\n    },\n    wrap: function(string, query, options) {\n      if (options == null) {\n        options = {};\n      }\n      if (!string) {\n        return [];\n      }\n      if (!query) {\n        return [];\n      }\n      options = parseOptions(options, query);\n      return matcher.wrap(string, query, options);\n    },\n    prepareQuery: function(query, options) {\n      if (options == null) {\n        options = {};\n      }\n      options = parseOptions(options, query);\n      return options.preparedQuery;\n    }\n  };\n\n  parseOptions = function(options, query) {\n    if (options.allowErrors == null) {\n      options.allowErrors = false;\n    }\n    if (options.usePathScoring == null) {\n      options.usePathScoring = true;\n    }\n    if (options.useExtensionBonus == null) {\n      options.useExtensionBonus = false;\n    }\n    if (options.pathSeparator == null) {\n      options.pathSeparator = defaultPathSeparator;\n    }\n    if (options.optCharRegEx == null) {\n      options.optCharRegEx = null;\n    }\n    if (options.wrap == null) {\n      options.wrap = null;\n    }\n    if (options.preparedQuery == null) {\n      options.preparedQuery = preparedQueryCache && preparedQueryCache.query === query ? preparedQueryCache : (preparedQueryCache = new Query(query, options));\n    }\n    return options;\n  };\n\n}).call(this);\n","var baseEach = require('./_baseEach'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nmodule.exports = baseMap;\n","// Constants used by table helpers\n\nconst FIELD_KEY_CELL_VARIANT = '_cellVariants';\nconst FIELD_KEY_ROW_VARIANT = '_rowVariant';\nconst FIELD_KEY_SHOW_DETAILS = '_showDetails';\n\n// Object of item keys that should be ignored for headers and\n// stringification and filter events\nconst IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce((result, key) => ({\n  ...result,\n  [key]: true\n}), {});\n\n// Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\nconst EVENT_FILTER = ['a', 'a *',\n// Include content inside links\n'button', 'button *',\n// Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');\n\nexport { EVENT_FILTER, FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS, IGNORED_FIELD_KEYS };\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n  return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","import { extend } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots';\n\n// --- Props ---\n\nconst props = {};\n\n// --- Mixin ---\n\n// @vue/component\nconst colgroupMixin = extend({\n  methods: {\n    renderColgroup() {\n      const {\n        computedFields: fields\n      } = this;\n      const h = this.$createElement;\n      let $colgroup = h();\n      if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n        $colgroup = h('colgroup', {\n          key: 'colgroup'\n        }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n          columns: fields.length,\n          fields\n        })]);\n      }\n      return $colgroup;\n    }\n  }\n});\n\nexport { colgroupMixin, props };\n","import cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport GlToken from '../token/token';\nimport { stopEvent } from '../../../utils/utils';\nimport GlFilteredSearchTokenSegment from './filtered_search_token_segment';\nimport { tokenToOption, createTerm, TOKEN_CLOSE_SELECTOR } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst SEGMENT_TITLE = 'TYPE';\nconst SEGMENT_OPERATOR = 'OPERATOR';\nconst SEGMENT_DATA = 'DATA';\nconst DEFAULT_OPERATORS = [{\n  value: '=',\n  description: 'is',\n  default: true\n}, {\n  value: '!=',\n  description: 'is not'\n}];\nvar script = {\n  name: 'GlFilteredSearchToken',\n  // FIXME: temporary workaround to ensure compatibility with @vue/compat\n  __v_skip: true,\n  components: {\n    GlToken,\n    GlFilteredSearchTokenSegment\n  },\n  inheritAttrs: false,\n  props: {\n    availableTokens: {\n      type: Array,\n      required: false,\n      default: () => []\n    },\n    /**\n     * Token configuration with available operators and options.\n     */\n    config: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * Determines if the token is being edited or not.\n     */\n    active: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    multiSelectValues: {\n      type: Array,\n      required: false,\n      default: () => []\n    },\n    /**\n     * Current token value.\n     */\n    value: {\n      type: Object,\n      required: false,\n      default: () => ({\n        operator: '',\n        data: ''\n      })\n    },\n    /**\n     * Display operators' descriptions instead of their values (e.g., \"is\" instead of \"=\").\n     */\n    showFriendlyText: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    cursorPosition: {\n      type: String,\n      required: false,\n      default: 'end',\n      validator: value => ['start', 'end'].includes(value)\n    },\n    viewOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    dataSegmentInputAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    }\n  },\n  data() {\n    return {\n      activeSegment: null,\n      tokenValue: cloneDeep(this.value),\n      intendedCursorPosition: this.cursorPosition\n    };\n  },\n  computed: {\n    operators() {\n      return this.config.operators || DEFAULT_OPERATORS;\n    },\n    tokenEmpty() {\n      var _this$tokenValue$data;\n      return ((_this$tokenValue$data = this.tokenValue.data) === null || _this$tokenValue$data === void 0 ? void 0 : _this$tokenValue$data.length) === 0;\n    },\n    hasDataOrDataSegmentIsCurrentlyActive() {\n      const hasData = !this.tokenEmpty;\n      return hasData || this.isSegmentActive(SEGMENT_DATA);\n    },\n    availableTokensWithSelf() {\n      return [this.config, ...this.availableTokens.filter(token => token !== this.config)].map(\n      // eslint-disable-next-line unicorn/no-array-callback-reference\n      tokenToOption);\n    },\n    operatorDescription() {\n      const operator = this.operators.find(op => op.value === this.tokenValue.operator);\n      return this.showFriendlyText ? operator === null || operator === void 0 ? void 0 : operator.description : operator === null || operator === void 0 ? void 0 : operator.value;\n    },\n    eventListeners() {\n      return this.viewOnly ? {} : {\n        mousedown: this.stopMousedownOnCloseButton,\n        close: this.destroyByClose\n      };\n    }\n  },\n  segments: {\n    SEGMENT_TITLE,\n    SEGMENT_DATA,\n    SEGMENT_OPERATOR\n  },\n  watch: {\n    tokenValue: {\n      deep: true,\n      handler(newValue) {\n        /**\n         * Emitted when the token changes its value.\n         *\n         * @event input\n         * @type {object} dataObj Object containing the update value.\n         */\n        this.$emit('input', newValue);\n      }\n    },\n    value: {\n      handler(newValue, oldValue) {\n        if (isEqual(newValue === null || newValue === void 0 ? void 0 : newValue.data, oldValue === null || oldValue === void 0 ? void 0 : oldValue.data) && (newValue === null || newValue === void 0 ? void 0 : newValue.operator) === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.operator)) {\n          return;\n        }\n        this.tokenValue = cloneDeep(newValue);\n      }\n    },\n    active: {\n      immediate: true,\n      handler(tokenIsActive) {\n        if (tokenIsActive) {\n          this.intendedCursorPosition = this.cursorPosition;\n          if (!this.activeSegment) {\n            this.activateSegment(this.tokenEmpty ? SEGMENT_OPERATOR : SEGMENT_DATA);\n          }\n        } else {\n          this.activeSegment = null;\n\n          // restore multi select values if we have them\n          // otherwise destroy the token\n          if (this.config.multiSelect) {\n            this.$emit('input', {\n              ...this.tokenValue,\n              data: this.multiSelectValues || ''\n            });\n          }\n          if (this.tokenEmpty && this.multiSelectValues.length === 0) {\n            /**\n             * Emitted when token is about to be destroyed.\n             *\n             * @event destroy\n             */\n            this.$emit('destroy');\n          }\n        }\n      }\n    }\n  },\n  created() {\n    if (!('operator' in this.tokenValue)) {\n      if (this.operators.length === 1) {\n        const operator = this.operators[0].value;\n        this.$emit('input', {\n          ...this.tokenValue,\n          operator\n        });\n        this.activeSegment = SEGMENT_DATA;\n      } else {\n        this.$emit('input', {\n          ...this.tokenValue,\n          operator: ''\n        });\n      }\n    }\n  },\n  methods: {\n    activateSegment(segment) {\n      if (this.viewOnly) return;\n      this.activeSegment = segment;\n      if (!this.active) {\n        /**\n         * Emitted when this term token is clicked.\n         *\n         * @event activate\n         */\n        this.$emit('activate');\n      }\n    },\n    getAdditionalSegmentClasses(segment) {\n      if (this.viewOnly) {\n        return 'gl-cursor-text';\n      }\n      return {\n        'gl-cursor-pointer': !this.isSegmentActive(segment)\n      };\n    },\n    isSegmentActive(segment) {\n      return this.active && this.activeSegment === segment;\n    },\n    replaceWithTermIfEmpty() {\n      if (this.tokenValue.operator === '' && this.tokenEmpty) {\n        /**\n         * Emitted when this token is converted to another type\n         * @property {object} token Replacement token configuration\n         */\n        this.$emit('replace', createTerm(this.config.title));\n      }\n    },\n    replaceToken(newType) {\n      const newTokenConfig = this.availableTokens.find(_ref => {\n        let {\n          type\n        } = _ref;\n        return type === newType;\n      });\n      if (newTokenConfig === this.config) {\n        this.$nextTick(() => {\n          /**\n           * Emitted when this term token will lose its focus.\n           *\n           * @event deactivate\n           */\n          this.$emit('deactivate');\n        });\n        return;\n      }\n      if (newTokenConfig) {\n        const isCompatible = this.config.dataType && this.config.dataType === newTokenConfig.dataType;\n        this.$emit('replace', {\n          type: newTokenConfig.type,\n          value: isCompatible ? this.tokenValue : {\n            data: ''\n          }\n        });\n      }\n    },\n    handleOperatorKeydown(evt, _ref2) {\n      let {\n        inputValue,\n        suggestedValue,\n        applySuggestion\n      } = _ref2;\n      const {\n        key\n      } = evt;\n      if (key === ' ' || key === 'Spacebar') {\n        applySuggestion(suggestedValue);\n        return;\n      }\n      const potentialValue = `${inputValue}${key}`;\n      if (key.length === 1 && !this.operators.find(_ref3 => {\n        let {\n          value\n        } = _ref3;\n        return value.startsWith(potentialValue);\n      })) {\n        if (this.tokenEmpty) {\n          applySuggestion(suggestedValue);\n        } else {\n          evt.preventDefault();\n        }\n      }\n    },\n    activateDataSegment() {\n      if (this.config.multiSelect) {\n        this.$emit('input', {\n          ...this.tokenValue,\n          data: ''\n        });\n      }\n      this.activateSegment(this.$options.segments.SEGMENT_DATA);\n    },\n    activatePreviousOperatorSegment() {\n      this.activateSegment(this.$options.segments.SEGMENT_OPERATOR);\n      this.intendedCursorPosition = 'end';\n    },\n    activatePreviousTitleSegment() {\n      this.activateSegment(this.$options.segments.SEGMENT_TITLE);\n      this.intendedCursorPosition = 'end';\n    },\n    activateNextDataSegment() {\n      this.activateDataSegment();\n      this.intendedCursorPosition = 'start';\n    },\n    activateNextOperatorSegment() {\n      this.activateSegment(this.$options.segments.SEGMENT_OPERATOR);\n      this.intendedCursorPosition = 'start';\n    },\n    handleComplete(value) {\n      /**\n       * Emitted when the token entry has been completed.\n       *\n       * @event complete\n       */\n      this.$emit('complete', value);\n    },\n    stopMousedownOnCloseButton(event) {\n      if (event.target.closest(TOKEN_CLOSE_SELECTOR)) {\n        stopEvent(event);\n      }\n    },\n    destroyByClose() {\n      this.$emit('destroy');\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-filtered-search-token\",class:{\n    'gl-filtered-search-token-active': _vm.active,\n    'gl-filtered-search-token-hover': !_vm.viewOnly,\n    'gl-cursor-default': _vm.viewOnly,\n  },attrs:{\"data-testid\":\"filtered-search-token\"}},[_c('gl-filtered-search-token-segment',{key:\"title-segment\",attrs:{\"value\":_vm.config.title,\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_TITLE),\"cursor-position\":_vm.intendedCursorPosition,\"options\":_vm.availableTokensWithSelf,\"view-only\":_vm.viewOnly},on:{\"activate\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_TITLE)},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"complete\":_vm.replaceToken,\"backspace\":function($event){return _vm.$emit('destroy')},\"submit\":function($event){return _vm.$emit('submit')},\"previous\":function($event){return _vm.$emit('previous')},\"next\":_vm.activateNextOperatorSegment},scopedSlots:_vm._u([{key:\"view\",fn:function(ref){\n  var inputValue = ref.inputValue;\nreturn [_c('gl-token',{staticClass:\"gl-filtered-search-token-type\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_TITLE),attrs:{\"view-only\":\"\"}},[_vm._v(\"\\n        \"+_vm._s(inputValue)+\"\\n      \")])]}}])}),_vm._v(\" \"),_c('gl-filtered-search-token-segment',{key:\"operator-segment\",attrs:{\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_OPERATOR),\"cursor-position\":_vm.intendedCursorPosition,\"options\":_vm.operators,\"option-text-field\":\"value\",\"custom-input-keydown-handler\":_vm.handleOperatorKeydown,\"view-only\":_vm.viewOnly},on:{\"activate\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_OPERATOR)},\"backspace\":_vm.replaceWithTermIfEmpty,\"complete\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_DATA)},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"previous\":_vm.activatePreviousTitleSegment,\"next\":_vm.activateNextDataSegment},scopedSlots:_vm._u([{key:\"view\",fn:function(){return [_c('gl-token',{staticClass:\"gl-filtered-search-token-operator\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_OPERATOR),attrs:{\"variant\":\"search-value\",\"view-only\":\"\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.operatorDescription)+\"\\n      \")])]},proxy:true},{key:\"option\",fn:function(ref){\n  var option = ref.option;\nreturn [_c('div',{staticClass:\"gl-flex\"},[_vm._v(\"\\n        \"+_vm._s(_vm.showFriendlyText ? option.description : option.value)+\"\\n        \"),(option.description)?_c('span',{staticClass:\"gl-filtered-search-token-operator-description\"},[_vm._v(\"\\n          \"+_vm._s(_vm.showFriendlyText ? option.value : option.description)+\"\\n        \")]):_vm._e()])]}}]),model:{value:(_vm.tokenValue.operator),callback:function ($$v) {_vm.$set(_vm.tokenValue, \"operator\", $$v);},expression:\"tokenValue.operator\"}}),_vm._v(\" \"),(_vm.hasDataOrDataSegmentIsCurrentlyActive)?_c('gl-filtered-search-token-segment',{key:\"data-segment\",attrs:{\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_DATA),\"cursor-position\":_vm.intendedCursorPosition,\"multi-select\":_vm.config.multiSelect,\"options\":_vm.config.options,\"view-only\":_vm.viewOnly,\"search-input-attributes\":_vm.dataSegmentInputAttributes},on:{\"activate\":_vm.activateDataSegment,\"backspace\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_OPERATOR)},\"complete\":_vm.handleComplete,\"select\":function($event){return _vm.$emit('select', $event)},\"submit\":function($event){return _vm.$emit('submit')},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"split\":function($event){return _vm.$emit('split', $event)},\"previous\":_vm.activatePreviousOperatorSegment,\"next\":function($event){return _vm.$emit('next')}},scopedSlots:_vm._u([{key:\"before-input\",fn:function(scope){return [_vm._t(\"before-data-segment-input\",null,null,scope)]}},{key:\"suggestions\",fn:function(){return [_vm._t(\"suggestions\")]},proxy:true},{key:\"view\",fn:function(ref){\n  var inputValue = ref.inputValue;\nreturn [_vm._t(\"view-token\",function(){return [_c('gl-token',_vm._g({staticClass:\"gl-filtered-search-token-data\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_DATA),attrs:{\"variant\":\"search-value\",\"view-only\":_vm.viewOnly}},_vm.eventListeners),[_c('span',{staticClass:\"gl-filtered-search-token-data-content\"},[_vm._t(\"view\",function(){return [_vm._v(_vm._s(inputValue))]},null,{ inputValue: inputValue })],2)])]},null,{\n          inputValue: inputValue,\n          listeners: _vm.eventListeners,\n          cssClasses: Object.assign({}, {'gl-filtered-search-token-data': true},\n            _vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_DATA)),\n        })]}}],null,true),model:{value:(_vm.tokenValue.data),callback:function ($$v) {_vm.$set(_vm.tokenValue, \"data\", $$v);},expression:\"tokenValue.data\"}}):_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 { formatNumber, sprintf, __ } from '~/locale';\nimport { BYTES_IN_KIB, THOUSAND, MILLION } from './constants';\n\n/**\n * Utility function that calculates KiB of the given bytes.\n *\n * @param  {Number} number bytes\n * @return {Number}        KiB\n */\nexport function bytesToKiB(number) {\n  return number / BYTES_IN_KIB;\n}\n\n/**\n * Utility function that calculates MiB of the given bytes.\n *\n * @param  {Number} number bytes\n * @return {Number}        MiB\n */\nexport function bytesToMiB(number) {\n  return number / (BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Utility function that calculates GiB of the given bytes.\n * @param {Number} number\n * @returns {Number}\n */\nexport function bytesToGiB(number) {\n  return number / (BYTES_IN_KIB * BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Formats the bytes in number into a more understandable\n * representation. Returns an array with the first value being the human size\n * and the second value being the label (e.g., [1.5, 'KiB']).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string[]}\n */\nexport function numberToHumanSizeSplit({ size, digits = 2, locale } = {}) {\n  const abs = Math.abs(size);\n  const digitsOptions = { minimumFractionDigits: digits, maximumFractionDigits: digits };\n  const formatNumberWithLocaleAndDigits = (n) => formatNumber(n, digitsOptions, locale);\n\n  if (abs < BYTES_IN_KIB) {\n    return [size.toString(), __('B')];\n  }\n  if (abs < BYTES_IN_KIB ** 2) {\n    return [formatNumberWithLocaleAndDigits(bytesToKiB(size)), __('KiB')];\n  }\n  if (abs < BYTES_IN_KIB ** 3) {\n    return [formatNumberWithLocaleAndDigits(bytesToMiB(size)), __('MiB')];\n  }\n  return [formatNumberWithLocaleAndDigits(bytesToGiB(size)), __('GiB')];\n}\n\n/**\n * Port of rails number_to_human_size\n * Formats the bytes in number into a more understandable\n * representation (e.g., giving it 1536 yields 1.5 KiB).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string}\n */\nexport function numberToHumanSize(size, digits = 2, locale) {\n  const [humanSize, label] = numberToHumanSizeSplit({ size, digits, locale });\n\n  switch (label) {\n    case __('B'):\n      return sprintf(__('%{size} B'), { size: humanSize });\n    case __('KiB'):\n      return sprintf(__('%{size} KiB'), { size: humanSize });\n    case __('MiB'):\n      return sprintf(__('%{size} MiB'), { size: humanSize });\n    case __('GiB'):\n      return sprintf(__('%{size} GiB'), { size: humanSize });\n    default:\n      return '';\n  }\n}\n\n/**\n * Converts a number to kilos or megas.\n *\n * For example:\n * - 123 becomes 123\n * - 123456 becomes 123.4k\n * - 123456789 becomes 123.4m\n *\n * @param number Number to format\n * @param digits The number of digits to appear after the decimal point\n * @param uppercase Whether to use uppercase suffix (K, M)\n * @return {string} Formatted number\n */\nexport function numberToMetricPrefix(number, uppercase = false) {\n  if (number < THOUSAND) {\n    return number.toString();\n  }\n  const digits = 1;\n  if (number < MILLION) {\n    return `${Number((number / THOUSAND).toFixed(digits))}${uppercase ? 'K' : 'k'}`;\n  }\n  return `${Number((number / MILLION).toFixed(digits))}${uppercase ? 'M' : 'm'}`;\n}\n/**\n * A simple method that returns the value of a + b\n * It seems unessesary, but when combined with a reducer it\n * adds up all the values in an array.\n *\n * e.g. `[1, 2, 3, 4, 5].reduce(sum) // => 15`\n *\n * @param {Float} a\n * @param {Float} b\n * @example\n * // return 15\n * [1, 2, 3, 4, 5].reduce(sum);\n *\n * // returns 6\n * Object.values([{a: 1, b: 2, c: 3].reduce(sum);\n * @returns {Float} The summed value\n */\nexport const sum = (a = 0, b = 0) => a + b;\n\n/**\n * Checks if the provided number is odd\n * @param {Int} number\n */\nexport const isOdd = (number = 0) => number % 2;\n\n/**\n * Computes the median for a given array.\n * @param {Array} arr An array of numbers\n * @returns {Number} The median of the given array\n */\nexport const median = (arr) => {\n  const middle = Math.floor(arr.length / 2);\n  const sorted = arr.sort((a, b) => a - b);\n  return arr.length % 2 !== 0 ? sorted[middle] : (sorted[middle - 1] + sorted[middle]) / 2;\n};\n\n/**\n * Computes the change from one value to the other as a percentage.\n * @param {Number} firstY\n * @param {Number} lastY\n * @returns {Number}\n */\nexport const changeInPercent = (firstY, lastY) => {\n  if (firstY === lastY) {\n    return 0;\n  }\n\n  return Math.round(((lastY - firstY) / Math.abs(firstY)) * 100);\n};\n\n/**\n * Computes and formats the change from one value to the other as a percentage.\n * Prepends the computed percentage with either \"+\" or \"-\" to indicate an in- or decrease and\n * returns a given string if the result is not finite (for example, if the first value is \"0\").\n * @param firstY\n * @param lastY\n * @param nonFiniteResult\n * @returns {String}\n */\nexport const formattedChangeInPercent = (firstY, lastY, { nonFiniteResult = '-' } = {}) => {\n  const change = changeInPercent(firstY, lastY);\n\n  if (!Number.isFinite(change)) {\n    return nonFiniteResult;\n  }\n\n  return `${change >= 0 ? '+' : ''}${change}%`;\n};\n\n/**\n * Checks whether a value is numerical in nature by converting it using parseInt\n *\n * Example outcomes:\n *   - isNumeric(100) = true\n *   - isNumeric('100') = true\n *   - isNumeric(1.0) = true\n *   - isNumeric('1.0') = true\n *   - isNumeric('abc100') = false\n *   - isNumeric('abc') = false\n *   - isNumeric(true) = false\n *   - isNumeric(undefined) = false\n *   - isNumeric(null) = false\n *\n * @param value\n * @returns {boolean}\n */\nexport const isNumeric = (value) => {\n  return !Number.isNaN(parseInt(value, 10));\n};\n\nconst numberRegex = /^[0-9]+$/;\n\n/**\n * Checks whether the value is a positive number or 0, or a string with equivalent value\n *\n * @param value\n * @return {boolean}\n */\nexport const isPositiveInteger = (value) => numberRegex.test(value);\n\n/**\n * Splits a number into an integer and decimal component\n * returns an object with the integer and decimal values extracted\n *\n * @param value\n * @return {Object}\n */\nexport const splitDecimalNumber = (value) => {\n  if (isNumeric(value)) {\n    const parts = String(value).split('.');\n    if (value === 0) return { integer: '0', decimal: '0' };\n\n    if (parts.length) {\n      return parts.length > 1\n        ? { integer: parts[0], decimal: parts[1] }\n        : { integer: parts[0], decimal: null };\n    }\n  }\n  return { integer: null, decimal: null };\n};\n\n/**\n * Calculates the number of digits after the decimal place\n *\n * @param num - any numeric value\n * @return number of digits after the decimal (if any)\n */\nexport const countFloatingPointDigits = (num = null) => {\n  if (!num || !isNumeric(num)) return 0;\n\n  const { decimal } = splitDecimalNumber(num);\n  return String(decimal).length;\n};\n","import { extend } from '../../vue';\nimport { NAME_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Also sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n  // Supported values: 'lite', 'dark', or `null`\n  headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BThead = /*#__PURE__*/extend({\n  name: NAME_THEAD,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isThead() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    theadClasses() {\n      return [this.headVariant ? `thead-${this.headVariant}` : null];\n    },\n    theadAttrs() {\n      return {\n        role: 'rowgroup',\n        ...this.bvAttrs\n      };\n    }\n  },\n  render(h) {\n    return h('thead', {\n      class: this.theadClasses,\n      attrs: this.theadAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BThead, props };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\n\n// --- Helper methods ---\n\nconst getHeadSlotName = value => `head(${value || ''})`;\nconst getFootSlotName = value => `foot(${value || ''})`;\n\n// --- Props ---\n\nconst props = {\n  // Any Bootstrap theme variant (or custom)\n  headRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'light', 'dark' or `null` (or custom)\n  headVariant: makeProp(PROP_TYPE_STRING),\n  theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst theadMixin = extend({\n  props,\n  methods: {\n    fieldClasses(field) {\n      // Header field (<th>) classes\n      return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n    },\n    headClicked(event, field, isFoot) {\n      if (this.stopIfBusy && this.stopIfBusy(event)) {\n        // If table is busy (via provider) then don't propagate\n        return;\n      } else if (filterEvent(event)) {\n        // Clicked on a non-disabled control so ignore\n        return;\n      } else if (textSelectionActive(this.$el)) {\n        // User is selecting text, so ignore\n        /* istanbul ignore next: JSDOM doesn't support getSelection() */\n        return;\n      }\n      stopEvent(event);\n      this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n    },\n    renderThead() {\n      let isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      const {\n        computedFields: fields,\n        isSortable,\n        isSelectable,\n        headVariant,\n        footVariant,\n        headRowVariant,\n        footRowVariant\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n\n      // In always stacked mode, we don't bother rendering the head/foot\n      // Or if no field headings (empty table)\n      if (this.isStackedAlways || fields.length === 0) {\n        return h();\n      }\n      const hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED);\n\n      // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n      const selectAllRows = isSelectable ? this.selectAllRows : noop;\n      const clearSelected = isSelectable ? this.clearSelected : noop;\n\n      // Helper function to generate a field <th> cell\n      const makeCell = (field, colIndex) => {\n        const {\n          label,\n          labelHtml,\n          variant,\n          stickyColumn,\n          key\n        } = field;\n        let ariaLabel = null;\n        if (!field.label.trim() && !field.headerTitle) {\n          // In case field's label and title are empty/blank\n          // We need to add a hint about what the column is about for non-sighted users\n          /* istanbul ignore next */\n          ariaLabel = startCase(field.key);\n        }\n        const on = {};\n        if (hasHeadClickListener) {\n          on.click = event => {\n            this.headClicked(event, field, isFoot);\n          };\n          on.keydown = event => {\n            const keyCode = event.keyCode;\n            if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n              this.headClicked(event, field, isFoot);\n            }\n          };\n        }\n        const sortAttrs = isSortable ? this.sortTheadThAttrs(key, field, isFoot) : {};\n        const sortClass = isSortable ? this.sortTheadThClasses(key, field, isFoot) : null;\n        const sortLabel = isSortable ? this.sortTheadThLabel(key, field, isFoot) : null;\n        const data = {\n          class: [{\n            // We need to make the header cell relative when we have\n            // a `.gl-sr-only` sort label to work around overflow issues\n            'gl-relative': sortLabel\n          }, this.fieldClasses(field), sortClass],\n          props: {\n            variant,\n            stickyColumn\n          },\n          style: field.thStyle || {},\n          attrs: {\n            // We only add a `tabindex` of `0` if there is a head-clicked listener\n            // and the current field is sortable\n            tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n            abbr: field.headerAbbr || null,\n            title: field.headerTitle || null,\n            'aria-colindex': colIndex + 1,\n            'aria-label': ariaLabel,\n            ...this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {}),\n            ...sortAttrs\n          },\n          on,\n          key\n        };\n\n        // Handle edge case where in-document templates are used with new\n        // `v-slot:name` syntax where the browser lower-cases the v-slot's\n        // name (attributes become lower cased when parsed by the browser)\n        // We have replaced the square bracket syntax with round brackets\n        // to prevent confusion with dynamic slot names\n        let slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()];\n        // Footer will fallback to header slot names\n        if (isFoot) {\n          slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName(), ...slotNames];\n        }\n        const scope = {\n          label,\n          column: key,\n          field,\n          isFoot,\n          // Add in row select methods\n          selectAllRows,\n          clearSelected\n        };\n        const $content = this.normalizeSlot(slotNames, scope) || h('div', {\n          domProps: htmlOrText(labelHtml, label)\n        });\n        const $srLabel = sortLabel ? h('span', {\n          staticClass: 'gl-sr-only'\n        }, ` (${sortLabel})`) : null;\n\n        // Return the header cell\n        return h(BTh, data, [$content, $srLabel].filter(identity));\n      };\n\n      // Generate the array of <th> cells\n      const $cells = fields.map(makeCell).filter(identity);\n\n      // Generate the row(s)\n      const $trs = [];\n      if (isFoot) {\n        $trs.push(h(BTr, {\n          class: this.tfootTrClass,\n          props: {\n            variant: isUndefinedOrNull(footRowVariant) ? headRowVariant : /* istanbul ignore next */footRowVariant\n          }\n        }, $cells));\n      } else {\n        const scope = {\n          columns: fields.length,\n          fields,\n          // Add in row select methods\n          selectAllRows,\n          clearSelected\n        };\n        $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n        $trs.push(h(BTr, {\n          class: this.theadTrClass,\n          props: {\n            variant: headRowVariant\n          }\n        }, $cells));\n      }\n      return h(isFoot ? BTfoot : BThead, {\n        class: (isFoot ? this.tfootClass : this.theadClass) || null,\n        props: isFoot ? {\n          footVariant: footVariant || headVariant || null\n        } : {\n          headVariant: headVariant || null\n        },\n        key: isFoot ? 'bv-tfoot' : 'bv-thead'\n      }, $trs);\n    }\n  }\n});\n\nexport { props, theadMixin };\n","var baseFlatten = require('./_baseFlatten'),\n    baseOrderBy = require('./_baseOrderBy'),\n    baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseDifference;\n","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nconst stableSort = (array, compareFn) => {\n  // Using `.bind(compareFn)` on the wrapped anonymous function improves\n  // performance by avoiding the function call setup. We don't use an arrow\n  // function here as it binds `this` to the `stableSort` context rather than\n  // the `compareFn` context, which wouldn't give us the performance increase.\n  return array.map((a, index) => [index, a]).sort(function (a, b) {\n    return this(a[1], b[1]) || a[0] - b[0];\n  }.bind(compareFn)).map(e => e[1]);\n};\n\nexport { stableSort };\n","/**\n * adds a pause and unpause method to Mousetrap\n * this allows you to enable or disable keyboard shortcuts\n * without having to reset Mousetrap and rebind everything\n */\n/* global Mousetrap:true */\n(function(Mousetrap) {\n    var _originalStopCallback = Mousetrap.prototype.stopCallback;\n\n    Mousetrap.prototype.stopCallback = function(e, element, combo) {\n        var self = this;\n\n        if (self.paused) {\n            return true;\n        }\n\n        return _originalStopCallback.call(self, e, element, combo);\n    };\n\n    Mousetrap.prototype.pause = function() {\n        var self = this;\n        self.paused = true;\n    };\n\n    Mousetrap.prototype.unpause = function() {\n        var self = this;\n        self.paused = false;\n    };\n\n    Mousetrap.init();\n}) (Mousetrap);\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchLabels\"},\"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\":\"search\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"defaultValue\":{\"kind\":\"BooleanValue\",\"value\":false},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"skip\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}}}]},{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"persist\"},\"arguments\":[]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"labels\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"searchTerm\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeAncestorGroups\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeDescendantGroups\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__persist\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__persist\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Label\"},\"directives\":[]}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}}}]},{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"persist\"},\"arguments\":[]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"labels\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"searchTerm\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeAncestorGroups\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__persist\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__persist\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Label\"},\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":587}};\n    doc.loc.source = {\"body\":\"#import \\\"./label.fragment.graphql\\\"\\n\\nquery searchLabels($fullPath: ID!, $search: String, $isProject: Boolean = false) {\\n  group(fullPath: $fullPath) @skip(if: $isProject) @persist {\\n    id\\n    labels(searchTerm: $search, includeAncestorGroups: true, includeDescendantGroups: true) {\\n      __persist\\n      nodes {\\n        __persist\\n        ...Label\\n      }\\n    }\\n  }\\n  project(fullPath: $fullPath) @include(if: $isProject) @persist {\\n    id\\n    labels(searchTerm: $search, includeAncestorGroups: true) {\\n      __persist\\n      nodes {\\n        __persist\\n        ...Label\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"./label.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"searchLabels\"] = oneQuery(doc, \"searchLabels\");\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","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n  return getWindow(element).getComputedStyle(element);\n}\n\nfunction isNode(value) {\n  return value instanceof getWindow(value).Node;\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\n\nfunction isHTMLElement(value) {\n  return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n  return value instanceof getWindow(value).Element;\n}\nfunction isShadowRoot(node) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle$1(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const safari = isSafari();\n  const css = getComputedStyle$1(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction isSafari() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createEmptyCoords = v => ({\n  x: v,\n  y: v\n});\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createEmptyCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createEmptyCoords(0);\nfunction getVisualOffsets(element, isFixed, floatingOffsetParent) {\n  var _win$visualViewport, _win$visualViewport2;\n  if (isFixed === void 0) {\n    isFixed = true;\n  }\n  if (!isSafari()) {\n    return noOffsets;\n  }\n  const win = element ? getWindow(element) : window;\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) {\n    return noOffsets;\n  }\n  return {\n    x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0,\n    y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0\n  };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createEmptyCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = getVisualOffsets(domElement, isFixedStrategy, offsetParent);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentIFrame = win.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== win) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentIFrame = getWindow(currentIFrame).frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nfunction getDocumentElement(node) {\n  return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  if (offsetParent === documentElement) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createEmptyCoords(1);\n  const offsets = createEmptyCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n  var _node$ownerDocument;\n  if (list === void 0) {\n    list = [];\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isSafari();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createEmptyCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  return getCssDimensions(element);\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createEmptyCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nconst platform = {\n  getClippingRect,\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  isElement,\n  getDimensions,\n  getOffsetParent,\n  getDocumentElement,\n  getScale,\n  async getElementRects(_ref) {\n    let {\n      reference,\n      floating,\n      strategy\n    } = _ref;\n    const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n    const getDimensionsFn = this.getDimensions;\n    return {\n      reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n      floating: {\n        x: 0,\n        y: 0,\n        ...(await getDimensionsFn(floating))\n      }\n    };\n  },\n  getClientRects: element => Array.from(element.getClientRects()),\n  isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    clearTimeout(timeoutId);\n    io && io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 100);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          resizeObserver && resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo && cleanupIo();\n    resizeObserver && resizeObserver.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import { extend } from '../../vue';\nimport { NAME_TABLE_CELL } from '../../constants/components';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Helper methods ---\n\n// Parse a rowspan or colspan into a digit (or `null` if < `1` )\nconst parseSpan = value => {\n  value = toInteger(value, 0);\n  return value > 0 ? value : null;\n};\n\n/* istanbul ignore next */\nconst spanValidator = value => isUndefinedOrNull(value) || parseSpan(value) > 0;\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  stackedHeading: makeProp(PROP_TYPE_STRING),\n  stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TABLE_CELL);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTd = /*#__PURE__*/extend({\n  name: NAME_TABLE_CELL,\n  // Mixin order is important!\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  inject: {\n    getBvTableTr: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTableTr() {\n      return this.getBvTableTr();\n    },\n    // Overridden by `<b-th>`\n    tag() {\n      return 'td';\n    },\n    inTbody() {\n      return this.bvTableTr.inTbody;\n    },\n    inThead() {\n      return this.bvTableTr.inThead;\n    },\n    inTfoot() {\n      return this.bvTableTr.inTfoot;\n    },\n    isDark() {\n      return this.bvTableTr.isDark;\n    },\n    isStacked() {\n      return this.bvTableTr.isStacked;\n    },\n    // We only support stacked-heading in tbody in stacked mode\n    isStackedCell() {\n      return this.inTbody && this.isStacked;\n    },\n    isResponsive() {\n      return this.bvTableTr.isResponsive;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader() {\n      return this.bvTableTr.isStickyHeader;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return this.bvTableTr.hasStickyHeader;\n    },\n    // Needed to handle background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky column cells are only available in responsive\n    // mode (horizontal scrolling) or when sticky header mode\n    // Applies to cells in `thead`, `tbody` and `tfoot`\n    isStickyColumn() {\n      return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n    },\n    rowVariant() {\n      return this.bvTableTr.variant;\n    },\n    headVariant() {\n      return this.bvTableTr.headVariant;\n    },\n    footVariant() {\n      return this.bvTableTr.footVariant;\n    },\n    tableVariant() {\n      return this.bvTableTr.tableVariant;\n    },\n    computedColspan() {\n      return parseSpan(this.colspan);\n    },\n    computedRowspan() {\n      return parseSpan(this.rowspan);\n    },\n    // We use computed props here for improved performance by caching\n    // the results of the string interpolation\n    cellClasses() {\n      let {\n        variant,\n        headVariant,\n        isStickyColumn\n      } = this;\n      if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n        // Needed for sticky-header mode as Bootstrap v4 table cells do\n        // not inherit parent's `background-color`\n        variant = this.rowVariant || this.tableVariant || 'b-table-default';\n      }\n      return [variant ? `${this.isDark ? 'bg' : 'table'}-${variant}` : null, isStickyColumn ? 'b-table-sticky-column' : null];\n    },\n    cellAttrs() {\n      const {\n        stackedHeading\n      } = this;\n\n      // We use computed props here for improved performance by caching\n      // the results of the object spread (Object.assign)\n      const headOrFoot = this.inThead || this.inTfoot;\n      // Make sure col/rowspan's are > 0 or null\n      const colspan = this.computedColspan;\n      const rowspan = this.computedRowspan;\n      // Default role and scope\n      let role = 'cell';\n      let scope = null;\n\n      // Compute role and scope\n      // We only add scopes with an explicit span of 1 or greater\n      if (headOrFoot) {\n        // Header or footer cells\n        role = 'columnheader';\n        scope = colspan > 0 ? 'colspan' : 'col';\n      } else if (isTag(this.tag, 'th')) {\n        // th's in tbody\n        role = 'rowheader';\n        scope = rowspan > 0 ? 'rowgroup' : 'row';\n      }\n      return {\n        colspan,\n        rowspan,\n        role,\n        scope,\n        // Allow users to override role/scope plus add other attributes\n        ...this.bvAttrs,\n        // Add in the stacked cell label data-attribute if in\n        // stacked mode (if a stacked heading label is provided)\n        'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ? /* istanbul ignore next */toString(stackedHeading) : null\n      };\n    }\n  },\n  render(h) {\n    const $content = [this.normalizeSlot()];\n    return h(this.tag, {\n      class: this.cellClasses,\n      attrs: this.cellAttrs,\n      // Transfer any native listeners\n      on: this.bvListeners\n    }, [this.isStackedCell ? h('div', [$content]) : $content]);\n  }\n});\n\nexport { BTd, props };\n","var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n    reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n  string = toString(string);\n  return (string && reHasRegExpChar.test(string))\n    ? string.replace(reRegExpChar, '\\\\$&')\n    : string;\n}\n\nmodule.exports = escapeRegExp;\n","import { BLink } from '../../../../vendor/bootstrap-vue/src/components/link/link';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport { isItem } from './utils';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst ITEM_CLASS = 'gl-new-dropdown-item';\nvar script = {\n  name: DISCLOSURE_DROPDOWN_ITEM_NAME,\n  ITEM_CLASS,\n  components: {\n    BLink\n  },\n  props: {\n    item: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: isItem\n    }\n  },\n  computed: {\n    isLink() {\n      var _this$item, _this$item2;\n      return typeof ((_this$item = this.item) === null || _this$item === void 0 ? void 0 : _this$item.href) === 'string' || typeof ((_this$item2 = this.item) === null || _this$item2 === void 0 ? void 0 : _this$item2.to) === 'string';\n    },\n    isCustomContent() {\n      return Boolean(this.$scopedSlots.default);\n    },\n    itemComponent() {\n      const {\n        item\n      } = this;\n      if (this.isLink) return {\n        is: BLink,\n        attrs: {\n          href: item.href,\n          to: item.to,\n          ...item.extraAttrs\n        },\n        listeners: {\n          click: this.action\n        }\n      };\n      return {\n        is: 'button',\n        attrs: {\n          ...(item === null || item === void 0 ? void 0 : item.extraAttrs),\n          type: 'button'\n        },\n        listeners: {\n          click: () => {\n            var _item$action;\n            item === null || item === void 0 ? void 0 : (_item$action = item.action) === null || _item$action === void 0 ? void 0 : _item$action.call(undefined, item);\n            this.action();\n          }\n        }\n      };\n    },\n    listIndex() {\n      var _this$item3, _this$item3$extraAttr;\n      return (_this$item3 = this.item) !== null && _this$item3 !== void 0 && (_this$item3$extraAttr = _this$item3.extraAttrs) !== null && _this$item3$extraAttr !== void 0 && _this$item3$extraAttr.disabled ? null : 0;\n    },\n    componentIndex() {\n      var _this$item4, _this$item4$extraAttr;\n      return (_this$item4 = this.item) !== null && _this$item4 !== void 0 && (_this$item4$extraAttr = _this$item4.extraAttrs) !== null && _this$item4$extraAttr !== void 0 && _this$item4$extraAttr.disabled ? null : -1;\n    },\n    wrapperClass() {\n      var _this$item$wrapperCla, _this$item5;\n      return (_this$item$wrapperCla = (_this$item5 = this.item) === null || _this$item5 === void 0 ? void 0 : _this$item5.wrapperClass) !== null && _this$item$wrapperCla !== void 0 ? _this$item$wrapperCla : '';\n    },\n    wrapperListeners() {\n      const listeners = {\n        keydown: this.onKeydown\n      };\n      if (this.isCustomContent) {\n        listeners.click = this.action;\n      }\n      return listeners;\n    }\n  },\n  methods: {\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      if (code === ENTER || code === SPACE) {\n        if (this.isCustomContent) {\n          this.action();\n        } else {\n          stopEvent(event);\n          /** Instead of simply navigating or calling the action, we want\n           * the `a/button` to be the target of the event as it might have additional attributes.\n           * E.g. `a` might have `target` attribute.\n           */\n          const e = new MouseEvent('click', {\n            bubbles: true,\n            cancelable: true\n          });\n          if (this.isLink) {\n            this.$refs.item.$el.dispatchEvent(e);\n          } else {\n            var _this$$refs$item;\n            (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : _this$$refs$item.dispatchEvent(e);\n          }\n        }\n      }\n    },\n    action() {\n      this.$emit('action', this.item);\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',_vm._g({class:[_vm.$options.ITEM_CLASS, _vm.wrapperClass],attrs:{\"tabindex\":_vm.listIndex,\"data-testid\":\"disclosure-dropdown-item\"}},_vm.wrapperListeners),[_vm._t(\"default\",function(){return [_c(_vm.itemComponent.is,_vm._g(_vm._b({ref:\"item\",tag:\"component\",staticClass:\"gl-new-dropdown-item-content\",attrs:{\"tabindex\":_vm.componentIndex}},'component',_vm.itemComponent.attrs,false),_vm.itemComponent.listeners),[_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.item.text)+\"\\n        \")]})],2)])]})],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_CLASS };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { extend } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { props as props$1, BTd } from './td';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(props$1, NAME_TH);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTh = /*#__PURE__*/extend({\n  name: NAME_TH,\n  extends: BTd,\n  props,\n  computed: {\n    tag() {\n      return 'th';\n    }\n  }\n});\n\nexport { BTh, props };\n","var baseIteratee = require('./_baseIteratee'),\n    baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","import { extend } from '../../vue';\nimport { NAME_TBODY } from '../../constants/components';\nimport { PROP_TYPE_OBJECT } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n  tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n}, NAME_TBODY);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTbody = /*#__PURE__*/extend({\n  name: NAME_TBODY,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTbody() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    isTransitionGroup() {\n      return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n    },\n    tbodyAttrs() {\n      return {\n        role: 'rowgroup',\n        ...this.bvAttrs\n      };\n    },\n    tbodyProps() {\n      const {\n        tbodyTransitionProps\n      } = this;\n      return tbodyTransitionProps ? {\n        ...tbodyTransitionProps,\n        tag: 'tbody'\n      } : {};\n    }\n  },\n  render(h) {\n    const data = {\n      props: this.tbodyProps,\n      attrs: this.tbodyAttrs\n    };\n    if (this.isTransitionGroup) {\n      // We use native listeners if a transition group for any delegated events\n      data.on = this.tbodyTransitionHandlers || {};\n      data.nativeOn = this.bvListeners;\n    } else {\n      // Otherwise we place any listeners on the tbody element\n      data.on = this.bvListeners;\n    }\n    return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n  }\n});\n\nexport { BTbody, props };\n","import { extend, REF_FOR_KEY } from '../../../vue';\nimport { EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED, EVENT_NAME_ROW_CLICKED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT_FUNCTION, PROP_TYPE_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_SHOW_DETAILS, FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT } from './constants';\n\n// --- Props ---\n\nconst props = {\n  detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n  tbodyTrClass: makeProp([...PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION])\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tbodyRowMixin = extend({\n  mixins: [useParentMixin],\n  props,\n  methods: {\n    // Methods for computing classes, attributes and styles for table cells\n    getTdValues(item, key, tdValue, defaultValue) {\n      const {\n        bvParent\n      } = this;\n      if (tdValue) {\n        const value = get(item, key, '');\n        if (isFunction(tdValue)) {\n          return tdValue(value, key, item);\n        } else if (isString(tdValue) && isFunction(bvParent[tdValue])) {\n          return bvParent[tdValue](value, key, item);\n        }\n        return tdValue;\n      }\n      return defaultValue;\n    },\n    getThValues(item, key, thValue, type, defaultValue) {\n      const {\n        bvParent\n      } = this;\n      if (thValue) {\n        const value = get(item, key, '');\n        if (isFunction(thValue)) {\n          return thValue(value, key, item, type);\n        } else if (isString(thValue) && isFunction(bvParent[thValue])) {\n          return bvParent[thValue](value, key, item, type);\n        }\n        return thValue;\n      }\n      return defaultValue;\n    },\n    // Method to get the value for a field\n    getFormattedValue(item, field) {\n      const {\n        key\n      } = field;\n      const formatter = this.getFieldFormatter(key);\n      let value = get(item, key, null);\n      if (isFunction(formatter)) {\n        value = formatter(value, key, item);\n      }\n      return isUndefinedOrNull(value) ? '' : value;\n    },\n    // Factory function methods\n    toggleDetailsFactory(hasDetailsSlot, item) {\n      // Returns a function to toggle a row's details slot\n      return () => {\n        if (hasDetailsSlot) {\n          this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n        }\n      };\n    },\n    // Row event handlers\n    rowHovered(event) {\n      // `mouseenter` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n      }\n    },\n    rowUnhovered(event) {\n      // `mouseleave` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n      }\n    },\n    // Renders a TD or TH for a row's field\n    renderTbodyRowCell(field, colIndex, item, rowIndex) {\n      const {\n        isStacked\n      } = this;\n      const {\n        key,\n        label,\n        isRowHeader\n      } = field;\n      const h = this.$createElement;\n      const hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      const formatted = this.getFormattedValue(item, field);\n      const stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn;\n      // We only uses the helper components for sticky columns to\n      // improve performance of BTable/BTableLite by reducing the\n      // total number of vue instances created during render\n      const cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n      const cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n      const data = {\n        // For the Vue key, we concatenate the column index and\n        // field key (as field keys could be duplicated)\n        // TODO: Although we do prevent duplicate field keys...\n        //   So we could change this to: `row-${rowIndex}-cell-${key}`\n        class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n        props: {},\n        attrs: {\n          'aria-colindex': String(colIndex + 1),\n          ...(isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {}))\n        },\n        key: `row-${rowIndex}-cell-${colIndex}-${key}`\n      };\n      if (stickyColumn) {\n        // We are using the helper BTd or BTh\n        data.props = {\n          stackedHeading: isStacked ? label : null,\n          stickyColumn: true,\n          variant: cellVariant\n        };\n      } else {\n        // Using native TD or TH element, so we need to\n        // add in the attributes and variant class\n        data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n        data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n        data.attrs.scope = isRowHeader ? 'row' : null;\n        // Add in the variant class\n        if (cellVariant) {\n          data.class.push(`${this.dark ? 'bg' : 'table'}-${cellVariant}`);\n        }\n      }\n      const slotScope = {\n        item,\n        index: rowIndex,\n        field,\n        unformatted: get(item, key, ''),\n        value: formatted,\n        toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n        detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n      };\n      // If table supports selectable mode, then add in the following scope\n      // this.supportsSelectableRows will be undefined if mixin isn't loaded\n      if (safeVueInstance(this).supportsSelectableRows) {\n        slotScope.rowSelected = this.isRowSelected(rowIndex);\n        slotScope.selectRow = () => this.selectRow(rowIndex);\n        slotScope.unselectRow = () => this.unselectRow(rowIndex);\n      }\n\n      // The new `v-slot` syntax doesn't like a slot name starting with\n      // a square bracket and if using in-document HTML templates, the\n      // v-slot attributes are lower-cased by the browser.\n      // Switched to round bracket syntax to prevent confusion with\n      // dynamic slot name syntax.\n      // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n      // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n      // Will be `null` if no slot (or fallback slot) exists\n      const slotName = this.$_bodyFieldSlotNameCache[key];\n      let $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n      if (this.isStacked) {\n        // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n        $childNodes = [h('div', [$childNodes])];\n      }\n\n      // Render either a td or th cell\n      return h(cellTag, data, [$childNodes]);\n    },\n    // Renders an item's row (or rows if details supported)\n    renderTbodyRow(item, rowIndex) {\n      const {\n        computedFields: fields,\n        striped,\n        primaryKey,\n        currentPage,\n        perPage,\n        tbodyTrClass,\n        tbodyTrAttr,\n        hasSelectableRowClick\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n      const hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      const rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n      const hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || hasSelectableRowClick;\n\n      // We can return more than one TR if rowDetails enabled\n      const $rows = [];\n\n      // Details ID needed for `aria-details` when details showing\n      // We set it to `null` when not showing so that attribute\n      // does not appear on the element\n      const detailsId = rowShowDetails ? this.safeId(`_details_${rowIndex}_`) : null;\n\n      // For each item data field in row\n      const $tds = fields.map((field, colIndex) => {\n        return this.renderTbodyRowCell(field, colIndex, item, rowIndex);\n      });\n\n      // Calculate the row number in the dataset (indexed from 1)\n      let ariaRowIndex = null;\n      if (currentPage && perPage && perPage > 0) {\n        ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n      }\n\n      // Create a unique :key to help ensure that sub components are re-rendered rather than\n      // re-used, which can cause issues. If a primary key is not provided we use the rendered\n      // rows index within the tbody.\n      // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n      const primaryKeyValue = toString(get(item, primaryKey)) || null;\n      const rowKey = primaryKeyValue || toString(rowIndex);\n\n      // If primary key is provided, use it to generate a unique ID on each tbody > tr\n      // In the format of '{tableId}__row_{primaryKeyValue}'\n      const rowId = primaryKeyValue ? this.safeId(`_row_${primaryKeyValue}`) : null;\n\n      // Selectable classes and attributes\n      const selectableClasses = safeVueInstance(this).selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n      const selectableAttrs = safeVueInstance(this).selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {};\n\n      // Additional classes and attributes\n      const userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n      const userTrAttrs = isFunction(tbodyTrAttr) ? /* istanbul ignore next */tbodyTrAttr(item, 'row') : tbodyTrAttr;\n\n      // Add the item row\n      $rows.push(h(BTr, {\n        class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n        props: {\n          variant: item[FIELD_KEY_ROW_VARIANT] || null\n        },\n        attrs: {\n          id: rowId,\n          ...userTrAttrs,\n          // Users cannot override the following attributes\n          tabindex: hasRowClickHandler ? '0' : null,\n          'data-pk': primaryKeyValue || null,\n          'aria-details': detailsId,\n          'aria-owns': detailsId,\n          'aria-rowindex': ariaRowIndex,\n          ...selectableAttrs\n        },\n        on: {\n          // Note: These events are not A11Y friendly!\n          mouseenter: this.rowHovered,\n          mouseleave: this.rowUnhovered\n        },\n        key: `__b-table-row-${rowKey}__`,\n        ref: 'item-rows',\n        [REF_FOR_KEY]: true\n      }, $tds));\n\n      // Row Details slot\n      if (rowShowDetails) {\n        const detailsScope = {\n          item,\n          index: rowIndex,\n          fields,\n          toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n        };\n        // If table supports selectable mode, then add in the following scope\n        // this.supportsSelectableRows will be undefined if mixin isn't loaded\n        if (safeVueInstance(this).supportsSelectableRows) {\n          detailsScope.rowSelected = this.isRowSelected(rowIndex);\n          detailsScope.selectRow = () => this.selectRow(rowIndex);\n          detailsScope.unselectRow = () => this.unselectRow(rowIndex);\n        }\n\n        // Render the details slot in a TD\n        const $details = h(BTd, {\n          props: {\n            colspan: fields.length\n          },\n          class: this.detailsTdClass\n        }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]);\n\n        // Add a hidden row to keep table row striping consistent when details showing\n        // Only added if the table is striped\n        if (striped) {\n          $rows.push(\n          // We don't use `BTr` here as we don't need the extra functionality\n          h('tr', {\n            staticClass: 'd-none',\n            attrs: {\n              'aria-hidden': 'true',\n              role: 'presentation'\n            },\n            key: `__b-table-details-stripe__${rowKey}`\n          }));\n        }\n\n        // Add the actual details row\n        const userDetailsTrClasses = isFunction(this.tbodyTrClass) ? /* istanbul ignore next */this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n        const userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ? /* istanbul ignore next */this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n        $rows.push(h(BTr, {\n          staticClass: 'b-table-details',\n          class: [userDetailsTrClasses],\n          props: {\n            variant: item[FIELD_KEY_ROW_VARIANT] || null\n          },\n          attrs: {\n            ...userDetailsTrAttrs,\n            // Users cannot override the following attributes\n            id: detailsId,\n            tabindex: '-1'\n          },\n          key: `__b-table-details__${rowKey}`\n        }, [$details]));\n      } else if (hasDetailsSlot) {\n        // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n        $rows.push(h());\n        if (striped) {\n          // Add extra placeholder if table is striped\n          $rows.push(h());\n        }\n      }\n\n      // Return the row(s)\n      return $rows;\n    }\n  }\n});\n\nexport { props, tbodyRowMixin };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE, CODE_UP, CODE_DOWN, CODE_HOME, CODE_END } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { from, arrayIncludes } from '../../../utils/array';\nimport { isElement, closest, isActiveElement, attemptFocus } from '../../../utils/dom';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { props as props$1, BTbody } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { props as props$2, tbodyRowMixin } from './mixin-tbody-row';\n\n// --- Helper methods ---\n\nconst getCellSlotName = value => `cell(${value || ''})`;\n\n// --- Props ---\n\nconst props = sortKeys({\n  ...props$1,\n  ...props$2,\n  tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n});\n\n// --- Mixin ---\n\n// @vue/component\nconst tbodyMixin = extend({\n  mixins: [tbodyRowMixin],\n  props,\n  beforeDestroy() {\n    this.$_bodyFieldSlotNameCache = null;\n  },\n  methods: {\n    // Returns all the item TR elements (excludes detail and spacer rows)\n    // `this.$refs['item-rows']` is an array of item TR components/elements\n    // Rows should all be `<b-tr>` components, but we map to TR elements\n    // Also note that `this.$refs['item-rows']` may not always be in document order\n    getTbodyTrs() {\n      const {\n        $refs\n      } = this;\n      const tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      const trs = ($refs['item-rows'] || []).map(tr => tr.$el || tr);\n      return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? from(tbody.children).filter(tr => arrayIncludes(trs, tr)) : /* istanbul ignore next */[];\n    },\n    // Returns index of a particular TBODY item TR\n    // We set `true` on closest to include self in result\n    getTbodyTrIndex(el) {\n      /* istanbul ignore next: should not normally happen */\n      if (!isElement(el)) {\n        return -1;\n      }\n      const tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n      return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n    },\n    // Emits a row event, with the item object, row index and original event\n    emitTbodyRowEvent(type, event) {\n      if (type && this.hasListener(type) && event && event.target) {\n        const rowIndex = this.getTbodyTrIndex(event.target);\n        if (rowIndex > -1) {\n          // The array of TRs correlate to the `computedItems` array\n          const item = this.computedItems[rowIndex];\n          this.$emit(type, item, rowIndex, event);\n        }\n      }\n    },\n    tbodyRowEventStopped(event) {\n      return this.stopIfBusy && this.stopIfBusy(event);\n    },\n    // Delegated row event handlers\n    onTbodyRowKeydown(event) {\n      // Keyboard navigation and row click emulation\n      const {\n        target,\n        keyCode\n      } = event;\n      if (this.tbodyRowEventStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n        // Early exit if not an item row TR\n        return;\n      }\n      if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n        // Emulated click for keyboard users, transfer to click handler\n        stopEvent(event);\n        this.onTBodyRowClicked(event);\n      } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n        // Keyboard navigation\n        const rowIndex = this.getTbodyTrIndex(target);\n        if (rowIndex > -1) {\n          stopEvent(event);\n          const trs = this.getTbodyTrs();\n          const shift = event.shiftKey;\n          if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n            // Focus first row\n            attemptFocus(trs[0]);\n          } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n            // Focus last row\n            attemptFocus(trs[trs.length - 1]);\n          } else if (keyCode === CODE_UP && rowIndex > 0) {\n            // Focus previous row\n            attemptFocus(trs[rowIndex - 1]);\n          } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n            // Focus next row\n            attemptFocus(trs[rowIndex + 1]);\n          }\n        }\n      }\n    },\n    onTBodyRowClicked(event) {\n      const {\n        $refs\n      } = this;\n      const tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      // Don't emit event when the table is busy, the user clicked\n      // on a non-disabled control or is selecting text\n      if (this.tbodyRowEventStopped(event) || filterEvent(event) || textSelectionActive(tbody || this.$el)) {\n        return;\n      }\n      this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n    },\n    onTbodyRowMiddleMouseRowClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && event.which === 2) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n      }\n    },\n    onTbodyRowContextmenu(event) {\n      if (!this.tbodyRowEventStopped(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n      }\n    },\n    onTbodyRowDblClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && !filterEvent(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n      }\n    },\n    // Render the tbody element and children\n    // Note:\n    //   Row hover handlers are handled by the tbody-row mixin\n    //   As mouseenter/mouseleave events do not bubble\n    renderTbody() {\n      const {\n        computedItems: items,\n        renderBusy,\n        renderTopRow,\n        renderEmpty,\n        renderBottomRow,\n        hasSelectableRowClick\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n      const hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || hasSelectableRowClick;\n\n      // Prepare the tbody rows\n      const $rows = [];\n\n      // Add the item data rows or the busy slot\n      const $busy = renderBusy ? renderBusy() : null;\n      if ($busy) {\n        // If table is busy and a busy slot, then return only the busy \"row\" indicator\n        $rows.push($busy);\n      } else {\n        // Table isn't busy, or we don't have a busy slot\n\n        // Create a slot cache for improved performance when looking up cell slot names\n        // Values will be keyed by the field's `key` and will store the slot's name\n        // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n        // Used by tbody-row mixin render helper\n        const cache = {};\n        let defaultSlotName = getCellSlotName();\n        defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n        this.computedFields.forEach(field => {\n          const {\n            key\n          } = field;\n          const slotName = getCellSlotName(key);\n          const lowercaseSlotName = getCellSlotName(key.toLowerCase());\n          cache[key] = this.hasNormalizedSlot(slotName) ? slotName : this.hasNormalizedSlot(lowercaseSlotName) ? /* istanbul ignore next */lowercaseSlotName : defaultSlotName;\n        });\n        // Created as a non-reactive property so to not trigger component updates\n        // Must be a fresh object each render\n        this.$_bodyFieldSlotNameCache = cache;\n\n        // Add static top row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n        $rows.push(renderTopRow ? renderTopRow() : h());\n\n        // Render the rows\n        items.forEach((item, rowIndex) => {\n          // Render the individual item row (rows if details slot)\n          $rows.push(this.renderTbodyRow(item, rowIndex));\n        });\n\n        // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n        $rows.push(renderEmpty ? renderEmpty() : h());\n\n        // Static bottom row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n        $rows.push(renderBottomRow ? renderBottomRow() : h());\n      }\n\n      // Note: these events will only emit if a listener is registered\n      const handlers = {\n        auxclick: this.onTbodyRowMiddleMouseRowClicked,\n        // TODO:\n        //   Perhaps we do want to automatically prevent the\n        //   default context menu from showing if there is a\n        //   `row-contextmenu` listener registered\n        contextmenu: this.onTbodyRowContextmenu,\n        // The following event(s) is not considered A11Y friendly\n        dblclick: this.onTbodyRowDblClicked\n        // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n      };\n      // Add in click/keydown listeners if needed\n      if (hasRowClickHandler) {\n        handlers.click = this.onTBodyRowClicked;\n        handlers.keydown = this.onTbodyRowKeydown;\n      }\n\n      // Assemble rows into the tbody\n      const $tbody = h(BTbody, {\n        class: this.tbodyClass || null,\n        props: pluckProps(props$1, this.$props),\n        // BTbody transfers all native event listeners to the root element\n        // TODO: Only set the handlers if the table is not busy\n        on: handlers,\n        ref: 'tbody'\n      }, $rows);\n\n      // Return the assembled tbody\n      return $tbody;\n    }\n  }\n});\n\nexport { props, tbodyMixin };\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","module.exports = require('./head');\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 } 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'];\nconst GROUP_TOP_BORDER_CLASSES = ['gl-border-t', 'gl-border-t-dropdown', '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    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    },\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            throw new Error('Infinite scroll does not support groups. Please set the \"infiniteScroll\" prop to \"false\"');\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      } 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        } 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 {\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    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-shadow-inner-2-blue-400\",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-shadow-inner-2-blue-400\",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-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-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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Label\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Label\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"color\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"textColor\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":61}};\n    doc.loc.source = {\"body\":\"fragment Label on Label {\\n  id\\n  color\\n  textColor\\n  title\\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[\"Label\"] = oneQuery(doc, \"Label\");\n        \n","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","import GlButton from '../../base/button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlEmptyState',\n  components: {\n    GlButton\n  },\n  props: {\n    /**\n     * The title (heading) of the empty state.\n     */\n    title: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's URL.\n     */\n    svgPath: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's height used to prevent content reflow.\n     */\n    svgHeight: {\n      type: Number,\n      required: false,\n      default: 144\n    },\n    /**\n     * The desciption/body text of the empty state.\n     */\n    description: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's href.\n     */\n    primaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's text. If falsey, the button is not shown.\n     */\n    primaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's href.\n     */\n    secondaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's text. If falsey, the button is not shown.\n     */\n    secondaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Determines whether to render the compact layout.\n     */\n    compact: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    invertInDarkMode: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    /**\n     * CSS classes to add to the content container\n     */\n    contentClass: {\n      type: [Array, String, Object],\n      required: false,\n      default: () => []\n    }\n  },\n  computed: {\n    height() {\n      return this.shouldPreventImageReflow ? this.svgHeight : null;\n    },\n    shouldPreventImageReflow() {\n      return Boolean(this.svgHeight);\n    },\n    shouldRenderPrimaryButton() {\n      return Boolean(this.primaryButtonLink && this.primaryButtonText);\n    },\n    shouldRenderSecondaryButton() {\n      return Boolean(this.secondaryButtonLink && this.secondaryButtonText);\n    },\n    contentClasses() {\n      return [this.compact ? 'gl-grow gl-basis-0 gl-px-4' : 'gl-m-auto gl-p-5', this.contentClass];\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('section',{staticClass:\"gl-flex\",class:{\n    'gl-empty-state gl-flex-col gl-text-center': !_vm.compact,\n    'gl-flex-row': _vm.compact,\n  }},[_c('div',{class:{ 'gl-hidden gl-px-4 sm:gl-block': _vm.compact, 'gl-max-w-full': !_vm.compact }},[(_vm.svgPath)?_c('img',{staticClass:\"gl-max-w-full\",class:{ 'gl-dark-invert-keep-hue': _vm.invertInDarkMode },attrs:{\"src\":_vm.svgPath,\"alt\":\"\",\"height\":_vm.height}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"gl-empty-state-content gl-mx-auto gl-my-0\",class:_vm.contentClasses,attrs:{\"data-testid\":\"gl-empty-state-content\"}},[_vm._t(\"title\",function(){return [_c('h1',{staticClass:\"gl-mb-0 gl-mt-0 gl-text-size-h-display gl-leading-36\",class:_vm.compact ? 'h5' : 'h4'},[_vm._v(\"\\n        \"+_vm._s(_vm.title)+\"\\n      \")])]}),_vm._v(\" \"),(_vm.description || _vm.$scopedSlots.description)?_c('p',{ref:\"description\",staticClass:\"gl-mb-0 gl-mt-4 gl-text-subtle\"},[_vm._t(\"description\",function(){return [_vm._v(\"\\n        \"+_vm._s(_vm.description)+\"\\n      \")]})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-5 gl-flex gl-flex-wrap\",class:{ 'gl-justify-center': !_vm.compact }},[_vm._t(\"actions\",function(){return [(_vm.shouldRenderPrimaryButton)?_c('gl-button',{staticClass:\"gl-mb-3\",class:_vm.compact ? 'gl-mr-3' : 'gl-mx-2',attrs:{\"variant\":\"confirm\",\"href\":_vm.primaryButtonLink}},[_vm._v(_vm._s(_vm.primaryButtonText))]):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderSecondaryButton)?_c('gl-button',{staticClass:\"gl-mb-3 gl-mr-3\",class:{ '!gl-mx-2': !_vm.compact },attrs:{\"href\":_vm.secondaryButtonLink}},[_vm._v(_vm._s(_vm.secondaryButtonText)+\"\\n        \")]):_vm._e()]})],2)],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","(function() {\n  var Query, coreChars, countDir, getCharCodes, getExtension, opt_char_re, truncatedUpperCase, _ref;\n\n  _ref = require(\"./pathScorer\"), countDir = _ref.countDir, getExtension = _ref.getExtension;\n\n  module.exports = Query = (function() {\n    function Query(query, _arg) {\n      var optCharRegEx, pathSeparator, _ref1;\n      _ref1 = _arg != null ? _arg : {}, optCharRegEx = _ref1.optCharRegEx, pathSeparator = _ref1.pathSeparator;\n      if (!(query && query.length)) {\n        return null;\n      }\n      this.query = query;\n      this.query_lw = query.toLowerCase();\n      this.core = coreChars(query, optCharRegEx);\n      this.core_lw = this.core.toLowerCase();\n      this.core_up = truncatedUpperCase(this.core);\n      this.depth = countDir(query, query.length, pathSeparator);\n      this.ext = getExtension(this.query_lw);\n      this.charCodes = getCharCodes(this.query_lw);\n    }\n\n    return Query;\n\n  })();\n\n  opt_char_re = /[ _\\-:\\/\\\\]/g;\n\n  coreChars = function(query, optCharRegEx) {\n    if (optCharRegEx == null) {\n      optCharRegEx = opt_char_re;\n    }\n    return query.replace(optCharRegEx, '');\n  };\n\n  truncatedUpperCase = function(str) {\n    var char, upper, _i, _len;\n    upper = \"\";\n    for (_i = 0, _len = str.length; _i < _len; _i++) {\n      char = str[_i];\n      upper += char.toUpperCase()[0];\n    }\n    return upper;\n  };\n\n  getCharCodes = function(str) {\n    var charCodes, i, len;\n    len = str.length;\n    i = -1;\n    charCodes = [];\n    while (++i < len) {\n      charCodes[str.charCodeAt(i)] = true;\n    }\n    return charCodes;\n  };\n\n}).call(this);\n","var baseInverter = require('./_baseInverter');\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n  return function(object, iteratee) {\n    return baseInverter(object, setter, toIteratee(iteratee), {});\n  };\n}\n\nmodule.exports = createInverter;\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","const WORK_ITEM_TYPE_INCIDENT = 'incident';\nconst WORK_ITEM_TYPE_ISSUE = 'issue';\n\nexport const SUPPORT_BOT_USERNAME = 'support-bot';\n\nexport const issuableInitialDataById = (id) => {\n  try {\n    const el = document.getElementById(id);\n    if (!el?.dataset?.initial) return null;\n\n    return JSON.parse(el.dataset.initial);\n  } catch {\n    return null;\n  }\n};\n\nconst isIssuableIncident = (data) => {\n  return data?.issueType === WORK_ITEM_TYPE_INCIDENT;\n};\n\nconst isIssuableServiceDeskIssue = (data) => {\n  return data?.issueType === WORK_ITEM_TYPE_ISSUE && data?.authorUsername === SUPPORT_BOT_USERNAME;\n};\n\nexport const isLegacyIssueType = (issuableData) => {\n  return isIssuableIncident(issuableData) || isIssuableServiceDeskIssue(issuableData);\n};\n","import uniqueId from 'lodash/uniqueId';\nimport GlDisclosureDropdownItem from './disclosure_dropdown_item';\nimport { isGroup } from './utils';\nimport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BORDER_CLASSES = {\n  [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top]: 'gl-border-t gl-border-t-dropdown gl-pt-2 gl-mt-2',\n  [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.bottom]: 'gl-border-b gl-border-b-dropdown gl-pb-2 gl-mb-2'\n};\nvar script = {\n  name: DISCLOSURE_DROPDOWN_GROUP_NAME,\n  components: {\n    GlDisclosureDropdownItem\n  },\n  props: {\n    /**\n     * Group of items\n     */\n    group: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: isGroup\n    },\n    /**\n     * If 'true', will set top border for the group\n     * to separate from other groups. You can control\n     * the border position using the `borderPosition`\n     * property.\n     */\n    bordered: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Controls the position of the group's border. Valid\n     * values are 'top' and 'bottom'.\n     */\n    borderPosition: {\n      type: String,\n      required: false,\n      default: DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top,\n      validator: value => Object.keys(DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS).includes(value)\n    }\n  },\n  computed: {\n    borderClass() {\n      return this.bordered ? BORDER_CLASSES[this.borderPosition] : null;\n    },\n    showHeader() {\n      var _this$group;\n      return this.$scopedSlots['group-label'] || ((_this$group = this.group) === null || _this$group === void 0 ? void 0 : _this$group.name);\n    },\n    groupLabeledBy() {\n      return this.showHeader ? this.nameId : null;\n    }\n  },\n  created() {\n    this.nameId = uniqueId('gl-disclosure-dropdown-group-');\n  },\n  methods: {\n    handleAction(action) {\n      this.$emit('action', action);\n    },\n    uniqueItemId() {\n      return uniqueId(`disclosure-item-`);\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:_vm.borderClass},[(_vm.showHeader)?_c('div',{staticClass:\"gl-py-2 gl-pl-4 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.nameId,\"aria-hidden\":\"true\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.group.name))]})],2):_vm._e(),_vm._v(\" \"),_c('ul',{staticClass:\"gl-mb-0 gl-list-none gl-pl-0\",attrs:{\"aria-labelledby\":_vm.groupLabeledBy}},[_vm._t(\"default\",function(){return _vm._l((_vm.group.items),function(item){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}],null,true)})})})],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 { BORDER_CLASSES };\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","import { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlButton from '../button/button';\nimport GlButtonGroup from '../button_group/button_group';\nimport GlCollapsibleListbox from '../new_dropdowns/listbox/listbox';\nimport { isOption } from '../new_dropdowns/listbox/utils';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlSorting',\n  components: {\n    GlButton,\n    GlButtonGroup,\n    GlCollapsibleListbox\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective\n  },\n  props: {\n    /**\n     * Text to place in the toggle button.\n     */\n    text: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Sort options to display in the dropdown\n     */\n    sortOptions: {\n      type: Array,\n      required: false,\n      default: () => [],\n      // eslint-disable-next-line unicorn/no-array-callback-reference\n      validator: sortOptions => sortOptions.every(isOption)\n    },\n    /**\n     * The value of the item currently selected in the dropdown.\n     * Only to be used with the `sortOptions` prop.\n     */\n    sortBy: {\n      type: [String, Number],\n      required: false,\n      default: null\n    },\n    /**\n     * Determines the current sort order icon displayed.\n     */\n    isAscending: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The text for the tooltip and aria-label of the sort direction toggle\n     * button instead of the defaults for ascending/descending.\n     */\n    sortDirectionToolTip: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Additional class(es) to apply to the root element of the GlCollapsibleListbox.\n     */\n    dropdownClass: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Additional class(es) to apply to the dropdown toggle.\n     */\n    dropdownToggleClass: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Additional class(es) to apply to the sort direction toggle button.\n     */\n    sortDirectionToggleClass: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Render the dropdown toggle button as a block element\n     */\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  computed: {\n    localSortDirection() {\n      return this.isAscending ? 'sort-lowest' : 'sort-highest';\n    },\n    sortDirectionText() {\n      if (this.sortDirectionToolTip) return this.sortDirectionToolTip;\n      return this.isAscending ? translate('GlSorting.sortAscending', 'Sort direction: ascending') : translate('GlSorting.sortDescending', 'Sort direction: descending');\n    }\n  },\n  methods: {\n    toggleSortDirection() {\n      const newDirection = !this.isAscending;\n\n      /**\n       * Emitted when the sort direction button is clicked.\n       *\n       * The event's payload will be true if the direction has been changed to\n       * ascending, or false if descending.\n       *\n       * @property {boolean} isAscending\n       */\n      this.$emit('sortDirectionChange', newDirection);\n    },\n    onSortByChanged(event) {\n      /**\n       * Emitted when the sort field is changed.\n       *\n       * The event's payload is the value of the selected sort field.\n       *\n       * Only emitted when using the `sortOptions` prop.\n       *\n       * @property {string|number} value\n       */\n      this.$emit('sortByChange', 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('gl-button-group',{staticClass:\"gl-sorting\"},[_c('gl-collapsible-listbox',{class:_vm.dropdownClass,attrs:{\"toggle-text\":_vm.text,\"items\":_vm.sortOptions,\"selected\":_vm.sortBy,\"toggle-class\":_vm.dropdownToggleClass,\"placement\":\"bottom-end\",\"block\":_vm.block},on:{\"select\":_vm.onSortByChanged}}),_vm._v(\" \"),_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],class:['sorting-direction-button', _vm.sortDirectionToggleClass],attrs:{\"title\":_vm.sortDirectionText,\"icon\":_vm.localSortDirection,\"aria-label\":_vm.sortDirectionText},on:{\"click\":_vm.toggleSortDirection}})],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 { s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nexport const PROJECT_SELECT_LABEL_ID = 'project-select';\nexport const SEARCH_DELAY = 200;\nexport const VALID_TOKEN_BACKGROUND = 'gl-bg-green-100';\nexport const WARNING_TOKEN_BACKGROUND = 'gl-bg-orange-100';\nexport const INVALID_TOKEN_BACKGROUND = 'gl-bg-red-100';\nexport const TOAST_MESSAGE_LOCALSTORAGE_KEY = 'members_invited_successfully';\nexport const MEMBERS_WITH_QUEUED_STATUS_LOCALSTORAGE_KEY = 'members_queued_successfully';\n\nexport const GROUP_FILTERS = {\n  ALL: 'all',\n  DESCENDANT_GROUPS: 'descendant_groups',\n};\n\nexport const USERS_FILTER_ALL = 'all';\nexport const USERS_FILTER_SAML_PROVIDER_ID = 'saml_provider_id';\nexport const TRIGGER_ELEMENT_BUTTON = 'button';\nexport const TOP_NAV_INVITE_MEMBERS_COMPONENT = 'invite_members';\nexport const TRIGGER_ELEMENT_WITH_EMOJI = 'text-emoji';\nexport const TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI = 'dropdown-text-emoji';\nexport const TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN = 'dropdown-text';\nexport const INVITE_MEMBER_MODAL_TRACKING_CATEGORY = 'invite_members_modal';\nexport const IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_CATEGORY = 'invite_project_members_modal';\nexport const IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_LABEL = 'project-members-page';\nexport const MEMBERS_MODAL_DEFAULT_TITLE = s__('InviteMembersModal|Invite members');\nexport const MEMBERS_MODAL_CELEBRATE_TITLE = s__(\n  'InviteMembersModal|GitLab is better with colleagues!',\n);\nexport const MEMBERS_MODAL_CELEBRATE_INTRO = s__(\n  'InviteMembersModal|How about inviting a colleague or two to join you?',\n);\nexport const MEMBERS_TO_GROUP_DEFAULT_INTRO_TEXT = s__(\n  \"InviteMembersModal|You're inviting members to the %{strongStart}%{name}%{strongEnd} group.\",\n);\n\nexport const MEMBERS_TO_PROJECT_DEFAULT_INTRO_TEXT = s__(\n  \"InviteMembersModal|You're inviting members to the %{strongStart}%{name}%{strongEnd} project.\",\n);\nexport const MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT = s__(\n  \"InviteMembersModal|Congratulations on creating your project, you're almost there!\",\n);\nexport const MEMBERS_SEARCH_FIELD = s__('InviteMembersModal|Username, name or email address');\nexport const MEMBERS_PLACEHOLDER = s__(\n  'InviteMembersModal|Select from GitLab usernames or enter email addresses',\n);\n\nexport const GROUP_MODAL_DEFAULT_TITLE = s__('InviteMembersModal|Invite a group');\nexport const GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT = s__(\n  \"InviteMembersModal|You're inviting a group to the %{strongStart}%{name}%{strongEnd} group.\",\n);\nexport const GROUP_MODAL_TO_PROJECT_DEFAULT_INTRO_TEXT = s__(\n  \"InviteMembersModal|You're inviting a group to the %{strongStart}%{name}%{strongEnd} project.\",\n);\n\nexport const GROUP_MODAL_TO_GROUP_ALERT_BODY = s__(\n  'InviteMembersModal|Inviting a group %{linkStart}adds its members to your group%{linkEnd}, including members who join after the invite. This might put your group over the free %{count} user limit.',\n);\nexport const GROUP_MODAL_TO_GROUP_ALERT_LINK = helpPagePath(\n  'user/project/members/sharing_projects_groups',\n  {\n    anchor: 'invite-a-group-to-a-group',\n  },\n);\nexport const GROUP_MODAL_TO_PROJECT_ALERT_BODY = s__(\n  'InviteMembersModal|Inviting a group %{linkStart}adds its members to your project%{linkEnd}, including members who join after the invite. This might put your group over the free %{count} user limit.',\n);\nexport const GROUP_MODAL_TO_PROJECT_ALERT_LINK = helpPagePath(\n  'user/project/members/sharing_projects_groups',\n  {\n    anchor: 'invite-a-group-to-a-project',\n  },\n);\n\nexport const GROUP_SEARCH_FIELD = s__('InviteMembersModal|Select a group to invite');\nexport const GROUP_PLACEHOLDER = s__('InviteMembersModal|Search for a group to invite');\n\nexport const ACCESS_LEVEL = s__('InviteMembersModal|Select maximum role');\nexport const ACCESS_EXPIRE_DATE = s__('InviteMembersModal|Access expiration date (optional)');\nexport const TOAST_MESSAGE_SUCCESSFUL = s__('InviteMembersModal|Members were successfully added.');\nexport const QUEUED_MESSAGE_SUCCESSFUL = s__(\n  'InviteMembersModal|Some invitations have been queued for administrator approval.',\n);\nexport const INVALID_FEEDBACK_MESSAGE_DEFAULT = s__('InviteMembersModal|Something went wrong');\nexport const READ_MORE_TEXT = s__(\n  `InviteMembersModal|%{linkStart}Read more%{linkEnd} about role permissions. You can change this later. Invited members are limited to this role or their current group role, whichever is lower.`,\n);\nexport const READ_MORE_ACCESS_EXPIRATION_TEXT = s__(\n  `InviteMembersModal|%{linkStart}Read more%{linkEnd} about access expiration`,\n);\nexport const INVITE_BUTTON_TEXT = s__('InviteMembersModal|Invite');\nexport const INVITE_BUTTON_TEXT_DISABLED = s__('InviteMembersModal|Manage members');\nexport const CANCEL_BUTTON_TEXT = s__('InviteMembersModal|Cancel');\nexport const HEADER_CLOSE_LABEL = s__('InviteMembersModal|Close invite team members');\nexport const MEMBER_ERROR_LIST_TEXT = s__(\n  'InviteMembersModal|Review the invite errors and try again:',\n);\nexport const COLLAPSED_ERRORS = s__('InviteMembersModal|Show more (%{count})');\nexport const EXPANDED_ERRORS = s__('InviteMembersModal|Show less');\nexport const EMPTY_INVITES_ALERT_TEXT = s__('InviteMembersModal|Please add members to invite');\n\nexport const MEMBER_MODAL_LABELS = {\n  modal: {\n    default: {\n      title: MEMBERS_MODAL_DEFAULT_TITLE,\n    },\n    celebrate: {\n      title: MEMBERS_MODAL_CELEBRATE_TITLE,\n      intro: MEMBERS_MODAL_CELEBRATE_INTRO,\n    },\n  },\n  toGroup: {\n    default: {\n      introText: MEMBERS_TO_GROUP_DEFAULT_INTRO_TEXT,\n    },\n  },\n  toProject: {\n    default: {\n      introText: MEMBERS_TO_PROJECT_DEFAULT_INTRO_TEXT,\n    },\n    celebrate: {\n      introText: MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT,\n    },\n  },\n  searchField: MEMBERS_SEARCH_FIELD,\n  placeHolder: MEMBERS_PLACEHOLDER,\n  toastMessageSuccessful: TOAST_MESSAGE_SUCCESSFUL,\n  memberErrorListText: MEMBER_ERROR_LIST_TEXT,\n  collapsedErrors: COLLAPSED_ERRORS,\n  expandedErrors: EXPANDED_ERRORS,\n  emptyInvitesAlertText: EMPTY_INVITES_ALERT_TEXT,\n};\n\nexport const GROUP_MODAL_LABELS = {\n  title: GROUP_MODAL_DEFAULT_TITLE,\n  toGroup: {\n    introText: GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT,\n    notificationText: GROUP_MODAL_TO_GROUP_ALERT_BODY,\n    notificationLink: GROUP_MODAL_TO_GROUP_ALERT_LINK,\n  },\n  toProject: {\n    introText: GROUP_MODAL_TO_PROJECT_DEFAULT_INTRO_TEXT,\n    notificationText: GROUP_MODAL_TO_PROJECT_ALERT_BODY,\n    notificationLink: GROUP_MODAL_TO_PROJECT_ALERT_LINK,\n  },\n  searchField: GROUP_SEARCH_FIELD,\n  placeHolder: GROUP_PLACEHOLDER,\n  toastMessageSuccessful: TOAST_MESSAGE_SUCCESSFUL,\n};\n\nexport const ON_SHOW_TRACK_LABEL = 'over_limit_modal_viewed';\nexport const ON_CELEBRATION_TRACK_LABEL = 'invite_celebration_modal';\n\nexport const WARNING_ALERT_TITLE = s__(\n  'InviteMembersModal|You only have space for %{count} more %{members} in %{name}',\n);\nexport const DANGER_ALERT_TITLE = s__(\n  \"InviteMembersModal|You've reached your %{count} %{members} limit for %{name}\",\n);\n\nexport const REACHED_LIMIT_VARIANT = 'reached';\nexport const CLOSE_TO_LIMIT_VARIANT = 'close';\n\nexport const REACHED_LIMIT_MESSAGE = s__(\n  'InviteMembersModal|To invite new users to this top-level group, you must remove existing users. You can still add existing users from the top-level group, including any subgroups and projects.',\n);\n\nexport const REACHED_LIMIT_UPGRADE_SUGGESTION_MESSAGE = REACHED_LIMIT_MESSAGE.concat(\n  s__(\n    'InviteMembersModal| To get more members, the owner of this top-level group can %{trialLinkStart}start a trial%{trialLinkEnd} or %{upgradeLinkStart}upgrade%{upgradeLinkEnd} to a paid tier.',\n  ),\n);\n\nexport const CLOSE_TO_LIMIT_MESSAGE = s__(\n  'InviteMembersModal|To get more members an owner of the group can %{trialLinkStart}start a trial%{trialLinkEnd} or %{upgradeLinkStart}upgrade%{upgradeLinkEnd} to a paid tier.',\n);\nexport const BLOCKED_SEAT_OVERAGES_BODY = s__(\n  'InviteMembersModal|You must purchase more seats for your subscription before this amount of users can be added.',\n);\nexport const BLOCKED_SEAT_OVERAGES_CTA = s__('InviteMembersModal|Purchase more seats');\nexport const BLOCKED_SEAT_OVERAGES_CTA_DOCS = s__('InviteMembersModal|Learn how to add seats');\nexport const BLOCKED_SEAT_OVERAGES_ERROR_REASON = 'seat_limit_exceeded_error';\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","import uniqueId from 'lodash/uniqueId';\nimport { toggleLabelPosition } from '../../../utils/constants';\nimport GlIcon from '../icon/icon';\nimport GlLoadingIcon from '../loading_icon/loading_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nlet uuid = 0;\nvar script = {\n  name: 'GlToggle',\n  components: {\n    GlIcon,\n    GlLoadingIcon\n  },\n  model: {\n    prop: 'value',\n    event: 'change'\n  },\n  props: {\n    name: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The toggle's state.\n     * @model\n     */\n    value: {\n      type: Boolean,\n      required: false,\n      default: null\n    },\n    /**\n     * Whether the toggle should be disabled.\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Whether the toggle is in the loading state.\n     */\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The toggle's label.\n     */\n    label: {\n      type: String,\n      required: true\n    },\n    /**\n     * The toggle's description.\n     */\n    description: {\n      type: String,\n      required: false,\n      default: undefined\n    },\n    /**\n     * A help text to be shown below the toggle.\n     */\n    help: {\n      type: String,\n      required: false,\n      default: undefined\n    },\n    /**\n     * The label's position relative to the toggle. If 'hidden', the toggle will add the .gl-sr-only class so the label is still accessible to screen readers.\n     */\n    labelPosition: {\n      type: String,\n      required: false,\n      default: 'top',\n      validator(position) {\n        return Object.values(toggleLabelPosition).includes(position);\n      }\n    }\n  },\n  data() {\n    return {\n      labelId: uniqueId('toggle-label-')\n    };\n  },\n  computed: {\n    shouldRenderDescription() {\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return Boolean(this.$scopedSlots.description || this.description) && this.isVerticalLayout;\n    },\n    shouldRenderHelp() {\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return Boolean(this.$slots.help || this.help) && this.isVerticalLayout;\n    },\n    toggleClasses() {\n      return [{\n        'gl-sr-only': this.labelPosition === 'hidden'\n      }, this.shouldRenderDescription ? 'gl-mb-2' : 'gl-mb-3'];\n    },\n    icon() {\n      return this.value ? 'check-xs' : 'close-xs';\n    },\n    helpId() {\n      return this.shouldRenderHelp ? `toggle-help-${this.uuid}` : undefined;\n    },\n    isChecked() {\n      return this.value ? 'true' : 'false';\n    },\n    isVerticalLayout() {\n      return this.labelPosition === 'top' || this.labelPosition === 'hidden';\n    }\n  },\n  beforeCreate() {\n    this.uuid = uuid;\n    uuid += 1;\n  },\n  methods: {\n    toggleFeature() {\n      if (!this.disabled) {\n        /**\n         * Emitted when the state changes.\n         *\n         * @event change\n         * @property {boolean} value Whether the toggle is enabled.\n         */\n        this.$emit('change', !this.value);\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('div',{staticClass:\"gl-toggle-wrapper gl-mb-0 gl-flex\",class:{\n    'gl-flex-col': _vm.isVerticalLayout,\n    'gl-toggle-label-inline': !_vm.isVerticalLayout,\n    'is-disabled': _vm.disabled,\n  },attrs:{\"data-testid\":\"toggle-wrapper\"}},[_c('span',{staticClass:\"gl-toggle-label gl-shrink-0\",class:_vm.toggleClasses,attrs:{\"id\":_vm.labelId,\"data-testid\":\"toggle-label\"}},[_vm._t(\"label\",function(){return [_vm._v(_vm._s(_vm.label))]})],2),_vm._v(\" \"),(_vm.shouldRenderDescription)?_c('span',{staticClass:\"gl-description-label gl-mb-3\",attrs:{\"data-testid\":\"toggle-description\"}},[_vm._t(\"description\",function(){return [_vm._v(_vm._s(_vm.description))]})],2):_vm._e(),_vm._v(\" \"),(_vm.name)?_c('input',{attrs:{\"name\":_vm.name,\"type\":\"hidden\"},domProps:{\"value\":_vm.value}}):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"gl-toggle gl-shrink-0\",class:{\n      'is-checked': _vm.value,\n      'is-disabled': _vm.disabled || _vm.isLoading,\n    },attrs:{\"role\":\"switch\",\"aria-checked\":_vm.isChecked,\"aria-labelledby\":_vm.labelId,\"aria-describedby\":_vm.helpId,\"aria-disabled\":_vm.disabled,\"type\":\"button\",\"disabled\":_vm.disabled},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleFeature.apply(null, arguments)}}},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"toggle-loading\",attrs:{\"color\":\"dark\"}}):_c('span',{staticClass:\"toggle-icon\"},[_c('gl-icon',{attrs:{\"name\":_vm.icon,\"size\":12}})],1)],1),_vm._v(\" \"),(_vm.shouldRenderHelp)?_c('span',{staticClass:\"gl-help-label\",attrs:{\"id\":_vm.helpId,\"data-testid\":\"toggle-help\"}},[_vm._t(\"help\",function(){return [_vm._v(_vm._s(_vm.help))]})],2):_vm._e()])};\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","(function() {\n  var computeScore, countDir, file_coeff, getExtension, getExtensionScore, isMatch, scorePath, scoreSize, tau_depth, _ref;\n\n  _ref = require('./scorer'), isMatch = _ref.isMatch, computeScore = _ref.computeScore, scoreSize = _ref.scoreSize;\n\n  tau_depth = 20;\n\n  file_coeff = 2.5;\n\n  exports.score = function(string, query, options) {\n    var allowErrors, preparedQuery, score, string_lw;\n    preparedQuery = options.preparedQuery, allowErrors = options.allowErrors;\n    if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n      return 0;\n    }\n    string_lw = string.toLowerCase();\n    score = computeScore(string, string_lw, preparedQuery);\n    score = scorePath(string, string_lw, score, options);\n    return Math.ceil(score);\n  };\n\n  scorePath = function(subject, subject_lw, fullPathScore, options) {\n    var alpha, basePathScore, basePos, depth, end, extAdjust, fileLength, pathSeparator, preparedQuery, useExtensionBonus;\n    if (fullPathScore === 0) {\n      return 0;\n    }\n    preparedQuery = options.preparedQuery, useExtensionBonus = options.useExtensionBonus, pathSeparator = options.pathSeparator;\n    end = subject.length - 1;\n    while (subject[end] === pathSeparator) {\n      end--;\n    }\n    basePos = subject.lastIndexOf(pathSeparator, end);\n    fileLength = end - basePos;\n    extAdjust = 1.0;\n    if (useExtensionBonus) {\n      extAdjust += getExtensionScore(subject_lw, preparedQuery.ext, basePos, end, 2);\n      fullPathScore *= extAdjust;\n    }\n    if (basePos === -1) {\n      return fullPathScore;\n    }\n    depth = preparedQuery.depth;\n    while (basePos > -1 && depth-- > 0) {\n      basePos = subject.lastIndexOf(pathSeparator, basePos - 1);\n    }\n    basePathScore = basePos === -1 ? fullPathScore : extAdjust * computeScore(subject.slice(basePos + 1, end + 1), subject_lw.slice(basePos + 1, end + 1), preparedQuery);\n    alpha = 0.5 * tau_depth / (tau_depth + countDir(subject, end + 1, pathSeparator));\n    return alpha * basePathScore + (1 - alpha) * fullPathScore * scoreSize(0, file_coeff * fileLength);\n  };\n\n  exports.countDir = countDir = function(path, end, pathSeparator) {\n    var count, i;\n    if (end < 1) {\n      return 0;\n    }\n    count = 0;\n    i = -1;\n    while (++i < end && path[i] === pathSeparator) {\n      continue;\n    }\n    while (++i < end) {\n      if (path[i] === pathSeparator) {\n        count++;\n        while (++i < end && path[i] === pathSeparator) {\n          continue;\n        }\n      }\n    }\n    return count;\n  };\n\n  exports.getExtension = getExtension = function(str) {\n    var pos;\n    pos = str.lastIndexOf(\".\");\n    if (pos < 0) {\n      return \"\";\n    } else {\n      return str.substr(pos + 1);\n    }\n  };\n\n  getExtensionScore = function(candidate, ext, startPos, endPos, maxDepth) {\n    var m, matched, n, pos;\n    if (!ext.length) {\n      return 0;\n    }\n    pos = candidate.lastIndexOf(\".\", endPos);\n    if (!(pos > startPos)) {\n      return 0;\n    }\n    n = ext.length;\n    m = endPos - pos;\n    if (m < n) {\n      n = m;\n      m = ext.length;\n    }\n    pos++;\n    matched = -1;\n    while (++matched < n) {\n      if (candidate[pos + matched] !== ext[matched]) {\n        break;\n      }\n    }\n    if (matched === 0 && maxDepth > 0) {\n      return 0.9 * getExtensionScore(candidate, ext, startPos, pos - 2, maxDepth - 1);\n    }\n    return matched / m;\n  };\n\n}).call(this);\n","import { labelColorOptions } from '../../../utils/constants';\nimport { colorFromBackground } from '../../../utils/utils';\nimport GlButton from '../button/button';\nimport GlIcon from '../icon/icon';\nimport GlLink from '../link/link';\nimport GlTooltip from '../tooltip/tooltip';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlLabel',\n  components: {\n    GlButton,\n    GlIcon,\n    GlLink,\n    GlTooltip\n  },\n  props: {\n    backgroundColor: {\n      type: String,\n      required: true,\n      validator: value => /^(#|rgb|rgba)/.test(value)\n    },\n    title: {\n      type: String,\n      required: true,\n      default: ''\n    },\n    description: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    tooltipPlacement: {\n      type: String,\n      required: false,\n      default: 'top'\n    },\n    target: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    scoped: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    showCloseButton: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      splitScopedLabelIndex: this.title.lastIndexOf('::')\n    };\n  },\n  computed: {\n    cssClasses() {\n      const textColorVariant = colorFromBackground(this.backgroundColor);\n      return {\n        'gl-label-scoped': this.scoped,\n        'gl-label-text-dark': textColorVariant === labelColorOptions.dark,\n        'gl-label-text-light': textColorVariant === labelColorOptions.light\n      };\n    },\n    cssVariables() {\n      return {\n        '--label-background-color': this.backgroundColor,\n        '--label-inset-border': `inset 0 0 0 2px ${this.backgroundColor}`\n      };\n    },\n    scopedKey() {\n      return this.scoped ? this.title.slice(0, this.splitScopedLabelIndex) : this.title;\n    },\n    scopedValue() {\n      return this.title.slice(this.splitScopedLabelIndex + 2);\n    },\n    labelComponent() {\n      return this.target ? GlLink : 'span';\n    },\n    tooltipTarget() {\n      return this.target ? this.$refs.labelTitle.$el : this.$refs.labelTitle;\n    }\n  },\n  watch: {\n    title() {\n      this.splitScopedLabelIndex = this.title.lastIndexOf('::');\n    }\n  },\n  methods: {\n    onClick(e) {\n      /**\n       * Emitted when label is clicked\n       *\n       * @event click\n       * @type {object}\n       */\n      this.$emit('click', e);\n    },\n    onClose(e) {\n      /**\n       * Emitted when x is clicked\n       *\n       * @event close\n       * @type {object}\n       */\n      this.$emit('close', e);\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('span',_vm._b({staticClass:\"gl-label\",class:_vm.cssClasses,style:(_vm.cssVariables),on:{\"click\":_vm.onClick}},'span',_vm.$attrs,false),[_c(_vm.labelComponent,{ref:\"labelTitle\",tag:\"component\",staticClass:\"gl-label-link\",class:{ 'gl-label-link-underline': _vm.target },attrs:{\"href\":_vm.target ? _vm.target : false,\"tabindex\":\"0\"}},[_c('span',{staticClass:\"gl-label-text\"},[_vm._v(\"\\n      \"+_vm._s(_vm.scopedKey)+\"\\n    \")]),_vm._v(\" \"),(_vm.scoped && _vm.scopedValue)?_c('span',{staticClass:\"gl-label-text-scoped\"},[_vm._v(\"\\n      \"+_vm._s(_vm.scopedValue)+\"\\n    \")]):_vm._e()]),_vm._v(\" \"),(_vm.showCloseButton)?_c('gl-button',{staticClass:\"gl-label-close !gl-p-0\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"variant\":\"reset\",\"aria-label\":\"Remove label\",\"disabled\":_vm.disabled},on:{\"click\":_vm.onClose}},[_c('gl-icon',{attrs:{\"name\":\"close-xs\",\"size\":12}})],1):_vm._e(),_vm._v(\" \"),(_vm.description)?_c('gl-tooltip',{attrs:{\"target\":function () { return _vm.tooltipTarget; },\"placement\":_vm.tooltipPlacement,\"boundary\":\"viewport\"}},[(_vm.scoped)?_c('span',{staticClass:\"gl-label-tooltip-title\"},[_vm._v(\"Scoped label\")]):_vm._e(),_vm._v(\"\\n    \"+_vm._s(_vm.description)+\"\\n  \")]):_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 { extend, isVue3 } from '../vue';\nimport { isUndefined, isArray } from '../utils/inspect';\n\n// Mixin to determine if an event listener has been registered\n\n// @vue/component\nconst hasListenerMixin = extend({\n  methods: {\n    hasListener(name) {\n      if (isVue3) {\n        return true;\n      }\n      // Only includes listeners registered via `v-on:name`\n      const $listeners = this.$listeners || {};\n      // Includes `v-on:name` and `this.$on('name')` registered listeners\n      // Note this property is not part of the public Vue API, but it is\n      // the only way to determine if a listener was added via `vm.$on`\n      const $events = this._events || {};\n      // Registered listeners in `this._events` are always an array,\n      // but might be zero length\n      return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\n    }\n  }\n});\n\nexport { hasListenerMixin };\n","import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests';\nimport getMergeRequestsQuery from 'ee_else_ce/merge_requests/list/queries/project/get_merge_requests.query.graphql';\nimport getMergeRequestsCountsQuery from 'ee_else_ce/merge_requests/list/queries/project/get_merge_requests_counts.query.graphql';\nimport { addShortcutsExtension } from '~/behaviors/shortcuts';\nimport ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation';\nimport IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys';\nimport { FILTERED_SEARCH } from '~/filtered_search/constants';\nimport { initBulkUpdateSidebar, initCsvImportExportButtons, initIssuableByEmail } from '~/issuable';\nimport initFilteredSearch from '~/pages/search/init_filtered_search';\nimport { mountMoreActionsDropdown, mountMergeRequestListsApp } from '~/merge_requests/list';\n\ninitBulkUpdateSidebar('merge_request_');\n\naddExtraTokensForMergeRequests(IssuableFilteredSearchTokenKeys);\nIssuableFilteredSearchTokenKeys.removeTokensForKeys('iteration');\n\ninitFilteredSearch({\n  page: FILTERED_SEARCH.MERGE_REQUESTS,\n  filteredSearchTokenKeys: IssuableFilteredSearchTokenKeys,\n  useDefaultState: true,\n});\n\naddShortcutsExtension(ShortcutsNavigation);\n\ninitIssuableByEmail();\ninitCsvImportExportButtons();\nmountMoreActionsDropdown();\nmountMergeRequestListsApp({ getMergeRequestsQuery, getMergeRequestsCountsQuery });\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n",";(function (global) {\n    \"use strict\";\n\n    var lastId = -1;\n\n    // Visibility.js allow you to know, that your web page is in the background\n    // tab and thus not visible to the user. This library is wrap under\n    // Page Visibility API. It fix problems with different vendor prefixes and\n    // add high-level useful functions.\n    var self = {\n\n        // Call callback only when page become to visible for user or\n        // call it now if page is visible now or Page Visibility API\n        // doesn’t supported.\n        //\n        // Return false if API isn’t supported, true if page is already visible\n        // or listener ID (you can use it in `unbind` method) if page isn’t\n        // visible now.\n        //\n        //   Visibility.onVisible(function () {\n        //       startIntroAnimation();\n        //   });\n        onVisible: function (callback) {\n            var support = self.isSupported();\n            if ( !support || !self.hidden() ) {\n                callback();\n                return support;\n            }\n\n            var listener = self.change(function (e, state) {\n                if ( !self.hidden() ) {\n                    self.unbind(listener);\n                    callback();\n                }\n            });\n            return listener;\n        },\n\n        // Call callback when visibility will be changed. First argument for\n        // callback will be original event object, second will be visibility\n        // state name.\n        //\n        // Return listener ID to unbind listener by `unbind` method.\n        //\n        // If Page Visibility API doesn’t supported method will be return false\n        // and callback never will be called.\n        //\n        //   Visibility.change(function(e, state) {\n        //       Statistics.visibilityChange(state);\n        //   });\n        //\n        // It is just proxy to `visibilitychange` event, but use vendor prefix.\n        change: function (callback) {\n            if ( !self.isSupported() ) {\n                return false;\n            }\n            lastId += 1;\n            var number = lastId;\n            self._callbacks[number] = callback;\n            self._listen();\n            return number;\n        },\n\n        // Remove `change` listener by it ID.\n        //\n        //   var id = Visibility.change(function(e, state) {\n        //       firstChangeCallback();\n        //       Visibility.unbind(id);\n        //   });\n        unbind: function (id) {\n            delete self._callbacks[id];\n        },\n\n        // Call `callback` in any state, expect “prerender”. If current state\n        // is “prerender” it will wait until state will be changed.\n        // If Page Visibility API doesn’t supported, it will call `callback`\n        // immediately.\n        //\n        // Return false if API isn’t supported, true if page is already after\n        // prerendering or listener ID (you can use it in `unbind` method)\n        // if page is prerended now.\n        //\n        //   Visibility.afterPrerendering(function () {\n        //       Statistics.countVisitor();\n        //   });\n        afterPrerendering: function (callback) {\n            var support   = self.isSupported();\n            var prerender = 'prerender';\n\n            if ( !support || prerender != self.state() ) {\n                callback();\n                return support;\n            }\n\n            var listener = self.change(function (e, state) {\n                if ( prerender != state ) {\n                    self.unbind(listener);\n                    callback();\n                }\n            });\n            return listener;\n        },\n\n        // Return true if page now isn’t visible to user.\n        //\n        //   if ( !Visibility.hidden() ) {\n        //       VideoPlayer.play();\n        //   }\n        //\n        // It is just proxy to `document.hidden`, but use vendor prefix.\n        hidden: function () {\n            return !!(self._doc.hidden || self._doc.webkitHidden);\n        },\n\n        // Return visibility state: 'visible', 'hidden' or 'prerender'.\n        //\n        //   if ( 'prerender' == Visibility.state() ) {\n        //       Statistics.pageIsPrerendering();\n        //   }\n        //\n        // Don’t use `Visibility.state()` to detect, is page visible, because\n        // visibility states can extend in next API versions.\n        // Use more simpler and general `Visibility.hidden()` for this cases.\n        //\n        // It is just proxy to `document.visibilityState`, but use\n        // vendor prefix.\n        state: function () {\n            return self._doc.visibilityState       ||\n                   self._doc.webkitVisibilityState ||\n                   'visible';\n        },\n\n        // Return true if browser support Page Visibility API.\n        //\n        //   if ( Visibility.isSupported() ) {\n        //       Statistics.startTrackingVisibility();\n        //       Visibility.change(function(e, state)) {\n        //           Statistics.trackVisibility(state);\n        //       });\n        //   }\n        isSupported: function () {\n            return !!(self._doc.visibilityState ||\n                      self._doc.webkitVisibilityState);\n        },\n\n        // Link to document object to change it in tests.\n        _doc: document || {},\n\n        // Callbacks from `change` method, that wait visibility changes.\n        _callbacks: { },\n\n        // Listener for `visibilitychange` event.\n        _change: function(event) {\n            var state = self.state();\n\n            for ( var i in self._callbacks ) {\n                self._callbacks[i].call(self._doc, event, state);\n            }\n        },\n\n        // Set listener for `visibilitychange` event.\n        _listen: function () {\n            if ( self._init ) {\n                return;\n            }\n\n            var event = 'visibilitychange';\n            if ( self._doc.webkitVisibilityState ) {\n                event = 'webkit' + event;\n            }\n\n            var listener = function () {\n                self._change.apply(self, arguments);\n            };\n            if ( self._doc.addEventListener ) {\n                self._doc.addEventListener(event, listener);\n            } else {\n                self._doc.attachEvent(event, listener);\n            }\n            self._init = true;\n        }\n\n    };\n\n    if ( typeof(module) != 'undefined' && module.exports ) {\n        module.exports = self;\n    } else {\n        global.Visibility = self;\n    }\n\n})(this);\n","/*!\n  * vue-router v3.6.5\n  * (c) 2022 Evan You\n  * @license MIT\n  */\n/*  */\n\nfunction assert (condition, message) {\n  if (!condition) {\n    throw new Error((\"[vue-router] \" + message))\n  }\n}\n\nfunction warn (condition, message) {\n  if (!condition) {\n    typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n  }\n}\n\nfunction extend (a, b) {\n  for (var key in b) {\n    a[key] = b[key];\n  }\n  return a\n}\n\n/*  */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n    .replace(encodeReserveRE, encodeReserveReplacer)\n    .replace(commaRE, ','); };\n\nfunction decode (str) {\n  try {\n    return decodeURIComponent(str)\n  } catch (err) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n    }\n  }\n  return str\n}\n\nfunction resolveQuery (\n  query,\n  extraQuery,\n  _parseQuery\n) {\n  if ( extraQuery === void 0 ) extraQuery = {};\n\n  var parse = _parseQuery || parseQuery;\n  var parsedQuery;\n  try {\n    parsedQuery = parse(query || '');\n  } catch (e) {\n    process.env.NODE_ENV !== 'production' && warn(false, e.message);\n    parsedQuery = {};\n  }\n  for (var key in extraQuery) {\n    var value = extraQuery[key];\n    parsedQuery[key] = Array.isArray(value)\n      ? value.map(castQueryParamValue)\n      : castQueryParamValue(value);\n  }\n  return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n  var res = {};\n\n  query = query.trim().replace(/^(\\?|#|&)/, '');\n\n  if (!query) {\n    return res\n  }\n\n  query.split('&').forEach(function (param) {\n    var parts = param.replace(/\\+/g, ' ').split('=');\n    var key = decode(parts.shift());\n    var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n    if (res[key] === undefined) {\n      res[key] = val;\n    } else if (Array.isArray(res[key])) {\n      res[key].push(val);\n    } else {\n      res[key] = [res[key], val];\n    }\n  });\n\n  return res\n}\n\nfunction stringifyQuery (obj) {\n  var res = obj\n    ? Object.keys(obj)\n      .map(function (key) {\n        var val = obj[key];\n\n        if (val === undefined) {\n          return ''\n        }\n\n        if (val === null) {\n          return encode(key)\n        }\n\n        if (Array.isArray(val)) {\n          var result = [];\n          val.forEach(function (val2) {\n            if (val2 === undefined) {\n              return\n            }\n            if (val2 === null) {\n              result.push(encode(key));\n            } else {\n              result.push(encode(key) + '=' + encode(val2));\n            }\n          });\n          return result.join('&')\n        }\n\n        return encode(key) + '=' + encode(val)\n      })\n      .filter(function (x) { return x.length > 0; })\n      .join('&')\n    : null;\n  return res ? (\"?\" + res) : ''\n}\n\n/*  */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n  record,\n  location,\n  redirectedFrom,\n  router\n) {\n  var stringifyQuery = router && router.options.stringifyQuery;\n\n  var query = location.query || {};\n  try {\n    query = clone(query);\n  } catch (e) {}\n\n  var route = {\n    name: location.name || (record && record.name),\n    meta: (record && record.meta) || {},\n    path: location.path || '/',\n    hash: location.hash || '',\n    query: query,\n    params: location.params || {},\n    fullPath: getFullPath(location, stringifyQuery),\n    matched: record ? formatMatch(record) : []\n  };\n  if (redirectedFrom) {\n    route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n  }\n  return Object.freeze(route)\n}\n\nfunction clone (value) {\n  if (Array.isArray(value)) {\n    return value.map(clone)\n  } else if (value && typeof value === 'object') {\n    var res = {};\n    for (var key in value) {\n      res[key] = clone(value[key]);\n    }\n    return res\n  } else {\n    return value\n  }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n  path: '/'\n});\n\nfunction formatMatch (record) {\n  var res = [];\n  while (record) {\n    res.unshift(record);\n    record = record.parent;\n  }\n  return res\n}\n\nfunction getFullPath (\n  ref,\n  _stringifyQuery\n) {\n  var path = ref.path;\n  var query = ref.query; if ( query === void 0 ) query = {};\n  var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n  var stringify = _stringifyQuery || stringifyQuery;\n  return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n  if (b === START) {\n    return a === b\n  } else if (!b) {\n    return false\n  } else if (a.path && b.path) {\n    return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n      a.hash === b.hash &&\n      isObjectEqual(a.query, b.query))\n  } else if (a.name && b.name) {\n    return (\n      a.name === b.name &&\n      (onlyPath || (\n        a.hash === b.hash &&\n      isObjectEqual(a.query, b.query) &&\n      isObjectEqual(a.params, b.params))\n      )\n    )\n  } else {\n    return false\n  }\n}\n\nfunction isObjectEqual (a, b) {\n  if ( a === void 0 ) a = {};\n  if ( b === void 0 ) b = {};\n\n  // handle null value #1566\n  if (!a || !b) { return a === b }\n  var aKeys = Object.keys(a).sort();\n  var bKeys = Object.keys(b).sort();\n  if (aKeys.length !== bKeys.length) {\n    return false\n  }\n  return aKeys.every(function (key, i) {\n    var aVal = a[key];\n    var bKey = bKeys[i];\n    if (bKey !== key) { return false }\n    var bVal = b[key];\n    // query values can be null and undefined\n    if (aVal == null || bVal == null) { return aVal === bVal }\n    // check nested equality\n    if (typeof aVal === 'object' && typeof bVal === 'object') {\n      return isObjectEqual(aVal, bVal)\n    }\n    return String(aVal) === String(bVal)\n  })\n}\n\nfunction isIncludedRoute (current, target) {\n  return (\n    current.path.replace(trailingSlashRE, '/').indexOf(\n      target.path.replace(trailingSlashRE, '/')\n    ) === 0 &&\n    (!target.hash || current.hash === target.hash) &&\n    queryIncludes(current.query, target.query)\n  )\n}\n\nfunction queryIncludes (current, target) {\n  for (var key in target) {\n    if (!(key in current)) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction handleRouteEntered (route) {\n  for (var i = 0; i < route.matched.length; i++) {\n    var record = route.matched[i];\n    for (var name in record.instances) {\n      var instance = record.instances[name];\n      var cbs = record.enteredCbs[name];\n      if (!instance || !cbs) { continue }\n      delete record.enteredCbs[name];\n      for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n        if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n      }\n    }\n  }\n}\n\nvar View = {\n  name: 'RouterView',\n  functional: true,\n  props: {\n    name: {\n      type: String,\n      default: 'default'\n    }\n  },\n  render: function render (_, ref) {\n    var props = ref.props;\n    var children = ref.children;\n    var parent = ref.parent;\n    var data = ref.data;\n\n    // used by devtools to display a router-view badge\n    data.routerView = true;\n\n    // directly use parent context's createElement() function\n    // so that components rendered by router-view can resolve named slots\n    var h = parent.$createElement;\n    var name = props.name;\n    var route = parent.$route;\n    var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n    // determine current view depth, also check to see if the tree\n    // has been toggled inactive but kept-alive.\n    var depth = 0;\n    var inactive = false;\n    while (parent && parent._routerRoot !== parent) {\n      var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n      if (vnodeData.routerView) {\n        depth++;\n      }\n      if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n        inactive = true;\n      }\n      parent = parent.$parent;\n    }\n    data.routerViewDepth = depth;\n\n    // render previous view if the tree is inactive and kept-alive\n    if (inactive) {\n      var cachedData = cache[name];\n      var cachedComponent = cachedData && cachedData.component;\n      if (cachedComponent) {\n        // #2301\n        // pass props\n        if (cachedData.configProps) {\n          fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n        }\n        return h(cachedComponent, data, children)\n      } else {\n        // render previous empty view\n        return h()\n      }\n    }\n\n    var matched = route.matched[depth];\n    var component = matched && matched.components[name];\n\n    // render empty node if no matched route or no config component\n    if (!matched || !component) {\n      cache[name] = null;\n      return h()\n    }\n\n    // cache component\n    cache[name] = { component: component };\n\n    // attach instance registration hook\n    // this will be called in the instance's injected lifecycle hooks\n    data.registerRouteInstance = function (vm, val) {\n      // val could be undefined for unregistration\n      var current = matched.instances[name];\n      if (\n        (val && current !== vm) ||\n        (!val && current === vm)\n      ) {\n        matched.instances[name] = val;\n      }\n    }\n\n    // also register instance in prepatch hook\n    // in case the same component instance is reused across different routes\n    ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n      matched.instances[name] = vnode.componentInstance;\n    };\n\n    // register instance in init hook\n    // in case kept-alive component be actived when routes changed\n    data.hook.init = function (vnode) {\n      if (vnode.data.keepAlive &&\n        vnode.componentInstance &&\n        vnode.componentInstance !== matched.instances[name]\n      ) {\n        matched.instances[name] = vnode.componentInstance;\n      }\n\n      // if the route transition has already been confirmed then we weren't\n      // able to call the cbs during confirmation as the component was not\n      // registered yet, so we call it here.\n      handleRouteEntered(route);\n    };\n\n    var configProps = matched.props && matched.props[name];\n    // save route and configProps in cache\n    if (configProps) {\n      extend(cache[name], {\n        route: route,\n        configProps: configProps\n      });\n      fillPropsinData(component, data, route, configProps);\n    }\n\n    return h(component, data, children)\n  }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n  // resolve props\n  var propsToPass = data.props = resolveProps(route, configProps);\n  if (propsToPass) {\n    // clone to prevent mutation\n    propsToPass = data.props = extend({}, propsToPass);\n    // pass non-declared props as attrs\n    var attrs = data.attrs = data.attrs || {};\n    for (var key in propsToPass) {\n      if (!component.props || !(key in component.props)) {\n        attrs[key] = propsToPass[key];\n        delete propsToPass[key];\n      }\n    }\n  }\n}\n\nfunction resolveProps (route, config) {\n  switch (typeof config) {\n    case 'undefined':\n      return\n    case 'object':\n      return config\n    case 'function':\n      return config(route)\n    case 'boolean':\n      return config ? route.params : undefined\n    default:\n      if (process.env.NODE_ENV !== 'production') {\n        warn(\n          false,\n          \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n          \"expecting an object, function or boolean.\"\n        );\n      }\n  }\n}\n\n/*  */\n\nfunction resolvePath (\n  relative,\n  base,\n  append\n) {\n  var firstChar = relative.charAt(0);\n  if (firstChar === '/') {\n    return relative\n  }\n\n  if (firstChar === '?' || firstChar === '#') {\n    return base + relative\n  }\n\n  var stack = base.split('/');\n\n  // remove trailing segment if:\n  // - not appending\n  // - appending to trailing slash (last segment is empty)\n  if (!append || !stack[stack.length - 1]) {\n    stack.pop();\n  }\n\n  // resolve relative path\n  var segments = relative.replace(/^\\//, '').split('/');\n  for (var i = 0; i < segments.length; i++) {\n    var segment = segments[i];\n    if (segment === '..') {\n      stack.pop();\n    } else if (segment !== '.') {\n      stack.push(segment);\n    }\n  }\n\n  // ensure leading slash\n  if (stack[0] !== '') {\n    stack.unshift('');\n  }\n\n  return stack.join('/')\n}\n\nfunction parsePath (path) {\n  var hash = '';\n  var query = '';\n\n  var hashIndex = path.indexOf('#');\n  if (hashIndex >= 0) {\n    hash = path.slice(hashIndex);\n    path = path.slice(0, hashIndex);\n  }\n\n  var queryIndex = path.indexOf('?');\n  if (queryIndex >= 0) {\n    query = path.slice(queryIndex + 1);\n    path = path.slice(0, queryIndex);\n  }\n\n  return {\n    path: path,\n    query: query,\n    hash: hash\n  }\n}\n\nfunction cleanPath (path) {\n  return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = [];\n  var key = 0;\n  var index = 0;\n  var path = '';\n  var defaultDelimiter = options && options.delimiter || '/';\n  var res;\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0];\n    var escaped = res[1];\n    var offset = res.index;\n    path += str.slice(index, offset);\n    index = offset + m.length;\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1];\n      continue\n    }\n\n    var next = str[index];\n    var prefix = res[2];\n    var name = res[3];\n    var capture = res[4];\n    var group = res[5];\n    var modifier = res[6];\n    var asterisk = res[7];\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path);\n      path = '';\n    }\n\n    var partial = prefix != null && next != null && next !== prefix;\n    var repeat = modifier === '+' || modifier === '*';\n    var optional = modifier === '?' || modifier === '*';\n    var delimiter = res[2] || defaultDelimiter;\n    var pattern = capture || group;\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    });\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index);\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path);\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length);\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n    }\n  }\n\n  return function (obj, opts) {\n    var path = '';\n    var data = obj || {};\n    var options = opts || {};\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n\n      if (typeof token === 'string') {\n        path += token;\n\n        continue\n      }\n\n      var value = data[token.name];\n      var segment;\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix;\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j]);\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment;\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment;\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys;\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g);\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      });\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = [];\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source);\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  var strict = options.strict;\n  var end = options.end !== false;\n  var route = '';\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (typeof token === 'string') {\n      route += escapeString(token);\n    } else {\n      var prefix = escapeString(token.prefix);\n      var capture = '(?:' + token.pattern + ')';\n\n      keys.push(token);\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*';\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?';\n        } else {\n          capture = prefix + '(' + capture + ')?';\n        }\n      } else {\n        capture = prefix + '(' + capture + ')';\n      }\n\n      route += capture;\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/');\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n  }\n\n  if (end) {\n    route += '$';\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/*  */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n  path,\n  params,\n  routeMsg\n) {\n  params = params || {};\n  try {\n    var filler =\n      regexpCompileCache[path] ||\n      (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n    // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n    // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n    if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n    return filler(params, { pretty: true })\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      // Fix #3072 no warn if `pathMatch` is string\n      warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n    }\n    return ''\n  } finally {\n    // delete the 0 if it was added\n    delete params[0];\n  }\n}\n\n/*  */\n\nfunction normalizeLocation (\n  raw,\n  current,\n  append,\n  router\n) {\n  var next = typeof raw === 'string' ? { path: raw } : raw;\n  // named target\n  if (next._normalized) {\n    return next\n  } else if (next.name) {\n    next = extend({}, raw);\n    var params = next.params;\n    if (params && typeof params === 'object') {\n      next.params = extend({}, params);\n    }\n    return next\n  }\n\n  // relative params\n  if (!next.path && next.params && current) {\n    next = extend({}, next);\n    next._normalized = true;\n    var params$1 = extend(extend({}, current.params), next.params);\n    if (current.name) {\n      next.name = current.name;\n      next.params = params$1;\n    } else if (current.matched.length) {\n      var rawPath = current.matched[current.matched.length - 1].path;\n      next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n    } else if (process.env.NODE_ENV !== 'production') {\n      warn(false, \"relative params navigation requires a current route.\");\n    }\n    return next\n  }\n\n  var parsedPath = parsePath(next.path || '');\n  var basePath = (current && current.path) || '/';\n  var path = parsedPath.path\n    ? resolvePath(parsedPath.path, basePath, append || next.append)\n    : basePath;\n\n  var query = resolveQuery(\n    parsedPath.query,\n    next.query,\n    router && router.options.parseQuery\n  );\n\n  var hash = next.hash || parsedPath.hash;\n  if (hash && hash.charAt(0) !== '#') {\n    hash = \"#\" + hash;\n  }\n\n  return {\n    _normalized: true,\n    path: path,\n    query: query,\n    hash: hash\n  }\n}\n\n/*  */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n  name: 'RouterLink',\n  props: {\n    to: {\n      type: toTypes,\n      required: true\n    },\n    tag: {\n      type: String,\n      default: 'a'\n    },\n    custom: Boolean,\n    exact: Boolean,\n    exactPath: Boolean,\n    append: Boolean,\n    replace: Boolean,\n    activeClass: String,\n    exactActiveClass: String,\n    ariaCurrentValue: {\n      type: String,\n      default: 'page'\n    },\n    event: {\n      type: eventTypes,\n      default: 'click'\n    }\n  },\n  render: function render (h) {\n    var this$1$1 = this;\n\n    var router = this.$router;\n    var current = this.$route;\n    var ref = router.resolve(\n      this.to,\n      current,\n      this.append\n    );\n    var location = ref.location;\n    var route = ref.route;\n    var href = ref.href;\n\n    var classes = {};\n    var globalActiveClass = router.options.linkActiveClass;\n    var globalExactActiveClass = router.options.linkExactActiveClass;\n    // Support global empty active class\n    var activeClassFallback =\n      globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n    var exactActiveClassFallback =\n      globalExactActiveClass == null\n        ? 'router-link-exact-active'\n        : globalExactActiveClass;\n    var activeClass =\n      this.activeClass == null ? activeClassFallback : this.activeClass;\n    var exactActiveClass =\n      this.exactActiveClass == null\n        ? exactActiveClassFallback\n        : this.exactActiveClass;\n\n    var compareTarget = route.redirectedFrom\n      ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n      : route;\n\n    classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n    classes[activeClass] = this.exact || this.exactPath\n      ? classes[exactActiveClass]\n      : isIncludedRoute(current, compareTarget);\n\n    var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n    var handler = function (e) {\n      if (guardEvent(e)) {\n        if (this$1$1.replace) {\n          router.replace(location, noop);\n        } else {\n          router.push(location, noop);\n        }\n      }\n    };\n\n    var on = { click: guardEvent };\n    if (Array.isArray(this.event)) {\n      this.event.forEach(function (e) {\n        on[e] = handler;\n      });\n    } else {\n      on[this.event] = handler;\n    }\n\n    var data = { class: classes };\n\n    var scopedSlot =\n      !this.$scopedSlots.$hasNormal &&\n      this.$scopedSlots.default &&\n      this.$scopedSlots.default({\n        href: href,\n        route: route,\n        navigate: handler,\n        isActive: classes[activeClass],\n        isExactActive: classes[exactActiveClass]\n      });\n\n    if (scopedSlot) {\n      if (process.env.NODE_ENV !== 'production' && !this.custom) {\n        !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n        warnedCustomSlot = true;\n      }\n      if (scopedSlot.length === 1) {\n        return scopedSlot[0]\n      } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\n            false,\n            (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n          );\n        }\n        return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n      }\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if ('tag' in this.$options.propsData && !warnedTagProp) {\n        warn(\n          false,\n          \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n        );\n        warnedTagProp = true;\n      }\n      if ('event' in this.$options.propsData && !warnedEventProp) {\n        warn(\n          false,\n          \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n        );\n        warnedEventProp = true;\n      }\n    }\n\n    if (this.tag === 'a') {\n      data.on = on;\n      data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n    } else {\n      // find the first <a> child and apply listener and href\n      var a = findAnchor(this.$slots.default);\n      if (a) {\n        // in case the <a> is a static node\n        a.isStatic = false;\n        var aData = (a.data = extend({}, a.data));\n        aData.on = aData.on || {};\n        // transform existing events in both objects into arrays so we can push later\n        for (var event in aData.on) {\n          var handler$1 = aData.on[event];\n          if (event in on) {\n            aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n          }\n        }\n        // append new listeners for router-link\n        for (var event$1 in on) {\n          if (event$1 in aData.on) {\n            // on[event] is always a function\n            aData.on[event$1].push(on[event$1]);\n          } else {\n            aData.on[event$1] = handler;\n          }\n        }\n\n        var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n        aAttrs.href = href;\n        aAttrs['aria-current'] = ariaCurrentValue;\n      } else {\n        // doesn't have <a> child, apply listener to self\n        data.on = on;\n      }\n    }\n\n    return h(this.tag, data, this.$slots.default)\n  }\n};\n\nfunction guardEvent (e) {\n  // don't redirect with control keys\n  if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n  // don't redirect when preventDefault called\n  if (e.defaultPrevented) { return }\n  // don't redirect on right click\n  if (e.button !== undefined && e.button !== 0) { return }\n  // don't redirect if `target=\"_blank\"`\n  if (e.currentTarget && e.currentTarget.getAttribute) {\n    var target = e.currentTarget.getAttribute('target');\n    if (/\\b_blank\\b/i.test(target)) { return }\n  }\n  // this may be a Weex event which doesn't have this method\n  if (e.preventDefault) {\n    e.preventDefault();\n  }\n  return true\n}\n\nfunction findAnchor (children) {\n  if (children) {\n    var child;\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      if (child.tag === 'a') {\n        return child\n      }\n      if (child.children && (child = findAnchor(child.children))) {\n        return child\n      }\n    }\n  }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n  if (install.installed && _Vue === Vue) { return }\n  install.installed = true;\n\n  _Vue = Vue;\n\n  var isDef = function (v) { return v !== undefined; };\n\n  var registerInstance = function (vm, callVal) {\n    var i = vm.$options._parentVnode;\n    if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n      i(vm, callVal);\n    }\n  };\n\n  Vue.mixin({\n    beforeCreate: function beforeCreate () {\n      if (isDef(this.$options.router)) {\n        this._routerRoot = this;\n        this._router = this.$options.router;\n        this._router.init(this);\n        Vue.util.defineReactive(this, '_route', this._router.history.current);\n      } else {\n        this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n      }\n      registerInstance(this, this);\n    },\n    destroyed: function destroyed () {\n      registerInstance(this);\n    }\n  });\n\n  Object.defineProperty(Vue.prototype, '$router', {\n    get: function get () { return this._routerRoot._router }\n  });\n\n  Object.defineProperty(Vue.prototype, '$route', {\n    get: function get () { return this._routerRoot._route }\n  });\n\n  Vue.component('RouterView', View);\n  Vue.component('RouterLink', Link);\n\n  var strats = Vue.config.optionMergeStrategies;\n  // use the same hook merging strategy for route hooks\n  strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/*  */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/*  */\n\nfunction createRouteMap (\n  routes,\n  oldPathList,\n  oldPathMap,\n  oldNameMap,\n  parentRoute\n) {\n  // the path list is used to control path matching priority\n  var pathList = oldPathList || [];\n  // $flow-disable-line\n  var pathMap = oldPathMap || Object.create(null);\n  // $flow-disable-line\n  var nameMap = oldNameMap || Object.create(null);\n\n  routes.forEach(function (route) {\n    addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n  });\n\n  // ensure wildcard routes are always at the end\n  for (var i = 0, l = pathList.length; i < l; i++) {\n    if (pathList[i] === '*') {\n      pathList.push(pathList.splice(i, 1)[0]);\n      l--;\n      i--;\n    }\n  }\n\n  if (process.env.NODE_ENV === 'development') {\n    // warn if routes do not include leading slashes\n    var found = pathList\n    // check for missing leading slash\n      .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n    if (found.length > 0) {\n      var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n      warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n    }\n  }\n\n  return {\n    pathList: pathList,\n    pathMap: pathMap,\n    nameMap: nameMap\n  }\n}\n\nfunction addRouteRecord (\n  pathList,\n  pathMap,\n  nameMap,\n  route,\n  parent,\n  matchAs\n) {\n  var path = route.path;\n  var name = route.name;\n  if (process.env.NODE_ENV !== 'production') {\n    assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n    assert(\n      typeof route.component !== 'string',\n      \"route config \\\"component\\\" for path: \" + (String(\n        path || name\n      )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n    );\n\n    warn(\n      // eslint-disable-next-line no-control-regex\n      !/[^\\u0000-\\u007F]+/.test(path),\n      \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n        \"your path is correctly encoded before passing it to the router. Use \" +\n        \"encodeURI to encode static segments of your path.\"\n    );\n  }\n\n  var pathToRegexpOptions =\n    route.pathToRegexpOptions || {};\n  var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n  if (typeof route.caseSensitive === 'boolean') {\n    pathToRegexpOptions.sensitive = route.caseSensitive;\n  }\n\n  var record = {\n    path: normalizedPath,\n    regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n    components: route.components || { default: route.component },\n    alias: route.alias\n      ? typeof route.alias === 'string'\n        ? [route.alias]\n        : route.alias\n      : [],\n    instances: {},\n    enteredCbs: {},\n    name: name,\n    parent: parent,\n    matchAs: matchAs,\n    redirect: route.redirect,\n    beforeEnter: route.beforeEnter,\n    meta: route.meta || {},\n    props:\n      route.props == null\n        ? {}\n        : route.components\n          ? route.props\n          : { default: route.props }\n  };\n\n  if (route.children) {\n    // Warn if route is named, does not redirect and has a default child route.\n    // If users navigate to this route by name, the default child will\n    // not be rendered (GH Issue #629)\n    if (process.env.NODE_ENV !== 'production') {\n      if (\n        route.name &&\n        !route.redirect &&\n        route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n      ) {\n        warn(\n          false,\n          \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n            \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n            \"the default child route will not be rendered. Remove the name from \" +\n            \"this route and use the name of the default child route for named \" +\n            \"links instead.\"\n        );\n      }\n    }\n    route.children.forEach(function (child) {\n      var childMatchAs = matchAs\n        ? cleanPath((matchAs + \"/\" + (child.path)))\n        : undefined;\n      addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n    });\n  }\n\n  if (!pathMap[record.path]) {\n    pathList.push(record.path);\n    pathMap[record.path] = record;\n  }\n\n  if (route.alias !== undefined) {\n    var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n    for (var i = 0; i < aliases.length; ++i) {\n      var alias = aliases[i];\n      if (process.env.NODE_ENV !== 'production' && alias === path) {\n        warn(\n          false,\n          (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n        );\n        // skip in dev to make it work\n        continue\n      }\n\n      var aliasRoute = {\n        path: alias,\n        children: route.children\n      };\n      addRouteRecord(\n        pathList,\n        pathMap,\n        nameMap,\n        aliasRoute,\n        parent,\n        record.path || '/' // matchAs\n      );\n    }\n  }\n\n  if (name) {\n    if (!nameMap[name]) {\n      nameMap[name] = record;\n    } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n      warn(\n        false,\n        \"Duplicate named routes definition: \" +\n          \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n      );\n    }\n  }\n}\n\nfunction compileRouteRegex (\n  path,\n  pathToRegexpOptions\n) {\n  var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n  if (process.env.NODE_ENV !== 'production') {\n    var keys = Object.create(null);\n    regex.keys.forEach(function (key) {\n      warn(\n        !keys[key.name],\n        (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n      );\n      keys[key.name] = true;\n    });\n  }\n  return regex\n}\n\nfunction normalizePath (\n  path,\n  parent,\n  strict\n) {\n  if (!strict) { path = path.replace(/\\/$/, ''); }\n  if (path[0] === '/') { return path }\n  if (parent == null) { return path }\n  return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/*  */\n\n\n\nfunction createMatcher (\n  routes,\n  router\n) {\n  var ref = createRouteMap(routes);\n  var pathList = ref.pathList;\n  var pathMap = ref.pathMap;\n  var nameMap = ref.nameMap;\n\n  function addRoutes (routes) {\n    createRouteMap(routes, pathList, pathMap, nameMap);\n  }\n\n  function addRoute (parentOrRoute, route) {\n    var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n    // $flow-disable-line\n    createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n    // add aliases of parent\n    if (parent && parent.alias.length) {\n      createRouteMap(\n        // $flow-disable-line route is defined if parent is\n        parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n        pathList,\n        pathMap,\n        nameMap,\n        parent\n      );\n    }\n  }\n\n  function getRoutes () {\n    return pathList.map(function (path) { return pathMap[path]; })\n  }\n\n  function match (\n    raw,\n    currentRoute,\n    redirectedFrom\n  ) {\n    var location = normalizeLocation(raw, currentRoute, false, router);\n    var name = location.name;\n\n    if (name) {\n      var record = nameMap[name];\n      if (process.env.NODE_ENV !== 'production') {\n        warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n      }\n      if (!record) { return _createRoute(null, location) }\n      var paramNames = record.regex.keys\n        .filter(function (key) { return !key.optional; })\n        .map(function (key) { return key.name; });\n\n      if (typeof location.params !== 'object') {\n        location.params = {};\n      }\n\n      if (currentRoute && typeof currentRoute.params === 'object') {\n        for (var key in currentRoute.params) {\n          if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n            location.params[key] = currentRoute.params[key];\n          }\n        }\n      }\n\n      location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n      return _createRoute(record, location, redirectedFrom)\n    } else if (location.path) {\n      location.params = {};\n      for (var i = 0; i < pathList.length; i++) {\n        var path = pathList[i];\n        var record$1 = pathMap[path];\n        if (matchRoute(record$1.regex, location.path, location.params)) {\n          return _createRoute(record$1, location, redirectedFrom)\n        }\n      }\n    }\n    // no match\n    return _createRoute(null, location)\n  }\n\n  function redirect (\n    record,\n    location\n  ) {\n    var originalRedirect = record.redirect;\n    var redirect = typeof originalRedirect === 'function'\n      ? originalRedirect(createRoute(record, location, null, router))\n      : originalRedirect;\n\n    if (typeof redirect === 'string') {\n      redirect = { path: redirect };\n    }\n\n    if (!redirect || typeof redirect !== 'object') {\n      if (process.env.NODE_ENV !== 'production') {\n        warn(\n          false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n        );\n      }\n      return _createRoute(null, location)\n    }\n\n    var re = redirect;\n    var name = re.name;\n    var path = re.path;\n    var query = location.query;\n    var hash = location.hash;\n    var params = location.params;\n    query = re.hasOwnProperty('query') ? re.query : query;\n    hash = re.hasOwnProperty('hash') ? re.hash : hash;\n    params = re.hasOwnProperty('params') ? re.params : params;\n\n    if (name) {\n      // resolved named direct\n      var targetRecord = nameMap[name];\n      if (process.env.NODE_ENV !== 'production') {\n        assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n      }\n      return match({\n        _normalized: true,\n        name: name,\n        query: query,\n        hash: hash,\n        params: params\n      }, undefined, location)\n    } else if (path) {\n      // 1. resolve relative redirect\n      var rawPath = resolveRecordPath(path, record);\n      // 2. resolve params\n      var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n      // 3. rematch with existing query and hash\n      return match({\n        _normalized: true,\n        path: resolvedPath,\n        query: query,\n        hash: hash\n      }, undefined, location)\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n      }\n      return _createRoute(null, location)\n    }\n  }\n\n  function alias (\n    record,\n    location,\n    matchAs\n  ) {\n    var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n    var aliasedMatch = match({\n      _normalized: true,\n      path: aliasedPath\n    });\n    if (aliasedMatch) {\n      var matched = aliasedMatch.matched;\n      var aliasedRecord = matched[matched.length - 1];\n      location.params = aliasedMatch.params;\n      return _createRoute(aliasedRecord, location)\n    }\n    return _createRoute(null, location)\n  }\n\n  function _createRoute (\n    record,\n    location,\n    redirectedFrom\n  ) {\n    if (record && record.redirect) {\n      return redirect(record, redirectedFrom || location)\n    }\n    if (record && record.matchAs) {\n      return alias(record, location, record.matchAs)\n    }\n    return createRoute(record, location, redirectedFrom, router)\n  }\n\n  return {\n    match: match,\n    addRoute: addRoute,\n    getRoutes: getRoutes,\n    addRoutes: addRoutes\n  }\n}\n\nfunction matchRoute (\n  regex,\n  path,\n  params\n) {\n  var m = path.match(regex);\n\n  if (!m) {\n    return false\n  } else if (!params) {\n    return true\n  }\n\n  for (var i = 1, len = m.length; i < len; ++i) {\n    var key = regex.keys[i - 1];\n    if (key) {\n      // Fix #1994: using * with props: true generates a param named 0\n      params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n    }\n  }\n\n  return true\n}\n\nfunction resolveRecordPath (path, record) {\n  return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/*  */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n  inBrowser && window.performance && window.performance.now\n    ? window.performance\n    : Date;\n\nfunction genStateKey () {\n  return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n  return _key\n}\n\nfunction setStateKey (key) {\n  return (_key = key)\n}\n\n/*  */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n  // Prevent browser scroll behavior on History popstate\n  if ('scrollRestoration' in window.history) {\n    window.history.scrollRestoration = 'manual';\n  }\n  // Fix for #1585 for Firefox\n  // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n  // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n  // window.location.protocol + '//' + window.location.host\n  // location.host contains the port and location.hostname doesn't\n  var protocolAndPath = window.location.protocol + '//' + window.location.host;\n  var absolutePath = window.location.href.replace(protocolAndPath, '');\n  // preserve existing history state as it could be overriden by the user\n  var stateCopy = extend({}, window.history.state);\n  stateCopy.key = getStateKey();\n  window.history.replaceState(stateCopy, '', absolutePath);\n  window.addEventListener('popstate', handlePopState);\n  return function () {\n    window.removeEventListener('popstate', handlePopState);\n  }\n}\n\nfunction handleScroll (\n  router,\n  to,\n  from,\n  isPop\n) {\n  if (!router.app) {\n    return\n  }\n\n  var behavior = router.options.scrollBehavior;\n  if (!behavior) {\n    return\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n  }\n\n  // wait until re-render finishes before scrolling\n  router.app.$nextTick(function () {\n    var position = getScrollPosition();\n    var shouldScroll = behavior.call(\n      router,\n      to,\n      from,\n      isPop ? position : null\n    );\n\n    if (!shouldScroll) {\n      return\n    }\n\n    if (typeof shouldScroll.then === 'function') {\n      shouldScroll\n        .then(function (shouldScroll) {\n          scrollToPosition((shouldScroll), position);\n        })\n        .catch(function (err) {\n          if (process.env.NODE_ENV !== 'production') {\n            assert(false, err.toString());\n          }\n        });\n    } else {\n      scrollToPosition(shouldScroll, position);\n    }\n  });\n}\n\nfunction saveScrollPosition () {\n  var key = getStateKey();\n  if (key) {\n    positionStore[key] = {\n      x: window.pageXOffset,\n      y: window.pageYOffset\n    };\n  }\n}\n\nfunction handlePopState (e) {\n  saveScrollPosition();\n  if (e.state && e.state.key) {\n    setStateKey(e.state.key);\n  }\n}\n\nfunction getScrollPosition () {\n  var key = getStateKey();\n  if (key) {\n    return positionStore[key]\n  }\n}\n\nfunction getElementPosition (el, offset) {\n  var docEl = document.documentElement;\n  var docRect = docEl.getBoundingClientRect();\n  var elRect = el.getBoundingClientRect();\n  return {\n    x: elRect.left - docRect.left - offset.x,\n    y: elRect.top - docRect.top - offset.y\n  }\n}\n\nfunction isValidPosition (obj) {\n  return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n    y: isNumber(obj.y) ? obj.y : window.pageYOffset\n  }\n}\n\nfunction normalizeOffset (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : 0,\n    y: isNumber(obj.y) ? obj.y : 0\n  }\n}\n\nfunction isNumber (v) {\n  return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n  var isObject = typeof shouldScroll === 'object';\n  if (isObject && typeof shouldScroll.selector === 'string') {\n    // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n    // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n    var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n      ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n      : document.querySelector(shouldScroll.selector);\n\n    if (el) {\n      var offset =\n        shouldScroll.offset && typeof shouldScroll.offset === 'object'\n          ? shouldScroll.offset\n          : {};\n      offset = normalizeOffset(offset);\n      position = getElementPosition(el, offset);\n    } else if (isValidPosition(shouldScroll)) {\n      position = normalizePosition(shouldScroll);\n    }\n  } else if (isObject && isValidPosition(shouldScroll)) {\n    position = normalizePosition(shouldScroll);\n  }\n\n  if (position) {\n    // $flow-disable-line\n    if ('scrollBehavior' in document.documentElement.style) {\n      window.scrollTo({\n        left: position.x,\n        top: position.y,\n        // $flow-disable-line\n        behavior: shouldScroll.behavior\n      });\n    } else {\n      window.scrollTo(position.x, position.y);\n    }\n  }\n}\n\n/*  */\n\nvar supportsPushState =\n  inBrowser &&\n  (function () {\n    var ua = window.navigator.userAgent;\n\n    if (\n      (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n      ua.indexOf('Mobile Safari') !== -1 &&\n      ua.indexOf('Chrome') === -1 &&\n      ua.indexOf('Windows Phone') === -1\n    ) {\n      return false\n    }\n\n    return window.history && typeof window.history.pushState === 'function'\n  })();\n\nfunction pushState (url, replace) {\n  saveScrollPosition();\n  // try...catch the pushState call to get around Safari\n  // DOM Exception 18 where it limits to 100 pushState calls\n  var history = window.history;\n  try {\n    if (replace) {\n      // preserve existing history state as it could be overriden by the user\n      var stateCopy = extend({}, history.state);\n      stateCopy.key = getStateKey();\n      history.replaceState(stateCopy, '', url);\n    } else {\n      history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n    }\n  } catch (e) {\n    window.location[replace ? 'replace' : 'assign'](url);\n  }\n}\n\nfunction replaceState (url) {\n  pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n  redirected: 2,\n  aborted: 4,\n  cancelled: 8,\n  duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.redirected,\n    (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n      to\n    )) + \"\\\" via a navigation guard.\")\n  )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n  var error = createRouterError(\n    from,\n    to,\n    NavigationFailureType.duplicated,\n    (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n  );\n  // backwards compatible with the first introduction of Errors\n  error.name = 'NavigationDuplicated';\n  return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.cancelled,\n    (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n  )\n}\n\nfunction createNavigationAbortedError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.aborted,\n    (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n  )\n}\n\nfunction createRouterError (from, to, type, message) {\n  var error = new Error(message);\n  error._isRouter = true;\n  error.from = from;\n  error.to = to;\n  error.type = type;\n\n  return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n  if (typeof to === 'string') { return to }\n  if ('path' in to) { return to.path }\n  var location = {};\n  propertiesToLog.forEach(function (key) {\n    if (key in to) { location[key] = to[key]; }\n  });\n  return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n  return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n  return (\n    isError(err) &&\n    err._isRouter &&\n    (errorType == null || err.type === errorType)\n  )\n}\n\n/*  */\n\nfunction runQueue (queue, fn, cb) {\n  var step = function (index) {\n    if (index >= queue.length) {\n      cb();\n    } else {\n      if (queue[index]) {\n        fn(queue[index], function () {\n          step(index + 1);\n        });\n      } else {\n        step(index + 1);\n      }\n    }\n  };\n  step(0);\n}\n\n/*  */\n\nfunction resolveAsyncComponents (matched) {\n  return function (to, from, next) {\n    var hasAsync = false;\n    var pending = 0;\n    var error = null;\n\n    flatMapComponents(matched, function (def, _, match, key) {\n      // if it's a function and doesn't have cid attached,\n      // assume it's an async component resolve function.\n      // we are not using Vue's default async resolving mechanism because\n      // we want to halt the navigation until the incoming component has been\n      // resolved.\n      if (typeof def === 'function' && def.cid === undefined) {\n        hasAsync = true;\n        pending++;\n\n        var resolve = once(function (resolvedDef) {\n          if (isESModule(resolvedDef)) {\n            resolvedDef = resolvedDef.default;\n          }\n          // save resolved on async factory in case it's used elsewhere\n          def.resolved = typeof resolvedDef === 'function'\n            ? resolvedDef\n            : _Vue.extend(resolvedDef);\n          match.components[key] = resolvedDef;\n          pending--;\n          if (pending <= 0) {\n            next();\n          }\n        });\n\n        var reject = once(function (reason) {\n          var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n          process.env.NODE_ENV !== 'production' && warn(false, msg);\n          if (!error) {\n            error = isError(reason)\n              ? reason\n              : new Error(msg);\n            next(error);\n          }\n        });\n\n        var res;\n        try {\n          res = def(resolve, reject);\n        } catch (e) {\n          reject(e);\n        }\n        if (res) {\n          if (typeof res.then === 'function') {\n            res.then(resolve, reject);\n          } else {\n            // new syntax in Vue 2.3\n            var comp = res.component;\n            if (comp && typeof comp.then === 'function') {\n              comp.then(resolve, reject);\n            }\n          }\n        }\n      }\n    });\n\n    if (!hasAsync) { next(); }\n  }\n}\n\nfunction flatMapComponents (\n  matched,\n  fn\n) {\n  return flatten(matched.map(function (m) {\n    return Object.keys(m.components).map(function (key) { return fn(\n      m.components[key],\n      m.instances[key],\n      m, key\n    ); })\n  }))\n}\n\nfunction flatten (arr) {\n  return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n  typeof Symbol === 'function' &&\n  typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n  return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n  var called = false;\n  return function () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    if (called) { return }\n    called = true;\n    return fn.apply(this, args)\n  }\n}\n\n/*  */\n\nvar History = function History (router, base) {\n  this.router = router;\n  this.base = normalizeBase(base);\n  // start with a route object that stands for \"nowhere\"\n  this.current = START;\n  this.pending = null;\n  this.ready = false;\n  this.readyCbs = [];\n  this.readyErrorCbs = [];\n  this.errorCbs = [];\n  this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n  this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n  if (this.ready) {\n    cb();\n  } else {\n    this.readyCbs.push(cb);\n    if (errorCb) {\n      this.readyErrorCbs.push(errorCb);\n    }\n  }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n  this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n  location,\n  onComplete,\n  onAbort\n) {\n    var this$1$1 = this;\n\n  var route;\n  // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n  try {\n    route = this.router.match(location, this.current);\n  } catch (e) {\n    this.errorCbs.forEach(function (cb) {\n      cb(e);\n    });\n    // Exception should still be thrown\n    throw e\n  }\n  var prev = this.current;\n  this.confirmTransition(\n    route,\n    function () {\n      this$1$1.updateRoute(route);\n      onComplete && onComplete(route);\n      this$1$1.ensureURL();\n      this$1$1.router.afterHooks.forEach(function (hook) {\n        hook && hook(route, prev);\n      });\n\n      // fire ready cbs once\n      if (!this$1$1.ready) {\n        this$1$1.ready = true;\n        this$1$1.readyCbs.forEach(function (cb) {\n          cb(route);\n        });\n      }\n    },\n    function (err) {\n      if (onAbort) {\n        onAbort(err);\n      }\n      if (err && !this$1$1.ready) {\n        // Initial redirection should not mark the history as ready yet\n        // because it's triggered by the redirection instead\n        // https://github.com/vuejs/vue-router/issues/3225\n        // https://github.com/vuejs/vue-router/issues/3331\n        if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n          this$1$1.ready = true;\n          this$1$1.readyErrorCbs.forEach(function (cb) {\n            cb(err);\n          });\n        }\n      }\n    }\n  );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n    var this$1$1 = this;\n\n  var current = this.current;\n  this.pending = route;\n  var abort = function (err) {\n    // changed after adding errors with\n    // https://github.com/vuejs/vue-router/pull/3047 before that change,\n    // redirect and aborted navigation would produce an err == null\n    if (!isNavigationFailure(err) && isError(err)) {\n      if (this$1$1.errorCbs.length) {\n        this$1$1.errorCbs.forEach(function (cb) {\n          cb(err);\n        });\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(false, 'uncaught error during route navigation:');\n        }\n        console.error(err);\n      }\n    }\n    onAbort && onAbort(err);\n  };\n  var lastRouteIndex = route.matched.length - 1;\n  var lastCurrentIndex = current.matched.length - 1;\n  if (\n    isSameRoute(route, current) &&\n    // in the case the route map has been dynamically appended to\n    lastRouteIndex === lastCurrentIndex &&\n    route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n  ) {\n    this.ensureURL();\n    if (route.hash) {\n      handleScroll(this.router, current, route, false);\n    }\n    return abort(createNavigationDuplicatedError(current, route))\n  }\n\n  var ref = resolveQueue(\n    this.current.matched,\n    route.matched\n  );\n    var updated = ref.updated;\n    var deactivated = ref.deactivated;\n    var activated = ref.activated;\n\n  var queue = [].concat(\n    // in-component leave guards\n    extractLeaveGuards(deactivated),\n    // global before hooks\n    this.router.beforeHooks,\n    // in-component update hooks\n    extractUpdateHooks(updated),\n    // in-config enter guards\n    activated.map(function (m) { return m.beforeEnter; }),\n    // async components\n    resolveAsyncComponents(activated)\n  );\n\n  var iterator = function (hook, next) {\n    if (this$1$1.pending !== route) {\n      return abort(createNavigationCancelledError(current, route))\n    }\n    try {\n      hook(route, current, function (to) {\n        if (to === false) {\n          // next(false) -> abort navigation, ensure current URL\n          this$1$1.ensureURL(true);\n          abort(createNavigationAbortedError(current, route));\n        } else if (isError(to)) {\n          this$1$1.ensureURL(true);\n          abort(to);\n        } else if (\n          typeof to === 'string' ||\n          (typeof to === 'object' &&\n            (typeof to.path === 'string' || typeof to.name === 'string'))\n        ) {\n          // next('/') or next({ path: '/' }) -> redirect\n          abort(createNavigationRedirectedError(current, route));\n          if (typeof to === 'object' && to.replace) {\n            this$1$1.replace(to);\n          } else {\n            this$1$1.push(to);\n          }\n        } else {\n          // confirm transition and pass on the value\n          next(to);\n        }\n      });\n    } catch (e) {\n      abort(e);\n    }\n  };\n\n  runQueue(queue, iterator, function () {\n    // wait until async components are resolved before\n    // extracting in-component enter guards\n    var enterGuards = extractEnterGuards(activated);\n    var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n    runQueue(queue, iterator, function () {\n      if (this$1$1.pending !== route) {\n        return abort(createNavigationCancelledError(current, route))\n      }\n      this$1$1.pending = null;\n      onComplete(route);\n      if (this$1$1.router.app) {\n        this$1$1.router.app.$nextTick(function () {\n          handleRouteEntered(route);\n        });\n      }\n    });\n  });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n  this.current = route;\n  this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n  // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n  // clean up event listeners\n  // https://github.com/vuejs/vue-router/issues/2341\n  this.listeners.forEach(function (cleanupListener) {\n    cleanupListener();\n  });\n  this.listeners = [];\n\n  // reset current history route\n  // https://github.com/vuejs/vue-router/issues/3294\n  this.current = START;\n  this.pending = null;\n};\n\nfunction normalizeBase (base) {\n  if (!base) {\n    if (inBrowser) {\n      // respect <base> tag\n      var baseEl = document.querySelector('base');\n      base = (baseEl && baseEl.getAttribute('href')) || '/';\n      // strip full URL origin\n      base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n    } else {\n      base = '/';\n    }\n  }\n  // make sure there's the starting slash\n  if (base.charAt(0) !== '/') {\n    base = '/' + base;\n  }\n  // remove trailing slash\n  return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n  current,\n  next\n) {\n  var i;\n  var max = Math.max(current.length, next.length);\n  for (i = 0; i < max; i++) {\n    if (current[i] !== next[i]) {\n      break\n    }\n  }\n  return {\n    updated: next.slice(0, i),\n    activated: next.slice(i),\n    deactivated: current.slice(i)\n  }\n}\n\nfunction extractGuards (\n  records,\n  name,\n  bind,\n  reverse\n) {\n  var guards = flatMapComponents(records, function (def, instance, match, key) {\n    var guard = extractGuard(def, name);\n    if (guard) {\n      return Array.isArray(guard)\n        ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n        : bind(guard, instance, match, key)\n    }\n  });\n  return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n  def,\n  key\n) {\n  if (typeof def !== 'function') {\n    // extend now so that global mixins are applied.\n    def = _Vue.extend(def);\n  }\n  return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n  return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n  return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n  if (instance) {\n    return function boundRouteGuard () {\n      return guard.apply(instance, arguments)\n    }\n  }\n}\n\nfunction extractEnterGuards (\n  activated\n) {\n  return extractGuards(\n    activated,\n    'beforeRouteEnter',\n    function (guard, _, match, key) {\n      return bindEnterGuard(guard, match, key)\n    }\n  )\n}\n\nfunction bindEnterGuard (\n  guard,\n  match,\n  key\n) {\n  return function routeEnterGuard (to, from, next) {\n    return guard(to, from, function (cb) {\n      if (typeof cb === 'function') {\n        if (!match.enteredCbs[key]) {\n          match.enteredCbs[key] = [];\n        }\n        match.enteredCbs[key].push(cb);\n      }\n      next(cb);\n    })\n  }\n}\n\n/*  */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n  function HTML5History (router, base) {\n    History.call(this, router, base);\n\n    this._startLocation = getLocation(this.base);\n  }\n\n  if ( History ) HTML5History.__proto__ = History;\n  HTML5History.prototype = Object.create( History && History.prototype );\n  HTML5History.prototype.constructor = HTML5History;\n\n  HTML5History.prototype.setupListeners = function setupListeners () {\n    var this$1$1 = this;\n\n    if (this.listeners.length > 0) {\n      return\n    }\n\n    var router = this.router;\n    var expectScroll = router.options.scrollBehavior;\n    var supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      this.listeners.push(setupScroll());\n    }\n\n    var handleRoutingEvent = function () {\n      var current = this$1$1.current;\n\n      // Avoiding first `popstate` event dispatched in some browsers but first\n      // history route not updated since async guard at the same time.\n      var location = getLocation(this$1$1.base);\n      if (this$1$1.current === START && location === this$1$1._startLocation) {\n        return\n      }\n\n      this$1$1.transitionTo(location, function (route) {\n        if (supportsScroll) {\n          handleScroll(router, route, current, true);\n        }\n      });\n    };\n    window.addEventListener('popstate', handleRoutingEvent);\n    this.listeners.push(function () {\n      window.removeEventListener('popstate', handleRoutingEvent);\n    });\n  };\n\n  HTML5History.prototype.go = function go (n) {\n    window.history.go(n);\n  };\n\n  HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(location, function (route) {\n      pushState(cleanPath(this$1$1.base + route.fullPath));\n      handleScroll(this$1$1.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  };\n\n  HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(location, function (route) {\n      replaceState(cleanPath(this$1$1.base + route.fullPath));\n      handleScroll(this$1$1.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  };\n\n  HTML5History.prototype.ensureURL = function ensureURL (push) {\n    if (getLocation(this.base) !== this.current.fullPath) {\n      var current = cleanPath(this.base + this.current.fullPath);\n      push ? pushState(current) : replaceState(current);\n    }\n  };\n\n  HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n    return getLocation(this.base)\n  };\n\n  return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n  var path = window.location.pathname;\n  var pathLowerCase = path.toLowerCase();\n  var baseLowerCase = base.toLowerCase();\n  // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n  // https://github.com/vuejs/vue-router/issues/3555\n  // so we ensure the trailing slash in the base\n  if (base && ((pathLowerCase === baseLowerCase) ||\n    (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n    path = path.slice(base.length);\n  }\n  return (path || '/') + window.location.search + window.location.hash\n}\n\n/*  */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n  function HashHistory (router, base, fallback) {\n    History.call(this, router, base);\n    // check history fallback deeplinking\n    if (fallback && checkFallback(this.base)) {\n      return\n    }\n    ensureSlash();\n  }\n\n  if ( History ) HashHistory.__proto__ = History;\n  HashHistory.prototype = Object.create( History && History.prototype );\n  HashHistory.prototype.constructor = HashHistory;\n\n  // this is delayed until the app mounts\n  // to avoid the hashchange listener being fired too early\n  HashHistory.prototype.setupListeners = function setupListeners () {\n    var this$1$1 = this;\n\n    if (this.listeners.length > 0) {\n      return\n    }\n\n    var router = this.router;\n    var expectScroll = router.options.scrollBehavior;\n    var supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      this.listeners.push(setupScroll());\n    }\n\n    var handleRoutingEvent = function () {\n      var current = this$1$1.current;\n      if (!ensureSlash()) {\n        return\n      }\n      this$1$1.transitionTo(getHash(), function (route) {\n        if (supportsScroll) {\n          handleScroll(this$1$1.router, route, current, true);\n        }\n        if (!supportsPushState) {\n          replaceHash(route.fullPath);\n        }\n      });\n    };\n    var eventType = supportsPushState ? 'popstate' : 'hashchange';\n    window.addEventListener(\n      eventType,\n      handleRoutingEvent\n    );\n    this.listeners.push(function () {\n      window.removeEventListener(eventType, handleRoutingEvent);\n    });\n  };\n\n  HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(\n      location,\n      function (route) {\n        pushHash(route.fullPath);\n        handleScroll(this$1$1.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(\n      location,\n      function (route) {\n        replaceHash(route.fullPath);\n        handleScroll(this$1$1.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  HashHistory.prototype.go = function go (n) {\n    window.history.go(n);\n  };\n\n  HashHistory.prototype.ensureURL = function ensureURL (push) {\n    var current = this.current.fullPath;\n    if (getHash() !== current) {\n      push ? pushHash(current) : replaceHash(current);\n    }\n  };\n\n  HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n    return getHash()\n  };\n\n  return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n  var location = getLocation(base);\n  if (!/^\\/#/.test(location)) {\n    window.location.replace(cleanPath(base + '/#' + location));\n    return true\n  }\n}\n\nfunction ensureSlash () {\n  var path = getHash();\n  if (path.charAt(0) === '/') {\n    return true\n  }\n  replaceHash('/' + path);\n  return false\n}\n\nfunction getHash () {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var index = href.indexOf('#');\n  // empty path\n  if (index < 0) { return '' }\n\n  href = href.slice(index + 1);\n\n  return href\n}\n\nfunction getUrl (path) {\n  var href = window.location.href;\n  var i = href.indexOf('#');\n  var base = i >= 0 ? href.slice(0, i) : href;\n  return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n  if (supportsPushState) {\n    pushState(getUrl(path));\n  } else {\n    window.location.hash = path;\n  }\n}\n\nfunction replaceHash (path) {\n  if (supportsPushState) {\n    replaceState(getUrl(path));\n  } else {\n    window.location.replace(getUrl(path));\n  }\n}\n\n/*  */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n  function AbstractHistory (router, base) {\n    History.call(this, router, base);\n    this.stack = [];\n    this.index = -1;\n  }\n\n  if ( History ) AbstractHistory.__proto__ = History;\n  AbstractHistory.prototype = Object.create( History && History.prototype );\n  AbstractHistory.prototype.constructor = AbstractHistory;\n\n  AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    this.transitionTo(\n      location,\n      function (route) {\n        this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n        this$1$1.index++;\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    this.transitionTo(\n      location,\n      function (route) {\n        this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  AbstractHistory.prototype.go = function go (n) {\n    var this$1$1 = this;\n\n    var targetIndex = this.index + n;\n    if (targetIndex < 0 || targetIndex >= this.stack.length) {\n      return\n    }\n    var route = this.stack[targetIndex];\n    this.confirmTransition(\n      route,\n      function () {\n        var prev = this$1$1.current;\n        this$1$1.index = targetIndex;\n        this$1$1.updateRoute(route);\n        this$1$1.router.afterHooks.forEach(function (hook) {\n          hook && hook(route, prev);\n        });\n      },\n      function (err) {\n        if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n          this$1$1.index = targetIndex;\n        }\n      }\n    );\n  };\n\n  AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n    var current = this.stack[this.stack.length - 1];\n    return current ? current.fullPath : '/'\n  };\n\n  AbstractHistory.prototype.ensureURL = function ensureURL () {\n    // noop\n  };\n\n  return AbstractHistory;\n}(History));\n\n/*  */\n\n\n\nvar VueRouter = function VueRouter (options) {\n  if ( options === void 0 ) options = {};\n\n  if (process.env.NODE_ENV !== 'production') {\n    warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n  }\n  this.app = null;\n  this.apps = [];\n  this.options = options;\n  this.beforeHooks = [];\n  this.resolveHooks = [];\n  this.afterHooks = [];\n  this.matcher = createMatcher(options.routes || [], this);\n\n  var mode = options.mode || 'hash';\n  this.fallback =\n    mode === 'history' && !supportsPushState && options.fallback !== false;\n  if (this.fallback) {\n    mode = 'hash';\n  }\n  if (!inBrowser) {\n    mode = 'abstract';\n  }\n  this.mode = mode;\n\n  switch (mode) {\n    case 'history':\n      this.history = new HTML5History(this, options.base);\n      break\n    case 'hash':\n      this.history = new HashHistory(this, options.base, this.fallback);\n      break\n    case 'abstract':\n      this.history = new AbstractHistory(this, options.base);\n      break\n    default:\n      if (process.env.NODE_ENV !== 'production') {\n        assert(false, (\"invalid mode: \" + mode));\n      }\n  }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n  return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n  return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n    var this$1$1 = this;\n\n  process.env.NODE_ENV !== 'production' &&\n    assert(\n      install.installed,\n      \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n        \"before creating root instance.\"\n    );\n\n  this.apps.push(app);\n\n  // set up app destroyed handler\n  // https://github.com/vuejs/vue-router/issues/2639\n  app.$once('hook:destroyed', function () {\n    // clean out app from this.apps array once destroyed\n    var index = this$1$1.apps.indexOf(app);\n    if (index > -1) { this$1$1.apps.splice(index, 1); }\n    // ensure we still have a main app or null if no apps\n    // we do not release the router so it can be reused\n    if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n    if (!this$1$1.app) { this$1$1.history.teardown(); }\n  });\n\n  // main app previously initialized\n  // return as we don't need to set up new history listener\n  if (this.app) {\n    return\n  }\n\n  this.app = app;\n\n  var history = this.history;\n\n  if (history instanceof HTML5History || history instanceof HashHistory) {\n    var handleInitialScroll = function (routeOrError) {\n      var from = history.current;\n      var expectScroll = this$1$1.options.scrollBehavior;\n      var supportsScroll = supportsPushState && expectScroll;\n\n      if (supportsScroll && 'fullPath' in routeOrError) {\n        handleScroll(this$1$1, routeOrError, from, false);\n      }\n    };\n    var setupListeners = function (routeOrError) {\n      history.setupListeners();\n      handleInitialScroll(routeOrError);\n    };\n    history.transitionTo(\n      history.getCurrentLocation(),\n      setupListeners,\n      setupListeners\n    );\n  }\n\n  history.listen(function (route) {\n    this$1$1.apps.forEach(function (app) {\n      app._route = route;\n    });\n  });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n  return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n  return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n  return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n  this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n  this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n  // $flow-disable-line\n  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve, reject) {\n      this$1$1.history.push(location, resolve, reject);\n    })\n  } else {\n    this.history.push(location, onComplete, onAbort);\n  }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n  // $flow-disable-line\n  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve, reject) {\n      this$1$1.history.replace(location, resolve, reject);\n    })\n  } else {\n    this.history.replace(location, onComplete, onAbort);\n  }\n};\n\nVueRouter.prototype.go = function go (n) {\n  this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n  this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n  this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n  var route = to\n    ? to.matched\n      ? to\n      : this.resolve(to).route\n    : this.currentRoute;\n  if (!route) {\n    return []\n  }\n  return [].concat.apply(\n    [],\n    route.matched.map(function (m) {\n      return Object.keys(m.components).map(function (key) {\n        return m.components[key]\n      })\n    })\n  )\n};\n\nVueRouter.prototype.resolve = function resolve (\n  to,\n  current,\n  append\n) {\n  current = current || this.history.current;\n  var location = normalizeLocation(to, current, append, this);\n  var route = this.match(location, current);\n  var fullPath = route.redirectedFrom || route.fullPath;\n  var base = this.history.base;\n  var href = createHref(base, fullPath, this.mode);\n  return {\n    location: location,\n    route: route,\n    href: href,\n    // for backwards compat\n    normalizedTo: location,\n    resolved: route\n  }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n  return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n  this.matcher.addRoute(parentOrRoute, route);\n  if (this.history.current !== START) {\n    this.history.transitionTo(this.history.getCurrentLocation());\n  }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n  }\n  this.matcher.addRoutes(routes);\n  if (this.history.current !== START) {\n    this.history.transitionTo(this.history.getCurrentLocation());\n  }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n  list.push(fn);\n  return function () {\n    var i = list.indexOf(fn);\n    if (i > -1) { list.splice(i, 1); }\n  }\n}\n\nfunction createHref (base, fullPath, mode) {\n  var path = mode === 'hash' ? '#' + fullPath : fullPath;\n  return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n  window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[_c('work-item-attribute',{staticClass:\"issuable-milestone gl-mr-3\",attrs:{\"anchor-id\":\"issuable-milestone\",\"title\":_vm.milestone.title,\"wrapper-component-class\":\"gl-text-sm !gl-text-subtle\",\"tooltip-text\":_vm.milestoneDate,\"tooltip-placement\":\"top\",\"is-link\":\"\",\"href\":_vm.milestoneLink},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('gl-icon',{attrs:{\"name\":\"milestone\",\"size\":12}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issuable_milestone.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issuable_milestone.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport {\n  getTimeRemainingInWords,\n  isInFuture,\n  isInPast,\n  isToday,\n  localeDateFormat,\n  newDate,\n} from '~/lib/utils/datetime_utility';\nimport { __ } from '~/locale';\nimport WorkItemAttribute from '~/vue_shared/components/work_item_attribute.vue';\n\nexport default {\n  name: 'IssuableMilestone',\n  components: {\n    WorkItemAttribute,\n    GlIcon,\n  },\n  props: {\n    milestone: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    milestoneDate() {\n      if (this.milestone.dueDate) {\n        const { dueDate, startDate } = this.milestone;\n        const date = localeDateFormat.asDate.format(newDate(dueDate));\n        const remainingTime = this.milestoneRemainingTime(dueDate, startDate);\n\n        return `${date} (${remainingTime})`;\n      }\n\n      return __('Milestone');\n    },\n    milestoneLink() {\n      return this.milestone.webPath || this.milestone.webUrl;\n    },\n  },\n  methods: {\n    milestoneRemainingTime(dueDate, startDate) {\n      const due = newDate(dueDate);\n      const start = newDate(startDate);\n\n      if (dueDate && isInPast(due)) {\n        return __('past due');\n      }\n      if (dueDate && isToday(due)) {\n        return __('today');\n      }\n      if (startDate && isInFuture(start)) {\n        return __('upcoming');\n      }\n      if (dueDate) {\n        return getTimeRemainingInWords(due);\n      }\n\n      return '';\n    },\n  },\n};\n</script>\n\n<template>\n  <span>\n    <work-item-attribute\n      anchor-id=\"issuable-milestone\"\n      :title=\"milestone.title\"\n      wrapper-component-class=\"gl-text-sm !gl-text-subtle\"\n      :tooltip-text=\"milestoneDate\"\n      tooltip-placement=\"top\"\n      class=\"issuable-milestone gl-mr-3\"\n      is-link\n      :href=\"milestoneLink\"\n    >\n      <template #icon>\n        <gl-icon name=\"milestone\" :size=\"12\" />\n      </template>\n    </work-item-attribute>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./issuable_milestone.vue?vue&type=template&id=161e0062\"\nimport script from \"./issuable_milestone.vue?vue&type=script&lang=js\"\nexport * from \"./issuable_milestone.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","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","import GlLink from '../link/link';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'AvatarLink',\n  components: {\n    GlLink\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-link',_vm._g(_vm._b({staticClass:\"gl-avatar-link\"},'gl-link',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { extend } from '../../vue';\nimport { NAME_TR } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Constants ---\n\nconst LIGHT = 'light';\nconst DARK = 'dark';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TR);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTr = /*#__PURE__*/extend({\n  name: NAME_TR,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableTr: () => this\n    };\n  },\n  inject: {\n    getBvTableRowGroup: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTableRowGroup() {\n      return this.getBvTableRowGroup();\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTbody() {\n      return this.bvTableRowGroup.isTbody;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inThead() {\n      return this.bvTableRowGroup.isThead;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTfoot() {\n      return this.bvTableRowGroup.isTfoot;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTableRowGroup.isDark;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTableRowGroup.isStacked;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTableRowGroup.isResponsive;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return this.bvTableRowGroup.isStickyHeader;\n    },\n    // Sniffed by <b-tr> / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTableRowGroup.tableVariant;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    headVariant() {\n      return this.inThead ? this.bvTableRowGroup.headVariant : null;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    footVariant() {\n      return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n    },\n    isRowDark() {\n      return this.headVariant === LIGHT || this.footVariant === LIGHT ? /* istanbul ignore next */false : this.headVariant === DARK || this.footVariant === DARK ? /* istanbul ignore next */true : this.isDark;\n    },\n    trClasses() {\n      const {\n        variant\n      } = this;\n      return [variant ? `${this.isRowDark ? 'bg' : 'table'}-${variant}` : null];\n    },\n    trAttrs() {\n      return {\n        role: 'row',\n        ...this.bvAttrs\n      };\n    }\n  },\n  render(h) {\n    return h('tr', {\n      class: this.trClasses,\n      attrs: this.trAttrs,\n      // Pass native listeners to child\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BTr, props };\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","\n /*! \n  * portal-vue © Thorsten Lünborg, 2019 \n  * \n  * Version: 2.1.7\n  * \n  * LICENCE: MIT \n  * \n  * https://github.com/linusborg/portal-vue\n  * \n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(require('vue'));\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n  if (Array.isArray(item) || _typeof(item) === 'object') {\n    return Object.freeze(item);\n  }\n\n  return item;\n}\nfunction combinePassengers(transports) {\n  var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return transports.reduce(function (passengers, transport) {\n    var temp = transport.passengers[0];\n    var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n    return passengers.concat(newPassengers);\n  }, []);\n}\nfunction stableSort(array, compareFn) {\n  return array.map(function (v, idx) {\n    return [idx, v];\n  }).sort(function (a, b) {\n    return compareFn(a[1], b[1]) || a[0] - b[0];\n  }).map(function (c) {\n    return c[1];\n  });\n}\nfunction pick(obj, keys) {\n  return keys.reduce(function (acc, key) {\n    if (obj.hasOwnProperty(key)) {\n      acc[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n  data: function data() {\n    return {\n      transports: transports,\n      targets: targets,\n      sources: sources,\n      trackInstances: inBrowser\n    };\n  },\n  methods: {\n    open: function open(transport) {\n      if (!inBrowser) return;\n      var to = transport.to,\n          from = transport.from,\n          passengers = transport.passengers,\n          _transport$order = transport.order,\n          order = _transport$order === void 0 ? Infinity : _transport$order;\n      if (!to || !from || !passengers) return;\n      var newTransport = {\n        to: to,\n        from: from,\n        passengers: freeze(passengers),\n        order: order\n      };\n      var keys = Object.keys(this.transports);\n\n      if (keys.indexOf(to) === -1) {\n        Vue.set(this.transports, to, []);\n      }\n\n      var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n      var newTransports = this.transports[to].slice(0);\n\n      if (currentIndex === -1) {\n        newTransports.push(newTransport);\n      } else {\n        newTransports[currentIndex] = newTransport;\n      }\n\n      this.transports[to] = stableSort(newTransports, function (a, b) {\n        return a.order - b.order;\n      });\n    },\n    close: function close(transport) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var to = transport.to,\n          from = transport.from;\n      if (!to || !from && force === false) return;\n\n      if (!this.transports[to]) {\n        return;\n      }\n\n      if (force) {\n        this.transports[to] = [];\n      } else {\n        var index = this.$_getTransportIndex(transport);\n\n        if (index >= 0) {\n          // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n          var newTransports = this.transports[to].slice(0);\n          newTransports.splice(index, 1);\n          this.transports[to] = newTransports;\n        }\n      }\n    },\n    registerTarget: function registerTarget(target, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.targets[target]) {\n        console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n      }\n\n      this.$set(this.targets, target, Object.freeze([vm]));\n    },\n    unregisterTarget: function unregisterTarget(target) {\n      this.$delete(this.targets, target);\n    },\n    registerSource: function registerSource(source, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.sources[source]) {\n        console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n      }\n\n      this.$set(this.sources, source, Object.freeze([vm]));\n    },\n    unregisterSource: function unregisterSource(source) {\n      this.$delete(this.sources, source);\n    },\n    hasTarget: function hasTarget(to) {\n      return !!(this.targets[to] && this.targets[to][0]);\n    },\n    hasSource: function hasSource(to) {\n      return !!(this.sources[to] && this.sources[to][0]);\n    },\n    hasContentFor: function hasContentFor(to) {\n      return !!this.transports[to] && !!this.transports[to].length;\n    },\n    // Internal\n    $_getTransportIndex: function $_getTransportIndex(_ref) {\n      var to = _ref.to,\n          from = _ref.from;\n\n      for (var i in this.transports[to]) {\n        if (this.transports[to][i].from === from) {\n          return +i;\n        }\n      }\n\n      return -1;\n    }\n  }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n  name: 'portal',\n  props: {\n    disabled: {\n      type: Boolean\n    },\n    name: {\n      type: String,\n      default: function _default() {\n        return String(_id++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerSource(_this.name, _this);\n    });\n  },\n  mounted: function mounted() {\n    if (!this.disabled) {\n      this.sendUpdate();\n    }\n  },\n  updated: function updated() {\n    if (this.disabled) {\n      this.clear();\n    } else {\n      this.sendUpdate();\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterSource(this.name);\n    this.clear();\n  },\n  watch: {\n    to: function to(newValue, oldValue) {\n      oldValue && oldValue !== newValue && this.clear(oldValue);\n      this.sendUpdate();\n    }\n  },\n  methods: {\n    clear: function clear(target) {\n      var closer = {\n        from: this.name,\n        to: target || this.to\n      };\n      wormhole.close(closer);\n    },\n    normalizeSlots: function normalizeSlots() {\n      return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n    },\n    normalizeOwnChildren: function normalizeOwnChildren(children) {\n      return typeof children === 'function' ? children(this.slotProps) : children;\n    },\n    sendUpdate: function sendUpdate() {\n      var slotContent = this.normalizeSlots();\n\n      if (slotContent) {\n        var transport = {\n          from: this.name,\n          to: this.to,\n          passengers: _toConsumableArray(slotContent),\n          order: this.order\n        };\n        wormhole.open(transport);\n      } else {\n        this.clear();\n      }\n    }\n  },\n  render: function render(h) {\n    var children = this.$slots.default || this.$scopedSlots.default || [];\n    var Tag = this.tag;\n\n    if (children && this.disabled) {\n      return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n    } else {\n      return this.slim ? h() : h(Tag, {\n        class: {\n          'v-portal': true\n        },\n        style: {\n          display: 'none'\n        },\n        key: 'v-portal-placeholder'\n      });\n    }\n  }\n});\n\nvar PortalTarget = Vue.extend({\n  name: 'portalTarget',\n  props: {\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    name: {\n      type: String,\n      required: true\n    },\n    slim: {\n      type: Boolean,\n      default: false\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  data: function data() {\n    return {\n      transports: wormhole.transports,\n      firstRender: true\n    };\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerTarget(_this.name, _this);\n    });\n  },\n  watch: {\n    ownTransports: function ownTransports() {\n      this.$emit('change', this.children().length > 0);\n    },\n    name: function name(newVal, oldVal) {\n      /**\r\n       * TODO\r\n       * This should warn as well ...\r\n       */\n      wormhole.unregisterTarget(oldVal);\n      wormhole.registerTarget(newVal, this);\n    }\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    if (this.transition) {\n      this.$nextTick(function () {\n        // only when we have a transition, because it causes a re-render\n        _this2.firstRender = false;\n      });\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterTarget(this.name);\n  },\n  computed: {\n    ownTransports: function ownTransports() {\n      var transports = this.transports[this.name] || [];\n\n      if (this.multiple) {\n        return transports;\n      }\n\n      return transports.length === 0 ? [] : [transports[transports.length - 1]];\n    },\n    passengers: function passengers() {\n      return combinePassengers(this.ownTransports, this.slotProps);\n    }\n  },\n  methods: {\n    // can't be a computed prop because it has to \"react\" to $slot changes.\n    children: function children() {\n      return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n    },\n    // can't be a computed prop because it has to \"react\" to this.children().\n    noWrapper: function noWrapper() {\n      var noWrapper = this.slim && !this.transition;\n\n      if (noWrapper && this.children().length > 1) {\n        console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n      }\n\n      return noWrapper;\n    }\n  },\n  render: function render(h) {\n    var noWrapper = this.noWrapper();\n    var children = this.children();\n    var Tag = this.transition || this.tag;\n    return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n      props: {\n        // if we have a transition component, pass the tag if it exists\n        tag: this.transition && this.tag ? this.tag : undefined\n      },\n      class: {\n        'vue-portal-target': true\n      }\n    }, children);\n  }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n  name: 'MountingPortal',\n  inheritAttrs: false,\n  props: {\n    append: {\n      type: [Boolean, String]\n    },\n    bail: {\n      type: Boolean\n    },\n    mountTo: {\n      type: String,\n      required: true\n    },\n    // Portal\n    disabled: {\n      type: Boolean\n    },\n    // name for the portal\n    name: {\n      type: String,\n      default: function _default() {\n        return 'mounted_' + String(_id$1++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    // name for the target\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    },\n    // Target\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    targetSlim: {\n      type: Boolean\n    },\n    targetSlotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    targetTag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  created: function created() {\n    if (typeof document === 'undefined') return;\n    var el = document.querySelector(this.mountTo);\n\n    if (!el) {\n      console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n      return;\n    }\n\n    var props = this.$props; // Target already exists\n\n    if (wormhole.targets[props.name]) {\n      if (props.bail) {\n        console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n        Aborting because 'bail: true' is set\"));\n      } else {\n        this.portalTarget = wormhole.targets[props.name];\n      }\n\n      return;\n    }\n\n    var append = props.append;\n\n    if (append) {\n      var type = typeof append === 'string' ? append : 'DIV';\n      var mountEl = document.createElement(type);\n      el.appendChild(mountEl);\n      el = mountEl;\n    } // get props for target from $props\n    // we have to rename a few of them\n\n\n    var _props = pick(this.$props, targetProps);\n\n    _props.slim = this.targetSlim;\n    _props.tag = this.targetTag;\n    _props.slotProps = this.targetSlotProps;\n    _props.name = this.to;\n    this.portalTarget = new PortalTarget({\n      el: el,\n      parent: this.$parent || this,\n      propsData: _props\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    var target = this.portalTarget;\n\n    if (this.append) {\n      var el = target.$el;\n      el.parentNode.removeChild(el);\n    }\n\n    target.$destroy();\n  },\n  render: function render(h) {\n    if (!this.portalTarget) {\n      console.warn(\"[portal-vue] Target wasn't mounted\");\n      return h();\n    } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n    if (!this.$scopedSlots.manual) {\n      var props = pick(this.$props, portalProps);\n      return h(Portal, {\n        props: props,\n        attrs: this.$attrs,\n        on: this.$listeners,\n        scopedSlots: this.$scopedSlots\n      }, this.$slots.default);\n    } // else, we render the scoped slot\n\n\n    var content = this.$scopedSlots.manual({\n      to: this.to\n    }); // if user used <template> for the scoped slot\n    // content will be an array\n\n    if (Array.isArray(content)) {\n      content = content[0];\n    }\n\n    if (!content) return h();\n    return content;\n  }\n});\n\nfunction install(Vue$$1) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  Vue$$1.component(options.portalName || 'Portal', Portal);\n  Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n  Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n}\n\nvar index = {\n  install: install\n};\n\nexports.default = index;\nexports.Portal = Portal;\nexports.PortalTarget = PortalTarget;\nexports.MountingPortal = MountingPortal;\nexports.Wormhole = wormhole;\n//# sourceMappingURL=portal-vue.common.js.map\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getProjectMergeRequestsEE\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hideUsers\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"defaultValue\":{\"kind\":\"BooleanValue\",\"value\":false},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isSignedIn\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"defaultValue\":{\"kind\":\"BooleanValue\",\"value\":false},\"directives\":[]},{\"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\":\"sort\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestSort\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestState\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssigneeWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ReviewerWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeUser\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MilestoneWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestsResolverNegatedParams\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"beforeCursor\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"afterCursor\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"firstPageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"lastPageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"namespace\"},\"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\":\"mergeRequests\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"sort\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"sort\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mergedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeUser\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"before\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"beforeCursor\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"afterCursor\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"firstPageSize\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"lastPageSize\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestFragment\"},\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":2050}};\n    doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/page_info.fragment.graphql\\\"\\n#import \\\"~/merge_requests/list/queries/merge_request.fragment.graphql\\\"\\n\\nquery getProjectMergeRequestsEE(\\n  $hideUsers: Boolean = false\\n  $isSignedIn: Boolean = false\\n  $fullPath: ID!\\n  $sort: MergeRequestSort\\n  $state: MergeRequestState\\n  $search: String\\n  $approvedBy: [String!]\\n  $approver: [String!]\\n  $assigneeUsernames: String\\n  $assigneeWildcardId: AssigneeWildcardId\\n  $reviewerUsername: String\\n  $reviewerWildcardId: ReviewerWildcardId\\n  $authorUsername: String\\n  $draft: Boolean\\n  $labelName: [String!]\\n  $releaseTag: String\\n  $mergeUser: String\\n  $milestoneTitle: String\\n  $milestoneWildcardId: MilestoneWildcardId\\n  $myReactionEmoji: String\\n  $sourceBranches: [String!]\\n  $targetBranches: [String!]\\n  $deployedBefore: Time\\n  $deployedAfter: Time\\n  $environmentName: String\\n  $not: MergeRequestsResolverNegatedParams\\n  $beforeCursor: String\\n  $afterCursor: String\\n  $firstPageSize: Int\\n  $lastPageSize: Int\\n) {\\n  namespace: project(fullPath: $fullPath) {\\n    id\\n    mergeRequests(\\n      sort: $sort\\n      state: $state\\n      search: $search\\n      approvedBy: $approvedBy\\n      approver: $approver\\n      assigneeUsername: $assigneeUsernames\\n      assigneeWildcardId: $assigneeWildcardId\\n      reviewerUsername: $reviewerUsername\\n      reviewerWildcardId: $reviewerWildcardId\\n      authorUsername: $authorUsername\\n      draft: $draft\\n      labelName: $labelName\\n      releaseTag: $releaseTag\\n      mergedBy: $mergeUser\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      sourceBranches: $sourceBranches\\n      targetBranches: $targetBranches\\n      deployedBefore: $deployedBefore\\n      deployedAfter: $deployedAfter\\n      environmentName: $environmentName\\n      not: $not\\n      before: $beforeCursor\\n      after: $afterCursor\\n      first: $firstPageSize\\n      last: $lastPageSize\\n    ) {\\n      pageInfo {\\n        ...PageInfo\\n      }\\n      nodes {\\n        ...MergeRequestFragment\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/page_info.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"~/merge_requests/list/queries/merge_request.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getProjectMergeRequestsEE\"] = oneQuery(doc, \"getProjectMergeRequestsEE\");\n        \n","import { extend, mergeData } from '../../vue';\nimport { NAME_NAV } from '../../constants/components';\nimport { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Helper methods ---\n\nconst computeJustifyContent = value => {\n  value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n  return `justify-content-${value}`;\n};\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  align: makeProp(PROP_TYPE_STRING),\n  // Set to `true` if placing in a card header\n  cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  fill: makeProp(PROP_TYPE_BOOLEAN, false),\n  justified: makeProp(PROP_TYPE_BOOLEAN, false),\n  pills: makeProp(PROP_TYPE_BOOLEAN, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'ul')\n}, NAME_NAV);\n\n// --- Main component ---\n\n// @vue/component\nconst BNav = /*#__PURE__*/extend({\n  name: NAME_NAV,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    const {\n      tabs,\n      pills,\n      align,\n      cardHeader\n    } = props;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'nav',\n      class: {\n        'nav-tabs': tabs,\n        'nav-pills': pills && !tabs,\n        'card-header-tabs': cardHeader && tabs,\n        'card-header-pills': cardHeader && pills && !tabs,\n        'nav-fill': props.fill,\n        'nav-justified': props.justified,\n        [computeJustifyContent(align)]: align,\n        small: props.small\n      }\n    }), children);\n  }\n});\n\nexport { BNav, props };\n","import { extend, COMPONENT_UID_KEY, REF_FOR_KEY } from '../../vue';\nimport { NAME_TAB_BUTTON_HELPER, NAME_TABS } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_PREV, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_CHANGED, EVENT_NAME_ACTIVATE_TAB } from '../../constants/events';\nimport { CODE_SPACE, CODE_UP, CODE_LEFT, CODE_HOME, CODE_DOWN, CODE_RIGHT, CODE_END } from '../../constants/key-codes';\nimport { PROP_TYPE_NUMBER, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE, SLOT_NAME_TABS_START, SLOT_NAME_TABS_END, SLOT_NAME_EMPTY } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { props as props$2, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { props as props$1, BNav } from '../nav/nav';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER\n});\n\n// --- Helper methods ---\n\n// Filter function to filter out disabled tabs\nconst notDisabled = tab => !tab.disabled;\n\n// --- Helper components ---\n\n// @vue/component\nconst BVTabButton = /*#__PURE__*/extend({\n  name: NAME_TAB_BUTTON_HELPER,\n  inject: {\n    getBvTabs: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  props: {\n    controls: makeProp(PROP_TYPE_STRING),\n    id: makeProp(PROP_TYPE_STRING),\n    noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n    posInSet: makeProp(PROP_TYPE_NUMBER),\n    setSize: makeProp(PROP_TYPE_NUMBER),\n    // Reference to the child <b-tab> instance\n    tab: makeProp(),\n    tabIndex: makeProp(PROP_TYPE_NUMBER)\n  },\n  computed: {\n    bvTabs() {\n      return this.getBvTabs();\n    }\n  },\n  methods: {\n    focus() {\n      attemptFocus(this.$refs.link);\n    },\n    handleEvent(event) {\n      /* istanbul ignore next */\n      if (this.tab.disabled) {\n        return;\n      }\n      const {\n        type,\n        keyCode,\n        shiftKey\n      } = event;\n      if (type === 'click') {\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n        // For ARIA tabs the SPACE key will also trigger a click/select\n        // Even with keyboard navigation disabled, SPACE should \"click\" the button\n        // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && !this.noKeyNav) {\n        // For keyboard navigation\n        if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n          if (shiftKey || keyCode === CODE_HOME) {\n            this.$emit(EVENT_NAME_FIRST, event);\n          } else {\n            this.$emit(EVENT_NAME_PREV, event);\n          }\n        } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n          if (shiftKey || keyCode === CODE_END) {\n            this.$emit(EVENT_NAME_LAST, event);\n          } else {\n            this.$emit(EVENT_NAME_NEXT, event);\n          }\n        }\n      }\n    }\n  },\n  render(h) {\n    const {\n      id,\n      tabIndex,\n      setSize,\n      posInSet,\n      controls,\n      handleEvent\n    } = this;\n    const {\n      title,\n      localActive,\n      disabled,\n      titleItemClass,\n      titleLinkClass,\n      titleLinkAttributes\n    } = this.tab;\n    const $link = h(BLink, {\n      staticClass: 'nav-link',\n      class: [{\n        active: localActive && !disabled,\n        disabled\n      }, titleLinkClass,\n      // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n      localActive ? this.bvTabs.activeNavItemClass : null],\n      props: {\n        disabled\n      },\n      attrs: {\n        ...titleLinkAttributes,\n        id,\n        role: 'tab',\n        // Roving tab index when keynav enabled\n        tabindex: tabIndex,\n        'aria-selected': localActive && !disabled ? 'true' : 'false',\n        'aria-setsize': setSize,\n        'aria-posinset': posInSet,\n        'aria-controls': controls\n      },\n      on: {\n        click: handleEvent,\n        keydown: handleEvent\n      },\n      ref: 'link'\n    }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n    return h('li', {\n      staticClass: 'nav-item',\n      class: [titleItemClass],\n      attrs: {\n        role: 'presentation'\n      }\n    }, [$link]);\n  }\n});\n\n// --- Props ---\n\nconst navProps = omit(props$1, ['tabs', 'cardHeader']);\nconst props = makePropsConfigurable(sortKeys({\n  ...props$2,\n  ...modelProps,\n  ...navProps,\n  // Only applied to the currently active `<b-nav-item>`\n  activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Only applied to the currently active `<b-tab>`\n  // This prop is sniffed by the `<b-tab>` child\n  activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Synonym for 'bottom'\n  end: makeProp(PROP_TYPE_BOOLEAN, false),\n  // This prop is sniffed by the `<b-tab>` child\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n  noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}), NAME_TABS);\n\n// --- Main component ---\n\n// @vue/component\nconst BTabs = /*#__PURE__*/extend({\n  name: NAME_TABS,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTabs: () => this\n    };\n  },\n  props,\n  data() {\n    return {\n      // Index of current tab\n      currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n      // Array of direct child `<b-tab>` instances, in DOM order\n      tabs: [],\n      // Array of child instances registered (for triggering reactive updates)\n      registeredTabs: []\n    };\n  },\n  computed: {\n    fade() {\n      // This computed prop is sniffed by the tab child\n      return !this.noFade;\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME](newValue, oldValue) {\n      if (newValue !== oldValue) {\n        newValue = toInteger(newValue, -1);\n        oldValue = toInteger(oldValue, 0);\n        const $tab = this.tabs[newValue];\n        if ($tab && !$tab.disabled) {\n          this.activateTab($tab);\n        } else {\n          // Try next or prev tabs\n          if (newValue < oldValue) {\n            this.previousTab();\n          } else {\n            this.nextTab();\n          }\n        }\n      }\n    },\n    currentTab(newValue) {\n      let index = -1;\n\n      // Ensure only one tab is active at most\n      this.tabs.forEach(($tab, i) => {\n        if (i === newValue && !$tab.disabled) {\n          $tab.localActive = true;\n          index = i;\n        } else {\n          $tab.localActive = false;\n        }\n      });\n\n      // Update the v-model\n      this.$emit(MODEL_EVENT_NAME, index);\n    },\n    // If tabs added, removed, or re-ordered, we emit a `changed` event\n    tabs(newValue, oldValue) {\n      // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n      // if no explicit ID is provided, causing duplicate emits\n      if (!looseEqual(newValue.map($tab => $tab[COMPONENT_UID_KEY]), oldValue.map($tab => $tab[COMPONENT_UID_KEY]))) {\n        // In a `$nextTick()` to ensure `currentTab` has been set first\n        this.$nextTick(() => {\n          // We emit shallow copies of the new and old arrays of tabs,\n          // to prevent users from potentially mutating the internal arrays\n          this.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n        });\n      }\n    },\n    // Each `<b-tab>` will register/unregister itself\n    // We use this to detect when tabs are added/removed\n    // to trigger the update of the tabs\n    registeredTabs() {\n      this.updateTabs();\n    }\n  },\n  created() {\n    // Create private non-reactive props\n    this.$_observer = null;\n  },\n  mounted() {\n    this.setObserver(true);\n  },\n  beforeDestroy() {\n    this.setObserver(false);\n    // Ensure no references to child instances exist\n    this.tabs = [];\n  },\n  methods: {\n    registerTab($tab) {\n      if (!arrayIncludes(this.registeredTabs, $tab)) {\n        this.registeredTabs.push($tab);\n      }\n    },\n    unregisterTab($tab) {\n      this.registeredTabs = this.registeredTabs.slice().filter($t => $t !== $tab);\n    },\n    // DOM observer is needed to detect changes in order of tabs\n    setObserver() {\n      let on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.$_observer && this.$_observer.disconnect();\n      this.$_observer = null;\n      if (on) {\n        /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n        const handler = () => {\n          this.$nextTick(() => {\n            requestAF(() => {\n              this.updateTabs();\n            });\n          });\n        };\n\n        // Watch for changes to `<b-tab>` sub components\n        this.$_observer = observeDom(this.$refs.content, handler, {\n          childList: true,\n          subtree: false,\n          attributes: true,\n          attributeFilter: ['id']\n        });\n      }\n    },\n    getTabs() {\n      const $tabs = this.registeredTabs;\n      // Dropped intentionally\n      // .filter(\n      //   $tab => $tab.$children.filter($t => $t && $t._isTab).length === 0\n      // )\n\n      // DOM Order of Tabs\n      let order = [];\n      /* istanbul ignore next: too difficult to test */\n      if (IS_BROWSER && $tabs.length > 0) {\n        // We rely on the DOM when mounted to get the \"true\" order of the `<b-tab>` children\n        // `querySelectorAll()` always returns elements in document order, regardless of\n        // order specified in the selector\n        const selector = $tabs.map($tab => `#${$tab.safeId()}`).join(', ');\n        order = selectAll(selector, this.$el).map($el => $el.id).filter(identity);\n      }\n\n      // Stable sort keeps the original order if not found in the `order` array,\n      // which will be an empty array before mount\n      return stableSort($tabs, (a, b) => order.indexOf(a.safeId()) - order.indexOf(b.safeId()));\n    },\n    updateTabs() {\n      const $tabs = this.getTabs();\n\n      // Find last active non-disabled tab in current tabs\n      // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n      let tabIndex = $tabs.indexOf($tabs.slice().reverse().find($tab => $tab.localActive && !$tab.disabled));\n\n      // Else try setting to `currentTab`\n      if (tabIndex < 0) {\n        const {\n          currentTab\n        } = this;\n        if (currentTab >= $tabs.length) {\n          // Handle last tab being removed, so find the last non-disabled tab\n          tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n        } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n          // Current tab is not disabled\n          tabIndex = currentTab;\n        }\n      }\n\n      // Else find first non-disabled tab in current tabs\n      if (tabIndex < 0) {\n        tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n      }\n\n      // Ensure only one tab is active at a time\n      $tabs.forEach(($tab, index) => {\n        $tab.localActive = index === tabIndex;\n      });\n      this.tabs = $tabs;\n      this.currentTab = tabIndex;\n    },\n    // Find a button that controls a tab, given the tab reference\n    // Returns the button vm instance\n    getButtonForTab($tab) {\n      return (this.$refs.buttons || []).find($btn => $btn.tab === $tab);\n    },\n    // Force a button to re-render its content, given a `<b-tab>` instance\n    // Called by `<b-tab>` on `update()`\n    updateButton($tab) {\n      const $button = this.getButtonForTab($tab);\n      if ($button && $button.$forceUpdate) {\n        $button.$forceUpdate();\n      }\n    },\n    // Activate a tab given a `<b-tab>` instance\n    // Also accessed by `<b-tab>`\n    activateTab($tab) {\n      const {\n        currentTab,\n        tabs: $tabs\n      } = this;\n      let result = false;\n      if ($tab) {\n        const index = $tabs.indexOf($tab);\n        if (index !== currentTab && index > -1 && !$tab.disabled) {\n          const tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n            cancelable: true,\n            vueTarget: this,\n            componentId: this.safeId()\n          });\n          this.$emit(tabEvent.type, index, currentTab, tabEvent);\n          if (!tabEvent.defaultPrevented) {\n            this.currentTab = index;\n            result = true;\n          }\n        }\n      }\n\n      // Couldn't set tab, so ensure v-model is up to date\n      /* istanbul ignore next: should rarely happen */\n      if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n        this.$emit(MODEL_EVENT_NAME, currentTab);\n      }\n      return result;\n    },\n    // Deactivate a tab given a `<b-tab>` instance\n    // Accessed by `<b-tab>`\n    deactivateTab($tab) {\n      if ($tab) {\n        // Find first non-disabled tab that isn't the one being deactivated\n        // If no tabs are available, then don't deactivate current tab\n        return this.activateTab(this.tabs.filter($t => $t !== $tab).find(notDisabled));\n      }\n      /* istanbul ignore next: should never/rarely happen */\n      return false;\n    },\n    // Focus a tab button given its `<b-tab>` instance\n    focusButton($tab) {\n      // Wrap in `$nextTick()` to ensure DOM has completed rendering\n      this.$nextTick(() => {\n        attemptFocus(this.getButtonForTab($tab));\n      });\n    },\n    // Emit a click event on a specified `<b-tab>` component instance\n    emitTabClick(tab, event) {\n      if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n        tab.$emit(EVENT_NAME_CLICK, event);\n      }\n    },\n    // Click handler\n    clickTab($tab, event) {\n      this.activateTab($tab);\n      this.emitTabClick($tab, event);\n    },\n    // Move to first non-disabled tab\n    firstTab(focus) {\n      const $tab = this.tabs.find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to previous non-disabled tab\n    previousTab(focus) {\n      const currentIndex = mathMax(this.currentTab, 0);\n      const $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to next non-disabled tab\n    nextTab(focus) {\n      const currentIndex = mathMax(this.currentTab, -1);\n      const $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to last non-disabled tab\n    lastTab(focus) {\n      const $tab = this.tabs.slice().reverse().find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    }\n  },\n  render(h) {\n    const {\n      align,\n      end,\n      fill,\n      firstTab,\n      justified,\n      lastTab,\n      nextTab,\n      noKeyNav,\n      noNavStyle,\n      pills,\n      previousTab,\n      small,\n      tabs: $tabs\n    } = this;\n\n    // Currently active tab\n    const $activeTab = $tabs.find($tab => $tab.localActive && !$tab.disabled);\n\n    // Tab button to allow focusing when no active tab found (keynav only)\n    const $fallbackTab = $tabs.find($tab => !$tab.disabled);\n\n    // For each `<b-tab>` found create the tab buttons\n    const $buttons = $tabs.map(($tab, index) => {\n      const {\n        safeId\n      } = $tab;\n\n      // Ensure at least one tab button is focusable when keynav enabled (if possible)\n      let tabIndex = null;\n      if (!noKeyNav) {\n        // Buttons are not in tab index unless active, or a fallback tab\n        tabIndex = -1;\n        if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n          // Place tab button in tab sequence\n          tabIndex = null;\n        }\n      }\n      return h(BVTabButton, {\n        props: {\n          controls: safeId ? safeId() : null,\n          id: $tab.controlledBy || (safeId ? safeId(`_BV_tab_button_`) : null),\n          noKeyNav,\n          posInSet: index + 1,\n          setSize: $tabs.length,\n          tab: $tab,\n          tabIndex\n        },\n        on: {\n          [EVENT_NAME_CLICK]: event => {\n            this.clickTab($tab, event);\n          },\n          [EVENT_NAME_FIRST]: firstTab,\n          [EVENT_NAME_PREV]: previousTab,\n          [EVENT_NAME_NEXT]: nextTab,\n          [EVENT_NAME_LAST]: lastTab\n        },\n        key: $tab[COMPONENT_UID_KEY] || index,\n        ref: 'buttons',\n        // Needed to make `this.$refs.buttons` an array\n        [REF_FOR_KEY]: true\n      });\n    });\n    let $nav = h(BNav, {\n      class: this.navClass,\n      attrs: {\n        role: 'tablist',\n        id: this.safeId('_BV_tab_controls_')\n      },\n      props: {\n        fill,\n        justified,\n        align,\n        tabs: !noNavStyle && !pills,\n        pills: !noNavStyle && pills,\n        small\n      },\n      ref: 'nav'\n    }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n    $nav = h('div', {\n      class: this.navWrapperClass,\n      key: 'bv-tabs-nav'\n    }, [$nav]);\n    const $children = this.normalizeSlot() || [];\n    let $empty = h();\n    if ($children.length === 0) {\n      $empty = h('div', {\n        class: ['tab-pane', 'active'],\n        key: 'bv-empty-tab'\n      }, this.normalizeSlot(SLOT_NAME_EMPTY));\n    }\n    const $content = h('div', {\n      staticClass: 'tab-content',\n      class: this.contentClass,\n      attrs: {\n        id: this.safeId('_BV_tab_container_')\n      },\n      key: 'bv-content',\n      ref: 'content'\n    }, [$children, $empty]);\n\n    // Render final output\n    return h(this.tag, {\n      staticClass: 'tabs',\n      attrs: {\n        id: this.safeId()\n      }\n    }, [end ? $content : h(), $nav, end ? h() : $content]);\n  }\n});\n\nexport { BTabs, props };\n","import { BTabs } from '../../../../vendor/bootstrap-vue/src/components/tabs/tabs';\nimport { tabsButtonDefaults } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst validatorHelper = obj => Object.keys(obj).every(val => val === 'text' || val === 'attributes');\nvar script = {\n  name: 'GlTabs',\n  components: {\n    BTabs,\n    GlButton\n  },\n  inheritAttrs: false,\n  props: {\n    actionPrimary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    actionSecondary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    actionTertiary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    contentClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    navClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    justified: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Sync active tab with query string parameters. Allows for deep linking into specific tabs.\n     */\n    syncActiveTabWithQueryParams: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Name to use for query string parameter.\n     */\n    queryParamName: {\n      type: String,\n      required: false,\n      default: 'tab'\n    },\n    value: {\n      type: Number,\n      required: false,\n      default: 0\n    }\n  },\n  data() {\n    return {\n      activeTabIndex: 0\n    };\n  },\n  computed: {\n    hasActions() {\n      return [this.actionPrimary, this.actionSecondary, this.actionTertiary].some(Boolean);\n    },\n    listeners() {\n      return {\n        ...this.$listeners,\n        input: this.handleInput\n      };\n    }\n  },\n  watch: {\n    value: {\n      handler(newValue) {\n        if (this.activeTabIndex !== newValue) {\n          this.activeTabIndex = newValue;\n        }\n      },\n      immediate: true\n    }\n  },\n  mounted() {\n    if (this.syncActiveTabWithQueryParams) {\n      this.syncActiveTabFromQueryParams();\n      window.addEventListener('popstate', this.syncActiveTabFromQueryParams);\n    }\n\n    // Because we are manually binding `value` attribute to `b-tabs` the `input`\n    // event is no longer automatically fired when the component is mounted.\n    // To maintain parity with original `b-tabs` functionality\n    // we manually fire the `input` event when the component is mounted.\n    this.$emit('input', this.activeTabIndex);\n  },\n  destroyed() {\n    window.removeEventListener('popstate', this.syncActiveTabFromQueryParams);\n  },\n  methods: {\n    buttonBinding(prop, name) {\n      if (!prop.attributes) {\n        return tabsButtonDefaults[name];\n      }\n      return prop.attributes;\n    },\n    primary() {\n      this.$emit('primary');\n    },\n    secondary() {\n      this.$emit('secondary');\n    },\n    tertiary() {\n      this.$emit('tertiary');\n    },\n    /**\n     * When the query parameter is updated, update the active tab to match.\n     */\n    async syncActiveTabFromQueryParams() {\n      await this.$nextTick();\n      const queryParamValue = this.getQueryParamValue();\n      const tabIndexToActivate = this.getTabs().findIndex((tab, tabIndex) => this.getTabQueryParamValue(tabIndex) === queryParamValue);\n      this.activeTabIndex = tabIndexToActivate !== -1 ? tabIndexToActivate : 0;\n    },\n    /**\n     * Returns a list of all <b-tab> instances associated with this tab control.\n     */\n    getTabs() {\n      return this.$refs.bTabs.getTabs();\n    },\n    /**\n     * Get the value of the query param as defined by the `queryParamName` prop.\n     */\n    getQueryParamValue() {\n      const searchParams = new URLSearchParams(window.location.search);\n      return searchParams.get(this.queryParamName);\n    },\n    /**\n     * Set the value of the query param as defined by the `queryParamName` prop.\n     * This method does nothing if the query param is already up to date.\n     */\n    setQueryParamValueIfNecessary(tabIndex) {\n      const currentQueryParamValue = this.getQueryParamValue();\n      const newQueryParamValue = this.getTabQueryParamValue(tabIndex);\n\n      // If the current query parameter is already up-to-date,\n      // avoid creating a duplicate history entry.\n      if (tabIndex === 0 && !currentQueryParamValue || tabIndex !== 0 && currentQueryParamValue === newQueryParamValue) {\n        return;\n      }\n      const searchParams = new URLSearchParams(window.location.search);\n      searchParams.set(this.queryParamName, newQueryParamValue);\n      window.history.pushState({}, '', `${window.location.pathname}?${searchParams.toString()}`);\n    },\n    /**\n     * Returns the query param value for a tab.\n     * Defaults to the tab index unless the `query-param-value` attribute is set.\n     */\n    getTabQueryParamValue(tabIndex) {\n      const tab = this.getTabs()[tabIndex];\n      return (tab === null || tab === void 0 ? void 0 : tab.$attrs['query-param-value']) || tabIndex.toString();\n    },\n    /**\n     * Event handler for `input` event.\n     */\n    handleInput(tabIndex) {\n      this.$emit('input', tabIndex);\n      this.activeTabIndex = tabIndex;\n      if (this.syncActiveTabWithQueryParams) {\n        this.setQueryParamValueIfNecessary(tabIndex);\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('b-tabs',_vm._g(_vm._b({ref:\"bTabs\",staticClass:\"gl-tabs\",attrs:{\"no-nav-style\":true,\"no-fade\":true,\"active-nav-item-class\":\"gl-tab-nav-item-active\",\"content-class\":[_vm.contentClass, 'gl-tab-content'],\"nav-class\":[_vm.navClass, 'gl-tabs-nav'],\"justified\":_vm.justified,\"value\":_vm.activeTabIndex},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),(_vm.hasActions)?{key:\"tabs-start\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-start\",attrs:{\"data-testid\":\"actions-tabs-start\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionPrimary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionSecondary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionTertiary.text)+\"\\n      \")]):_vm._e()],1)]},proxy:true}:null,(_vm.hasActions)?{key:\"tabs-end\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-end\",attrs:{\"data-testid\":\"actions-tabs-end\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionPrimary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionSecondary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionTertiary.text)+\"\\n      \")]):_vm._e()],1)]},proxy:true}:null],null,true)},'b-tabs',_vm.$attrs,false),_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","import { __, s__ } from '~/locale';\nimport { STATUS_LABELS } from './constants';\n\nexport const getStatusLabel = (status) => STATUS_LABELS[status] ?? s__('IncidentManagement|None');\n\nexport const todoLabel = (hasTodo) => {\n  return hasTodo ? __('Mark as done') : __('Add a to-do item');\n};\n\nexport const updateGlobalTodoCount = (delta) => {\n  // Optimistic update of user counts\n  document.dispatchEvent(new CustomEvent('todo:toggle', { detail: { delta } }));\n};\n","import uniqueId from 'lodash/uniqueId';\nimport { offset, autoPlacement, shift, 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 } 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(), 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) {\n              return;\n            }\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    async startFloating() {\n      this.calculateNonScrollableAreaHeight();\n      this.observer = new MutationObserver(this.calculateNonScrollableAreaHeight);\n      this.observer.observe(this.$refs.content, {\n        attributes: false,\n        childList: true,\n        subtree: true\n      });\n      this.stopAutoUpdate = autoUpdate(this.toggleElement, this.$refs.content, async () => {\n        const {\n          x,\n          y\n        } = 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        Object.assign(this.$refs.content.style, {\n          left: `${x}px`,\n          top: `${y}px`\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',{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 = 4;\n\nexport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS };\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","import $ from 'jquery';\n\nexport const canScroll = () => $(document).height() > $(window).height();\n\n/**\n * Checks if the entire page is scrolled down all the way to the bottom\n *  @returns {Boolean}\n */\nexport const isScrolledToBottom = () => {\n  // Use clientHeight to account for any horizontal scrollbar.\n  const { scrollHeight, scrollTop, clientHeight } = document.documentElement;\n\n  // scrollTop can be a float, so round up to next integer.\n  return Math.ceil(scrollTop + clientHeight) >= scrollHeight;\n};\n\n/**\n * Checks if page is scrolled to the top\n * @returns {Boolean}\n */\nexport const isScrolledToTop = () => $(document).scrollTop() === 0;\n\nexport const scrollDown = () => {\n  const $document = $(document);\n  $document.scrollTop($document.height());\n};\n\nexport const scrollUp = () => {\n  $(document).scrollTop(0);\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var deburrLetter = require('./_deburrLetter'),\n    toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","(function() {\n  var basenameMatch, computeMatch, isMatch, isWordStart, match, mergeMatches, scoreAcronyms, scoreCharacter, scoreConsecutives, _ref;\n\n  _ref = require('./scorer'), isMatch = _ref.isMatch, isWordStart = _ref.isWordStart, scoreConsecutives = _ref.scoreConsecutives, scoreCharacter = _ref.scoreCharacter, scoreAcronyms = _ref.scoreAcronyms;\n\n  exports.match = match = function(string, query, options) {\n    var allowErrors, baseMatches, matches, pathSeparator, preparedQuery, string_lw;\n    allowErrors = options.allowErrors, preparedQuery = options.preparedQuery, pathSeparator = options.pathSeparator;\n    if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n      return [];\n    }\n    string_lw = string.toLowerCase();\n    matches = computeMatch(string, string_lw, preparedQuery);\n    if (matches.length === 0) {\n      return matches;\n    }\n    if (string.indexOf(pathSeparator) > -1) {\n      baseMatches = basenameMatch(string, string_lw, preparedQuery, pathSeparator);\n      matches = mergeMatches(matches, baseMatches);\n    }\n    return matches;\n  };\n\n  exports.wrap = function(string, query, options) {\n    var matchIndex, matchPos, matchPositions, output, strPos, tagClass, tagClose, tagOpen, _ref1;\n    if ((options.wrap != null)) {\n      _ref1 = options.wrap, tagClass = _ref1.tagClass, tagOpen = _ref1.tagOpen, tagClose = _ref1.tagClose;\n    }\n    if (tagClass == null) {\n      tagClass = 'highlight';\n    }\n    if (tagOpen == null) {\n      tagOpen = '<strong class=\"' + tagClass + '\">';\n    }\n    if (tagClose == null) {\n      tagClose = '</strong>';\n    }\n    if (string === query) {\n      return tagOpen + string + tagClose;\n    }\n    matchPositions = match(string, query, options);\n    if (matchPositions.length === 0) {\n      return string;\n    }\n    output = '';\n    matchIndex = -1;\n    strPos = 0;\n    while (++matchIndex < matchPositions.length) {\n      matchPos = matchPositions[matchIndex];\n      if (matchPos > strPos) {\n        output += string.substring(strPos, matchPos);\n        strPos = matchPos;\n      }\n      while (++matchIndex < matchPositions.length) {\n        if (matchPositions[matchIndex] === matchPos + 1) {\n          matchPos++;\n        } else {\n          matchIndex--;\n          break;\n        }\n      }\n      matchPos++;\n      if (matchPos > strPos) {\n        output += tagOpen;\n        output += string.substring(strPos, matchPos);\n        output += tagClose;\n        strPos = matchPos;\n      }\n    }\n    if (strPos <= string.length - 1) {\n      output += string.substring(strPos);\n    }\n    return output;\n  };\n\n  basenameMatch = function(subject, subject_lw, preparedQuery, pathSeparator) {\n    var basePos, depth, end;\n    end = subject.length - 1;\n    while (subject[end] === pathSeparator) {\n      end--;\n    }\n    basePos = subject.lastIndexOf(pathSeparator, end);\n    if (basePos === -1) {\n      return [];\n    }\n    depth = preparedQuery.depth;\n    while (depth-- > 0) {\n      basePos = subject.lastIndexOf(pathSeparator, basePos - 1);\n      if (basePos === -1) {\n        return [];\n      }\n    }\n    basePos++;\n    end++;\n    return computeMatch(subject.slice(basePos, end), subject_lw.slice(basePos, end), preparedQuery, basePos);\n  };\n\n  mergeMatches = function(a, b) {\n    var ai, bj, i, j, m, n, out;\n    m = a.length;\n    n = b.length;\n    if (n === 0) {\n      return a.slice();\n    }\n    if (m === 0) {\n      return b.slice();\n    }\n    i = -1;\n    j = 0;\n    bj = b[j];\n    out = [];\n    while (++i < m) {\n      ai = a[i];\n      while (bj <= ai && ++j < n) {\n        if (bj < ai) {\n          out.push(bj);\n        }\n        bj = b[j];\n      }\n      out.push(ai);\n    }\n    while (j < n) {\n      out.push(b[j++]);\n    }\n    return out;\n  };\n\n  computeMatch = function(subject, subject_lw, preparedQuery, offset) {\n    var DIAGONAL, LEFT, STOP, UP, acro_score, align, backtrack, csc_diag, csc_row, csc_score, i, j, m, matches, move, n, pos, query, query_lw, score, score_diag, score_row, score_up, si_lw, start, trace;\n    if (offset == null) {\n      offset = 0;\n    }\n    query = preparedQuery.query;\n    query_lw = preparedQuery.query_lw;\n    m = subject.length;\n    n = query.length;\n    acro_score = scoreAcronyms(subject, subject_lw, query, query_lw).score;\n    score_row = new Array(n);\n    csc_row = new Array(n);\n    STOP = 0;\n    UP = 1;\n    LEFT = 2;\n    DIAGONAL = 3;\n    trace = new Array(m * n);\n    pos = -1;\n    j = -1;\n    while (++j < n) {\n      score_row[j] = 0;\n      csc_row[j] = 0;\n    }\n    i = -1;\n    while (++i < m) {\n      score = 0;\n      score_up = 0;\n      csc_diag = 0;\n      si_lw = subject_lw[i];\n      j = -1;\n      while (++j < n) {\n        csc_score = 0;\n        align = 0;\n        score_diag = score_up;\n        if (query_lw[j] === si_lw) {\n          start = isWordStart(i, subject, subject_lw);\n          csc_score = csc_diag > 0 ? csc_diag : scoreConsecutives(subject, subject_lw, query, query_lw, i, j, start);\n          align = score_diag + scoreCharacter(i, j, start, acro_score, csc_score);\n        }\n        score_up = score_row[j];\n        csc_diag = csc_row[j];\n        if (score > score_up) {\n          move = LEFT;\n        } else {\n          score = score_up;\n          move = UP;\n        }\n        if (align > score) {\n          score = align;\n          move = DIAGONAL;\n        } else {\n          csc_score = 0;\n        }\n        score_row[j] = score;\n        csc_row[j] = csc_score;\n        trace[++pos] = score > 0 ? move : STOP;\n      }\n    }\n    i = m - 1;\n    j = n - 1;\n    pos = i * n + j;\n    backtrack = true;\n    matches = [];\n    while (backtrack && i >= 0 && j >= 0) {\n      switch (trace[pos]) {\n        case UP:\n          i--;\n          pos -= n;\n          break;\n        case LEFT:\n          j--;\n          pos--;\n          break;\n        case DIAGONAL:\n          matches.push(i + offset);\n          j--;\n          i--;\n          pos -= n + 1;\n          break;\n        default:\n          backtrack = false;\n      }\n    }\n    matches.reverse();\n    return matches;\n  };\n\n}).call(this);\n","var arrayMap = require('./_arrayMap'),\n    baseIntersection = require('./_baseIntersection'),\n    baseRest = require('./_baseRest'),\n    castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n  var mapped = arrayMap(arrays, castArrayLikeObject);\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped)\n    : [];\n});\n\nmodule.exports = intersection;\n","import { extend } from '../../vue';\nimport { NAME_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition';\n\n// --- Constants ---\n\nconst MODEL_PROP_NAME_ACTIVE = 'active';\nconst MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE;\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  [MODEL_PROP_NAME_ACTIVE]: makeProp(PROP_TYPE_BOOLEAN, false),\n  buttonId: makeProp(PROP_TYPE_STRING),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  title: makeProp(PROP_TYPE_STRING),\n  // Sniffed by `<b-tabs>` and added to nav `li.nav-item`\n  titleItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  titleLinkAttributes: makeProp(PROP_TYPE_OBJECT),\n  // Sniffed by `<b-tabs>` and added to nav `a.nav-link`\n  titleLinkClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}), NAME_TAB);\n\n// --- Main component ---\n\n// @vue/component\nconst BTab = /*#__PURE__*/extend({\n  name: NAME_TAB,\n  mixins: [idMixin, normalizeSlotMixin],\n  inject: {\n    getBvTabs: {\n      default: () => () => ({})\n    }\n  },\n  props,\n  data() {\n    return {\n      localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n    };\n  },\n  computed: {\n    bvTabs() {\n      return this.getBvTabs();\n    },\n    // For parent sniffing of child\n    _isTab() {\n      return true;\n    },\n    tabClasses() {\n      const {\n        localActive: active,\n        disabled\n      } = this;\n      return [{\n        active,\n        disabled,\n        'card-body': this.bvTabs.card && !this.noBody\n      },\n      // Apply <b-tabs> `activeTabClass` styles when this tab is active\n      active ? this.bvTabs.activeTabClass : null];\n    },\n    controlledBy() {\n      return this.buttonId || this.safeId('__BV_tab_button__');\n    },\n    computedNoFade() {\n      return !(this.bvTabs.fade || false);\n    },\n    computedLazy() {\n      return this.bvTabs.lazy || this.lazy;\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME_ACTIVE](newValue, oldValue) {\n      if (newValue !== oldValue) {\n        if (newValue) {\n          // If activated post mount\n          this.activate();\n        } else {\n          /* istanbul ignore next */\n          if (!this.deactivate()) {\n            // Tab couldn't be deactivated, so we reset the synced active prop\n            // Deactivation will fail if no other tabs to activate\n            this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n          }\n        }\n      }\n    },\n    disabled(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        const {\n          firstTab\n        } = this.bvTabs;\n        if (newValue && this.localActive && firstTab) {\n          this.localActive = false;\n          firstTab();\n        }\n      }\n    },\n    localActive(newValue) {\n      // Make `active` prop work with `.sync` modifier\n      this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n    }\n  },\n  mounted() {\n    // Inform `<b-tabs>` of our presence\n    this.registerTab();\n  },\n  updated() {\n    // Force the tab button content to update (since slots are not reactive)\n    // Only done if we have a title slot, as the title prop is reactive\n    const {\n      updateButton\n    } = this.bvTabs;\n    if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n      updateButton(this);\n    }\n  },\n  beforeDestroy() {\n    // Inform `<b-tabs>` of our departure\n    this.unregisterTab();\n  },\n  methods: {\n    // Private methods\n    registerTab() {\n      // Inform `<b-tabs>` of our presence\n      const {\n        registerTab\n      } = this.bvTabs;\n      if (registerTab) {\n        registerTab(this);\n      }\n    },\n    unregisterTab() {\n      // Inform `<b-tabs>` of our departure\n      const {\n        unregisterTab\n      } = this.bvTabs;\n      if (unregisterTab) {\n        unregisterTab(this);\n      }\n    },\n    // Public methods\n    activate() {\n      // Not inside a `<b-tabs>` component or tab is disabled\n      const {\n        activateTab\n      } = this.bvTabs;\n      return activateTab && !this.disabled ? activateTab(this) : false;\n    },\n    deactivate() {\n      // Not inside a `<b-tabs>` component or not active to begin with\n      const {\n        deactivateTab\n      } = this.bvTabs;\n      return deactivateTab && this.localActive ? deactivateTab(this) : false;\n    }\n  },\n  render(h) {\n    const {\n      localActive\n    } = this;\n    const $content = h(this.tag, {\n      staticClass: 'tab-pane',\n      class: this.tabClasses,\n      directives: [{\n        name: 'show',\n        value: localActive\n      }],\n      attrs: {\n        role: 'tabpanel',\n        id: this.safeId(),\n        'aria-hidden': localActive ? 'false' : 'true',\n        'aria-labelledby': this.controlledBy || null\n      },\n      ref: 'panel'\n    },\n    // Render content lazily if requested\n    [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n    return h(BVTransition, {\n      props: {\n        mode: 'out-in',\n        noFade: this.computedNoFade\n      }\n    }, [$content]);\n  }\n});\n\nexport { BTab, props };\n","import isPlainObject from 'lodash/isPlainObject';\nimport { BTab } from '../../../../vendor/bootstrap-vue/src/components/tabs/tab';\nimport { DEFAULT_TAB_TITLE_LINK_CLASS } from '../constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlTab',\n  components: {\n    BTab\n  },\n  inheritAttrs: false,\n  props: {\n    titleLinkClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: ''\n    },\n    /**\n     * Query string parameter value to use when `gl-tabs` `sync-active-tab-with-query-params` prop is set to `true`.\n     */\n    queryParamValue: {\n      type: String,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    linkClass() {\n      const {\n        titleLinkClass\n      } = this;\n      if (Array.isArray(titleLinkClass)) {\n        return [...titleLinkClass, DEFAULT_TAB_TITLE_LINK_CLASS];\n      }\n      if (isPlainObject(titleLinkClass)) {\n        return {\n          ...titleLinkClass,\n          [DEFAULT_TAB_TITLE_LINK_CLASS]: true\n        };\n      }\n      return `${titleLinkClass} ${DEFAULT_TAB_TITLE_LINK_CLASS}`.trim();\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tab',_vm._g(_vm._b({attrs:{\"title-link-class\":_vm.linkClass,\"query-param-value\":_vm.queryParamValue},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}})],null,true)},'b-tab',_vm.$attrs,false),_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","const DEFAULT_TAB_TITLE_LINK_CLASS = 'gl-tab-nav-item';\n\nexport { DEFAULT_TAB_TITLE_LINK_CLASS };\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props';\n\n// --- Props ---\n\nconst props = {\n  caption: makeProp(PROP_TYPE_STRING),\n  captionHtml: makeProp(PROP_TYPE_STRING)\n  // `caption-top` is part of table-render mixin (styling)\n  // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst captionMixin = extend({\n  props,\n  computed: {\n    captionId() {\n      return this.isStacked ? this.safeId('_caption_') : null;\n    }\n  },\n  methods: {\n    renderCaption() {\n      const {\n        caption,\n        captionHtml\n      } = this;\n      const h = this.$createElement;\n      let $caption = h();\n      const hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n      if (hasCaptionSlot || caption || captionHtml) {\n        $caption = h('caption', {\n          attrs: {\n            id: this.captionId\n          },\n          domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n          key: 'caption',\n          ref: 'caption'\n        }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n      }\n      return $caption;\n    }\n  }\n});\n\nexport { captionMixin, props };\n","import { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';\nimport GlButton from '../button/button';\nimport GlDisclosureDropdown from '../new_dropdowns/disclosure/disclosure_dropdown';\nimport GlDisclosureDropdownItem from '../new_dropdowns/disclosure/disclosure_dropdown_item';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlFormInputGroup from '../form/form_input_group/form_input_group';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlSearchboxByClick',\n  components: {\n    GlClearIconButton,\n    GlButton,\n    GlFormInput,\n    GlDisclosureDropdown,\n    GlDisclosureDropdownItem,\n    GlFormInputGroup\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective\n  },\n  props: {\n    /**\n     * If provided, used as value of search input\n     */\n    value: {\n      required: false,\n      default: '',\n      // SearchBoxByClick could serve as a container for complex fields (see GlFilteredSearch)\n      // so we should not force any specific type for value here\n      validator: () => true\n    },\n    /**\n     * If provided, used as history items for this component\n     */\n    historyItems: {\n      type: Array,\n      required: false,\n      default: null\n    },\n    /**\n     * If provided, used as a placeholder for this component\n     */\n    placeholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    },\n    clearable: {\n      type: Boolean,\n      required: false,\n      default: true\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     * i18n for recent searches title within history dropdown\n     */\n    recentSearchesHeader: {\n      type: String,\n      required: false,\n      default: 'Recent searches'\n    },\n    /**\n     * i18n for clear button title\n     */\n    clearButtonTitle: {\n      type: String,\n      required: false,\n      default: 'Clear'\n    },\n    /**\n     * i18n for close button title within history dropdown\n     */\n    closeButtonTitle: {\n      type: String,\n      required: false,\n      default: 'Close'\n    },\n    /**\n     * i18n for recent searches clear text\n     */\n    clearRecentSearchesText: {\n      type: String,\n      required: false,\n      default: 'Clear recent searches'\n    },\n    noRecentSearchesText: {\n      type: String,\n      required: false,\n      default: \"You don't have any recent searches\"\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     * HTML attributes to add to the search button\n     */\n    searchButtonAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * Display search button to perform a search.\n     *\n     * Note: it is required to ensure accessibility for WCAG 2.1 3.2.2: On Input.\n     * If the search button is hidden, a separate button should be provided for the same context.\n     */\n    showSearchButton: {\n      type: Boolean,\n      required: false,\n      default: true\n    }\n  },\n  data() {\n    return {\n      currentValue: null,\n      isFocused: false\n    };\n  },\n  computed: {\n    inputAttributes() {\n      const attributes = {\n        type: 'search',\n        placeholder: this.placeholder,\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.currentValue);\n    }\n  },\n  watch: {\n    value: {\n      handler(newValue) {\n        this.currentValue = newValue;\n      },\n      immediate: true\n    },\n    currentValue(newValue) {\n      if (newValue === this.value) return;\n      this.$emit('input', newValue);\n    }\n  },\n  methods: {\n    search(value) {\n      /**\n       * Emitted when search is submitted\n       * @property {*} value Search value\n       */\n      this.$emit('submit', value);\n    },\n    selectHistoryItem(item) {\n      this.currentValue = item;\n\n      /**\n       * Emitted when item from history is selected\n       * @property {*} item History item\n       */\n      this.$emit('history-item-selected', item);\n      setTimeout(() => {\n        document.activeElement.blur();\n      });\n    },\n    clearInput() {\n      this.currentValue = '';\n      /**\n       * Emitted when search is cleared\n       */\n      this.$emit('clear');\n      if (this.$refs.input) {\n        this.$refs.input.$el.focus();\n      }\n    },\n    emitClearHistory() {\n      /**\n       * Emitted when clear history button is clicked\n       */\n      this.$emit('clear-history');\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-form-input-group',{staticClass:\"gl-search-box-by-click\",class:{ 'gl-search-box-by-click-with-search-button': _vm.showSearchButton },scopedSlots:_vm._u([(_vm.historyItems)?{key:\"prepend\",fn:function(){return [_c('gl-disclosure-dropdown',{ref:\"historyDropdown\",staticClass:\"gl-search-box-by-click-history\",attrs:{\"icon\":\"history\",\"category\":\"tertiary\",\"toggle-text\":\"Toggle history\",\"text-sr-only\":\"\",\"fluid-width\":\"\",\"disabled\":_vm.disabled},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',{staticClass:\"gl-search-box-by-click-history-header gl-flex gl-min-h-8 gl-grow gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-border-b-solid\"},[_vm._v(\"\\n          \"+_vm._s(_vm.recentSearchesHeader)+\"\\n        \")])]},proxy:true},(_vm.historyItems.length)?{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-flex-col gl-border-t-1 gl-border-t-dropdown gl-p-2 gl-border-t-solid\"},[_c('gl-button',{ref:\"clearHistory\",staticClass:\"!gl-justify-start\",attrs:{\"category\":\"tertiary\"},on:{\"click\":_vm.emitClearHistory}},[_vm._v(\"\\n            \"+_vm._s(_vm.clearRecentSearchesText)+\"\\n          \")])],1)]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.historyItems.length)?_vm._l((_vm.historyItems),function(item,idx){return _c('gl-disclosure-dropdown-item',{key:idx,staticClass:\"gl-search-box-by-click-history-item\",on:{\"action\":function($event){return _vm.selectHistoryItem(item)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"history-item\",function(){return [_vm._v(_vm._s(item))]},{\"historyItem\":item})]},proxy:true}],null,true)})}):_c('div',{staticClass:\"gl-px-4 gl-py-2 gl-text-sm gl-text-subtle\"},[_vm._v(\"\\n        \"+_vm._s(_vm.noRecentSearchesText)+\"\\n      \")])],2)]},proxy:true}:null,(_vm.showSearchButton)?{key:\"append\",fn:function(){return [_c('gl-button',_vm._b({ref:\"searchButton\",staticClass:\"gl-search-box-by-click-search-button\",attrs:{\"category\":\"tertiary\",\"icon\":\"search\",\"disabled\":_vm.disabled,\"aria-label\":\"Search\",\"data-testid\":\"search-button\"},on:{\"click\":function($event){return _vm.search(_vm.currentValue)}}},'gl-button',_vm.searchButtonAttributes,false))]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._t(\"input\",function(){return [_c('gl-form-input',_vm._b({ref:\"input\",staticClass:\"gl-search-box-by-click-input\",class:{ '!gl-rounded-base': !_vm.showSearchButton },attrs:{\"disabled\":_vm.disabled},on:{\"focus\":function($event){_vm.isFocused = true;},\"blur\":function($event){_vm.isFocused = false;}},nativeOn:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.search(_vm.currentValue)}},model:{value:(_vm.currentValue),callback:function ($$v) {_vm.currentValue=$$v;},expression:\"currentValue\"}},'gl-form-input',_vm.inputAttributes,false))]}),_vm._v(\" \"),(_vm.clearable && _vm.hasValue && !_vm.disabled)?_c('gl-clear-icon-button',{staticClass:\"gl-search-box-by-click-icon-button gl-search-box-by-click-clear-button gl-clear-icon-button\",attrs:{\"title\":_vm.clearButtonTitle,\"tooltip-container\":_vm.tooltipContainer,\"data-testid\":\"filtered-search-clear-button\"},on:{\"click\":_vm.clearInput}}):_vm._e()],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 { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nmodule.exports = baseSortBy;\n","import { GlToast } from '@gitlab/ui';\nimport Vue from 'vue';\n\nVue.use(GlToast);\nconst instance = new Vue();\n\nexport default function showGlobalToast(...args) {\n  return instance.$toast.show(...args);\n}\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { identity } from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { attrsMixin } from '../../../mixins/attrs';\n\n// Main `<table>` render mixin\n// Includes all main table styling options\n\n// --- Props ---\n\nconst props = {\n  bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n  borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n  captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n  dark: makeProp(PROP_TYPE_BOOLEAN, false),\n  fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n  hover: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n  outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n  responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  // If a string, it is assumed to be the table `max-height` value\n  stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  striped: makeProp(PROP_TYPE_BOOLEAN, false),\n  tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tableVariant: makeProp(PROP_TYPE_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tableRendererMixin = extend({\n  mixins: [attrsMixin],\n  provide() {\n    return {\n      getBvTable: () => this\n    };\n  },\n  // Don't place attributes on root element automatically,\n  // as table could be wrapped in responsive `<div>`\n  inheritAttrs: false,\n  props,\n  computed: {\n    isTableSimple() {\n      return false;\n    },\n    // Layout related computed props\n    isResponsive() {\n      const {\n        responsive\n      } = this;\n      return responsive === '' ? true : responsive;\n    },\n    isStickyHeader() {\n      let {\n        stickyHeader\n      } = this;\n      stickyHeader = stickyHeader === '' ? true : stickyHeader;\n      return this.isStacked ? false : stickyHeader;\n    },\n    wrapperClasses() {\n      const {\n        isResponsive\n      } = this;\n      return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? `table-responsive-${this.responsive}` : ''].filter(identity);\n    },\n    wrapperStyles() {\n      const {\n        isStickyHeader\n      } = this;\n      return isStickyHeader && !isBoolean(isStickyHeader) ? {\n        maxHeight: isStickyHeader\n      } : {};\n    },\n    tableClasses() {\n      let {\n        hover,\n        tableVariant,\n        selectableTableClasses,\n        stackedTableClasses,\n        tableClass,\n        computedBusy\n      } = safeVueInstance(this);\n      hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !computedBusy;\n      return [\n      // User supplied classes\n      tableClass,\n      // Styling classes\n      {\n        'table-striped': this.striped,\n        'table-hover': hover,\n        'table-dark': this.dark,\n        'table-bordered': this.bordered,\n        'table-borderless': this.borderless,\n        'table-sm': this.small,\n        // The following are b-table custom styles\n        'gl-border': this.outlined,\n        'b-table-fixed': this.fixed,\n        'b-table-caption-top': this.captionTop,\n        'b-table-no-border-collapse': this.noBorderCollapse\n      }, tableVariant ? `${this.dark ? 'bg' : 'table'}-${tableVariant}` : '',\n      // Stacked table classes\n      stackedTableClasses,\n      // Selectable classes\n      selectableTableClasses];\n    },\n    tableAttrs() {\n      const {\n        computedItems: items,\n        filteredItems,\n        computedFields: fields,\n        selectableTableAttrs,\n        computedBusy\n      } = safeVueInstance(this);\n      const ariaAttrs = this.isTableSimple ? {} : {\n        'aria-busy': toString(computedBusy),\n        'aria-colcount': toString(fields.length),\n        // Preserve user supplied `aria-describedby`, if provided\n        'aria-describedby': this.bvAttrs['aria-describedby'] || this.$refs.caption ? this.captionId : null\n      };\n      const rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n      return {\n        // We set `aria-rowcount` before merging in `$attrs`,\n        // in case user has supplied their own\n        'aria-rowcount': rowCount,\n        // Merge in user supplied `$attrs` if any\n        ...this.bvAttrs,\n        // Now we can override any `$attrs` here\n        id: this.safeId(),\n        role: this.bvAttrs.role || 'table',\n        ...ariaAttrs,\n        ...selectableTableAttrs\n      };\n    }\n  },\n  render(h) {\n    const {\n      wrapperClasses,\n      renderCaption,\n      renderColgroup,\n      renderThead,\n      renderTbody,\n      renderTfoot\n    } = safeVueInstance(this);\n    const $content = [];\n    if (this.isTableSimple) {\n      $content.push(this.normalizeSlot());\n    } else {\n      // Build the `<caption>` (from caption mixin)\n      $content.push(renderCaption ? renderCaption() : null);\n\n      // Build the `<colgroup>`\n      $content.push(renderColgroup ? renderColgroup() : null);\n\n      // Build the `<thead>`\n      $content.push(renderThead ? renderThead() : null);\n\n      // Build the `<tbody>`\n      $content.push(renderTbody ? renderTbody() : null);\n\n      // Build the `<tfoot>`\n      $content.push(renderTfoot ? renderTfoot() : null);\n    }\n\n    // Assemble `<table>`\n    const $table = h('table', {\n      staticClass: 'table b-table',\n      class: this.tableClasses,\n      attrs: this.tableAttrs,\n      key: 'b-table'\n    }, $content.filter(identity));\n\n    // Add responsive/sticky wrapper if needed and return table\n    return wrapperClasses.length > 0 ? h('div', {\n      class: wrapperClasses,\n      style: this.wrapperStyles,\n      key: 'wrap'\n    }, [$table]) : $table;\n  }\n});\n\nexport { props, tableRendererMixin };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getProjectMergeRequestsCountEE\"},\"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\":\"search\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssigneeWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ReviewerWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeUser\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MilestoneWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestsResolverNegatedParams\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"namespace\"},\"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\",\"alias\":{\"kind\":\"Name\",\"value\":\"openedMergeRequests\"},\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequests\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"opened\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mergedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeUser\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"mergedMergeRequests\"},\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequests\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"merged\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mergedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeUser\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"closedMergeRequests\"},\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequests\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"closed\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mergedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeUser\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"allMergeRequests\"},\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequests\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"all\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"approver\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"mergedBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeUser\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranches\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"deployedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":3964}};\n    doc.loc.source = {\"body\":\"query getProjectMergeRequestsCountEE(\\n  $fullPath: ID!\\n  $search: String\\n  $approvedBy: [String!]\\n  $approver: [String!]\\n  $assigneeUsernames: String\\n  $assigneeWildcardId: AssigneeWildcardId\\n  $reviewerUsername: String\\n  $reviewerWildcardId: ReviewerWildcardId\\n  $authorUsername: String\\n  $draft: Boolean\\n  $labelName: [String!]\\n  $releaseTag: String\\n  $mergeUser: String\\n  $milestoneTitle: String\\n  $milestoneWildcardId: MilestoneWildcardId\\n  $myReactionEmoji: String\\n  $sourceBranches: [String!]\\n  $targetBranches: [String!]\\n  $deployedBefore: Time\\n  $deployedAfter: Time\\n  $environmentName: String\\n  $not: MergeRequestsResolverNegatedParams\\n) {\\n  namespace: project(fullPath: $fullPath) {\\n    id\\n    openedMergeRequests: mergeRequests(\\n      state: opened\\n      search: $search\\n      approvedBy: $approvedBy\\n      approver: $approver\\n      assigneeUsername: $assigneeUsernames\\n      assigneeWildcardId: $assigneeWildcardId\\n      reviewerUsername: $reviewerUsername\\n      reviewerWildcardId: $reviewerWildcardId\\n      authorUsername: $authorUsername\\n      draft: $draft\\n      labelName: $labelName\\n      releaseTag: $releaseTag\\n      mergedBy: $mergeUser\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      sourceBranches: $sourceBranches\\n      targetBranches: $targetBranches\\n      deployedBefore: $deployedBefore\\n      deployedAfter: $deployedAfter\\n      environmentName: $environmentName\\n      not: $not\\n    ) {\\n      count\\n    }\\n    mergedMergeRequests: mergeRequests(\\n      state: merged\\n      search: $search\\n      approvedBy: $approvedBy\\n      approver: $approver\\n      assigneeUsername: $assigneeUsernames\\n      assigneeWildcardId: $assigneeWildcardId\\n      reviewerUsername: $reviewerUsername\\n      reviewerWildcardId: $reviewerWildcardId\\n      authorUsername: $authorUsername\\n      draft: $draft\\n      labelName: $labelName\\n      releaseTag: $releaseTag\\n      mergedBy: $mergeUser\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      sourceBranches: $sourceBranches\\n      targetBranches: $targetBranches\\n      deployedBefore: $deployedBefore\\n      deployedAfter: $deployedAfter\\n      environmentName: $environmentName\\n      not: $not\\n    ) {\\n      count\\n    }\\n    closedMergeRequests: mergeRequests(\\n      state: closed\\n      search: $search\\n      approvedBy: $approvedBy\\n      approver: $approver\\n      assigneeUsername: $assigneeUsernames\\n      assigneeWildcardId: $assigneeWildcardId\\n      reviewerUsername: $reviewerUsername\\n      reviewerWildcardId: $reviewerWildcardId\\n      authorUsername: $authorUsername\\n      draft: $draft\\n      labelName: $labelName\\n      releaseTag: $releaseTag\\n      mergedBy: $mergeUser\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      sourceBranches: $sourceBranches\\n      targetBranches: $targetBranches\\n      deployedBefore: $deployedBefore\\n      deployedAfter: $deployedAfter\\n      environmentName: $environmentName\\n      not: $not\\n    ) {\\n      count\\n    }\\n    allMergeRequests: mergeRequests(\\n      state: all\\n      search: $search\\n      approvedBy: $approvedBy\\n      approver: $approver\\n      assigneeUsername: $assigneeUsernames\\n      assigneeWildcardId: $assigneeWildcardId\\n      reviewerUsername: $reviewerUsername\\n      reviewerWildcardId: $reviewerWildcardId\\n      authorUsername: $authorUsername\\n      draft: $draft\\n      labelName: $labelName\\n      releaseTag: $releaseTag\\n      mergedBy: $mergeUser\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      sourceBranches: $sourceBranches\\n      targetBranches: $targetBranches\\n      deployedBefore: $deployedBefore\\n      deployedAfter: $deployedAfter\\n      environmentName: $environmentName\\n      not: $not\\n    ) {\\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[\"getProjectMergeRequestsCountEE\"] = oneQuery(doc, \"getProjectMergeRequestsCountEE\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequest\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"downvotes\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"upvotes\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolvedDiscussionsCount\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isSignedIn\"}}}]}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolvableDiscussionsCount\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isSignedIn\"}}}]}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignees\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"skip\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hideUsers\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewers\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"skip\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hideUsers\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"author\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"skip\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hideUsers\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"labels\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"color\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"milestone\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dueDate\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startDate\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headPipeline\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"conflicts\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commitCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranchExists\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranchExists\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranchPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"taskCompletionStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"completedCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hidden\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestApprovalFragment\"},\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":1061}};\n    doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/user.fragment.graphql\\\"\\n#import \\\"ee_else_ce/merge_request_dashboard/queries/merge_request_approval.fragment.graphql\\\"\\n\\nfragment MergeRequestFragment on MergeRequest {\\n  id\\n  iid\\n  createdAt\\n  downvotes\\n  state\\n  title\\n  updatedAt\\n  mergedAt\\n  upvotes\\n  resolvedDiscussionsCount @include(if: $isSignedIn)\\n  resolvableDiscussionsCount @include(if: $isSignedIn)\\n  webUrl\\n  assignees @skip(if: $hideUsers) {\\n    nodes {\\n      ...User\\n    }\\n  }\\n  reviewers @skip(if: $hideUsers) {\\n    nodes {\\n      ...User\\n    }\\n  }\\n  author @skip(if: $hideUsers) {\\n    ...User\\n  }\\n  labels {\\n    nodes {\\n      id\\n      color\\n      title\\n      description\\n    }\\n  }\\n  milestone {\\n    id\\n    dueDate\\n    startDate\\n    webPath\\n    title\\n  }\\n  headPipeline {\\n    id\\n    detailedStatus {\\n      id\\n      icon\\n      text\\n      detailsPath\\n    }\\n  }\\n  conflicts\\n  commitCount\\n  sourceBranchExists\\n  targetBranchExists\\n  targetBranch\\n  targetBranchPath\\n  taskCompletionStatus {\\n    completedCount\\n    count\\n  }\\n  hidden\\n  ...MergeRequestApprovalFragment\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/user.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"ee_else_ce/merge_request_dashboard/queries/merge_request_approval.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"MergeRequestFragment\"] = oneQuery(doc, \"MergeRequestFragment\");\n        \n","import { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { sortKeys, omit } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, BForm } from '../form/form';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  formClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}), NAME_DROPDOWN_FORM);\n\n// --- Main component ---\n\n// @vue/component\nconst BDropdownForm = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_FORM,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      listeners,\n      children\n    } = _ref;\n    return h('li', mergeData(omit(data, ['attrs', 'on']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(BForm, {\n      staticClass: 'b-dropdown-form',\n      class: [props.formClass, {\n        disabled: props.disabled\n      }],\n      props,\n      attrs: {\n        ...(data.attrs || {}),\n        disabled: props.disabled,\n        // Tab index of -1 for keyboard navigation\n        tabindex: props.disabled ? null : '-1'\n      },\n      on: listeners,\n      ref: 'form'\n    }, children)]);\n  }\n});\n\nexport { BDropdownForm, props };\n","import { BDropdownForm } from '../../../vendor/bootstrap-vue/src/components/dropdown/dropdown-form';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlDropdownForm',\n  components: {\n    BDropdownForm\n  },\n  inheritAttrs: false\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-dropdown-form',_vm._g(_vm._b({attrs:{\"form-class\":\"gl-p-0\"}},'b-dropdown-form',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import isString from 'lodash/isString';\nimport Pikaday from 'pikaday';\nimport { defaultDateFormat, datepickerWidthOptionsMap } from '../../../utils/constants';\nimport { areDatesEqual } from '../../../utils/datetime_utility';\nimport GlButton from '../button/button';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlIcon from '../icon/icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst pad = function (val) {\n  let len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  return `0${val}`.slice(-len);\n};\n\n/**\n * Used `onSelect` method in pickaday\n * @param {Date} date UTC format\n * @return {String} Date formated in yyyy-mm-dd\n */\nconst defaultDateFormatter = date => {\n  const day = pad(date.getDate());\n  const month = pad(date.getMonth() + 1);\n  const year = date.getFullYear();\n  return `${year}-${month}-${day}`;\n};\nconst isBefore = (compareTo, date) => compareTo && date && date.getTime() < compareTo.getTime();\nconst highlightPastDates = pikaday => {\n  const pikaButtons = pikaday.el.querySelectorAll('.pika-button');\n  const today = new Date();\n  pikaButtons.forEach(pikaButton => {\n    const {\n      pikaYear,\n      pikaMonth,\n      pikaDay\n    } = pikaButton.dataset;\n    const pikaButtonDate = new Date(pikaYear, pikaMonth, pikaDay);\n    if (isBefore(today, pikaButtonDate)) {\n      pikaButton.classList.add('is-past-date');\n    }\n  });\n};\nconst addAccessibleLabels = element => {\n  // Pikaday sets `role=\"heading\"`, which requires a corresponding\n  // `aria-level`. Ensure we have one.\n  const titleEl = element.querySelector('.pika-title[role=\"heading\"]');\n  if (titleEl) {\n    titleEl.setAttribute('aria-level', 3);\n  }\n\n  // Add aria-label to month & year select dropdowns\n  const monthEl = element.querySelector('select.pika-select-month');\n  if (monthEl) {\n    monthEl.setAttribute('aria-label', translate('GlDatepicker.monthLabel', 'Month'));\n  }\n  const yearEl = element.querySelector('select.pika-select-year');\n  if (yearEl) {\n    yearEl.setAttribute('aria-label', translate('GlDatepicker.yearLabel', 'Year'));\n  }\n};\nvar script = {\n  name: 'GlDatepicker',\n  components: {\n    GlFormInput,\n    GlIcon,\n    GlButton\n  },\n  props: {\n    /**\n     * Selector of element that triggers the datepicker. Defaults to the calendar icon. Pass `null` to trigger on input focus.\n     */\n    target: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * DOM node to render calendar into. Defaults to the datepicker container. Pass `null` to use Pikaday default.\n     */\n    container: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    value: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    minDate: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    maxDate: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    startRange: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    endRange: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    /**\n     * Accepts a function that accepts a date as argument and returns true if the date is disabled.\n     */\n    disableDayFn: {\n      type: Function,\n      required: false,\n      default: null\n    },\n    firstDay: {\n      type: Number,\n      required: false,\n      default: 0\n    },\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    placeholder: {\n      type: String,\n      required: false,\n      default: defaultDateFormat\n    },\n    /**\n     * Defaults to `off` when datepicker opens on focus, otherwise defaults to `null`.\n     */\n    autocomplete: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    displayField: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    startOpened: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Use this prop to set the initial date for the datepicker.\n     */\n    defaultDate: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    i18n: {\n      type: Object,\n      required: false,\n      default: null\n    },\n    theme: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    showClearButton: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    inputId: {\n      type: String,\n      required: false,\n      default: null\n    },\n    inputLabel: {\n      type: String,\n      required: false,\n      default: 'Enter date'\n    },\n    inputName: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Maximum width of the Datepicker\n     */\n    width: {\n      type: String,\n      required: false,\n      default: null,\n      validator: value => Object.keys(datepickerWidthOptionsMap).includes(value)\n    },\n    state: {\n      type: Boolean,\n      required: false,\n      default: null\n    }\n  },\n  data() {\n    return {\n      textInput: ''\n    };\n  },\n  computed: {\n    formattedDate() {\n      return 'calendar' in this ? this.calendar.toString() : '';\n    },\n    customTrigger() {\n      return isString(this.target) && this.target !== '';\n    },\n    triggerOnFocus() {\n      return this.target === null;\n    },\n    showDefaultField() {\n      return !this.customTrigger || this.triggerOnFocus;\n    },\n    renderClearButton() {\n      return this.showClearButton && this.textInput !== '' && !this.disabled;\n    },\n    inputAutocomplete() {\n      if (this.autocomplete !== '') {\n        return this.autocomplete;\n      }\n      if (this.triggerOnFocus) {\n        return 'off';\n      }\n      return null;\n    },\n    datepickerClasses() {\n      return ['gl-datepicker', 'gl-inline-block', 'gl-w-full',\n      // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n      `gl-form-input-${this.computedWidth}`];\n    },\n    computedWidth() {\n      if (this.width) {\n        return this.width;\n      }\n      return 'md';\n    }\n  },\n  watch: {\n    value(val) {\n      if (!areDatesEqual(val, this.calendar.getDate())) {\n        this.calendar.setDate(val, true);\n      }\n    },\n    minDate(minDate) {\n      this.calendar.setMinDate(minDate);\n    },\n    maxDate(maxDate) {\n      this.calendar.setMaxDate(maxDate);\n    },\n    startRange(startRange) {\n      this.calendar.setStartRange(startRange);\n    },\n    endRange(endRange) {\n      this.calendar.setEndRange(endRange);\n    }\n  },\n  mounted() {\n    const $parentEl = this.$parent.$el;\n    const openedEvent = this.opened.bind(this);\n    const drawEvent = this.draw.bind(this);\n    const pikadayConfig = {\n      field: this.$el.querySelector('input[type=\"text\"]'),\n      // `!gl-absolute` is needed because of this bug: https://github.com/Pikaday/Pikaday/issues/840\n      theme: `gl-datepicker-theme !gl-absolute ${this.theme}`,\n      defaultDate: this.defaultDate || this.value,\n      setDefaultDate: Boolean(this.value) || Boolean(this.defaultDate),\n      minDate: this.minDate,\n      maxDate: this.maxDate,\n      // Only supports default gitlab format YYYY-MM-DD. We have to decide if we want to support other formats.\n      format: defaultDateFormat,\n      parse: dateString => {\n        const parsedDate = Date.parse(dateString.replace(/-/g, '/'));\n        return Number.isNaN(parsedDate) ? new Date() : new Date(parsedDate);\n      },\n      disableDayFn: this.disableDayFn,\n      firstDay: this.firstDay,\n      ariaLabel: this.ariaLabel,\n      toString: date => defaultDateFormatter(date),\n      onSelect: this.selected.bind(this),\n      onClose: this.closed.bind(this),\n      onOpen: () => {\n        addAccessibleLabels(this.$el);\n        openedEvent();\n      },\n      onDraw: pikaday => {\n        highlightPastDates(pikaday);\n        drawEvent();\n      }\n    };\n\n    // Pass `null` as `target` prop to use the `field` as the trigger (open on focus)\n    if (!this.triggerOnFocus && !this.disabled) {\n      const trigger = this.customTrigger ? $parentEl.querySelector(this.target) : this.$refs.calendarTriggerBtn.$el;\n      pikadayConfig.trigger = trigger;\n\n      // Set `trigger` as the `field` if `field` element doesn't exist (not passed via the slot)\n      if (!pikadayConfig.field && this.customTrigger) {\n        pikadayConfig.field = trigger;\n      }\n    }\n\n    // Pass `null` as `container` prop to prevent passing the `container` option to Pikaday\n    if (this.container !== null) {\n      const container = this.container ? $parentEl.querySelector(this.container) : this.$el;\n      pikadayConfig.container = container;\n    }\n    if (this.i18n) {\n      pikadayConfig.i18n = this.i18n;\n    }\n    this.calendar = new Pikaday(pikadayConfig);\n    if (this.startOpened) {\n      this.calendar.show();\n    }\n  },\n  beforeDestroy() {\n    this.calendar.destroy();\n  },\n  methods: {\n    // is used to open datepicker programmatically\n    show() {\n      this.calendar.show();\n    },\n    selected(date) {\n      /**\n       * Emitted when a new date has been selected.\n       * @property {Date} date The selected date\n       */\n      this.$emit('input', date);\n    },\n    closed() {\n      /**\n       * Emitted when the datepicker is hidden.\n       */\n      this.$emit('close');\n    },\n    opened() {\n      /**\n       * Emitted when the datepicker becomes visible.\n       */\n      this.$emit('open');\n    },\n    cleared() {\n      this.textInput = '';\n      /**\n       * Emitted when the clear button is clicked.\n       */\n      this.$emit('clear');\n    },\n    draw() {\n      /**\n       * Emitted when the datepicker draws a new month.\n       */\n      this.$emit('monthChange');\n    },\n    onKeydown() {\n      if (this.textInput === '') {\n        const resetDate = this.minDate || null;\n        this.calendar.setDate(resetDate);\n        this.selected(resetDate);\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('div',{class:_vm.datepickerClasses},[(_vm.showDefaultField)?_c('div',{staticClass:\"gl-flex gl-items-start gl-gap-3\"},[_c('div',{staticClass:\"gl-relative gl-flex gl-grow\"},[_vm._t(\"default\",function(){return [_c('gl-form-input',{class:_vm.renderClearButton ? '!gl-pr-9' : '!gl-pr-7',attrs:{\"id\":_vm.inputId,\"name\":_vm.inputName,\"data-testid\":\"gl-datepicker-input\",\"value\":_vm.formattedDate,\"placeholder\":_vm.placeholder,\"autocomplete\":_vm.inputAutocomplete,\"disabled\":_vm.disabled,\"aria-label\":_vm.inputLabel,\"state\":_vm.state},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onKeydown.apply(null, arguments)}},model:{value:(_vm.textInput),callback:function ($$v) {_vm.textInput=$$v;},expression:\"textInput\"}})]},{\"formattedDate\":_vm.formattedDate}),_vm._v(\" \"),_c('div',{staticClass:\"gl-datepicker-actions\"},[(_vm.renderClearButton)?_c('gl-button',{staticClass:\"gl-pointer-events-auto\",attrs:{\"data-testid\":\"clear-button\",\"aria-label\":\"Clear date\",\"category\":\"tertiary\",\"size\":\"small\",\"icon\":\"clear\"},on:{\"click\":_vm.cleared}}):_vm._e(),_vm._v(\" \"),(_vm.triggerOnFocus || _vm.disabled)?_c('span',{staticClass:\"gl-px-2\",class:_vm.disabled ? 'gl-text-gray-400' : 'gl-text-gray-500',attrs:{\"data-testid\":\"datepicker-calendar-icon\"}},[_c('gl-icon',{staticClass:\"gl-block\",attrs:{\"name\":\"calendar\",\"size\":16}})],1):_c('gl-button',{ref:\"calendarTriggerBtn\",staticClass:\"gl-pointer-events-auto\",attrs:{\"aria-label\":\"Open datepicker\",\"category\":\"tertiary\",\"size\":\"small\",\"icon\":\"calendar\"}})],1)],2),_vm._v(\" \"),_vm._t(\"after\")],2):_vm._t(\"default\",null,{\"formattedDate\":_vm.formattedDate})],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 { defaultDateFormatter, pad };\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n  return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","import { Mousetrap } from '~/lib/mousetrap';\nimport 'mousetrap/plugins/pause/mousetrap-pause';\n\nconst shorcutsDisabledKey = 'shortcutsDisabled';\n\nexport const shouldDisableShortcuts = () => !window.gon.keyboard_shortcuts_enabled;\n\nexport function enableShortcuts() {\n  localStorage.setItem(shorcutsDisabledKey, false);\n  Mousetrap.unpause();\n}\n\nexport function disableShortcuts() {\n  localStorage.setItem(shorcutsDisabledKey, true);\n  Mousetrap.pause();\n}\n","import { extend } from '../../vue';\nimport { NAME_TABLE_LITE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as props$2, captionMixin } from './helpers/mixin-caption';\nimport { props as props$3, colgroupMixin } from './helpers/mixin-colgroup';\nimport { props as props$4, itemsMixin } from './helpers/mixin-items';\nimport { props as props$5, stackedMixin } from './helpers/mixin-stacked';\nimport { props as props$6, tableRendererMixin } from './helpers/mixin-table-renderer';\nimport { props as props$7, tbodyMixin } from './helpers/mixin-tbody';\nimport { props as props$8, tfootMixin } from './helpers/mixin-tfoot';\nimport { props as props$9, theadMixin } from './helpers/mixin-thead';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  ...props$2,\n  ...props$3,\n  ...props$4,\n  ...props$5,\n  ...props$6,\n  ...props$7,\n  ...props$8,\n  ...props$9\n}), NAME_TABLE_LITE);\n\n// --- Main component ---\n\n// @vue/component\nconst BTableLite = /*#__PURE__*/extend({\n  name: NAME_TABLE_LITE,\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component\n  mixins: [\n  // General mixins\n  attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin,\n  // Required table mixins\n  itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin,\n  // Table features mixins\n  // These are pretty lightweight, and are useful for lightweight tables\n  captionMixin, colgroupMixin],\n  props\n\n  // Render function is provided by `tableRendererMixin`\n});\n\nexport { BTableLite, props };\n","import { BTableLite } from '../../../vendor/bootstrap-vue/src/components/table/table-lite';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst {\n  tableClass\n} = BTableLite.options.props;\nvar script = {\n  name: 'GlTableLite',\n  components: {\n    BTableLite\n  },\n  inheritAttrs: false,\n  props: {\n    tableClass,\n    fields: {\n      type: Array,\n      required: false,\n      default: null\n    },\n    stickyHeader: {\n      type: Boolean,\n      default: false,\n      required: false\n    }\n  },\n  computed: {\n    stickyHeaderClass() {\n      return this.stickyHeader ? 'gl-table--sticky-header' : null;\n    },\n    localTableClass() {\n      return ['gl-table', this.tableClass, this.stickyHeaderClass];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table-lite',_vm._g(_vm._b({attrs:{\"table-class\":_vm.localTableClass,\"fields\":_vm.fields},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'b-table-lite',_vm.$attrs,false),_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","import { Wormhole, PortalTarget } from 'portal-vue';\nimport { extend } from '../../vue';\nimport { NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_DESTROYED } from '../../constants/events';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { requestAF, removeClass } from '../../utils/dom';\nimport { getRootEventName } from '../../utils/events';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { warn } from '../../utils/warn';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Helper components ---\n\n// @vue/component\nconst DefaultTransition = /*#__PURE__*/extend({\n  mixins: [normalizeSlotMixin],\n  data() {\n    return {\n      // Transition classes base name\n      name: 'b-toaster'\n    };\n  },\n  methods: {\n    onAfterEnter(el) {\n      // Work around a Vue.js bug where `*-enter-to` class is not removed\n      // See: https://github.com/vuejs/vue/pull/7901\n      // The `*-move` class is also stuck on elements that moved,\n      // but there are no JavaScript hooks to handle after move\n      // See: https://github.com/vuejs/vue/pull/7906\n      requestAF(() => {\n        removeClass(el, `${this.name}-enter-to`);\n      });\n    }\n  },\n  render(h) {\n    return h('transition-group', {\n      props: {\n        tag: 'div',\n        name: this.name\n      },\n      on: {\n        afterEnter: this.onAfterEnter\n      }\n    }, this.normalizeSlot());\n  }\n});\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Allowed: 'true' or 'false' or `null`\n  ariaAtomic: makeProp(PROP_TYPE_STRING),\n  ariaLive: makeProp(PROP_TYPE_STRING),\n  name: makeProp(PROP_TYPE_STRING, undefined, true),\n  // Required\n  // Aria role\n  role: makeProp(PROP_TYPE_STRING)\n}, NAME_TOASTER);\n\n// --- Main component ---\n\n// @vue/component\nconst BToaster = /*#__PURE__*/extend({\n  name: NAME_TOASTER,\n  mixins: [listenOnRootMixin],\n  props,\n  data() {\n    return {\n      // We don't render on SSR or if a an existing target found\n      doRender: false,\n      dead: false,\n      // Toaster names cannot change once created\n      staticName: this.name\n    };\n  },\n  beforeMount() {\n    const {\n      name\n    } = this;\n    this.staticName = name;\n\n    /* istanbul ignore if */\n    if (Wormhole.hasTarget(name)) {\n      warn(`A \"<portal-target>\" with name \"${name}\" already exists in the document.`, NAME_TOASTER);\n      this.dead = true;\n    } else {\n      this.doRender = true;\n    }\n  },\n  beforeDestroy() {\n    // Let toasts made with `this.$bvToast.toast()` know that this toaster\n    // is being destroyed and should should also destroy/hide themselves\n    if (this.doRender) {\n      this.emitOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), this.name);\n    }\n  },\n  destroyed() {\n    // Remove from DOM if needed\n    const {\n      $el\n    } = this;\n    /* istanbul ignore next: difficult to test */\n    if ($el && $el.parentNode) {\n      $el.parentNode.removeChild($el);\n    }\n  },\n  render(h) {\n    let $toaster = h('div', {\n      class: ['gl-hidden', {\n        'b-dead-toaster': this.dead\n      }]\n    });\n    if (this.doRender) {\n      const $target = h(PortalTarget, {\n        staticClass: 'b-toaster-slot',\n        props: {\n          name: this.staticName,\n          multiple: true,\n          tag: 'div',\n          slim: false,\n          // transition: this.transition || DefaultTransition\n          transition: DefaultTransition\n        }\n      });\n      $toaster = h('div', {\n        staticClass: 'b-toaster',\n        class: [this.staticName],\n        attrs: {\n          id: this.staticName,\n          // Fallback to null to make sure attribute doesn't exist\n          role: this.role || null,\n          'aria-live': this.ariaLive,\n          'aria-atomic': this.ariaAtomic\n        }\n      }, [$target]);\n    }\n    return $toaster;\n  }\n});\n\nexport { BToaster, DefaultTransition, props };\n","import { Wormhole, Portal } from 'portal-vue';\nimport { extend, COMPONENT_UID_KEY } from '../../vue';\nimport { NAME_TOAST, NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_SHOW, EVENT_NAME_HIDE, EVENT_NAME_DESTROYED, EVENT_OPTIONS_NO_CAPTURE, EVENT_NAME_SHOWN, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TOAST_TITLE, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { requestAF } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOnOff } from '../../utils/events';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { createNewChildComponent } from '../../utils/create-new-child-component';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { props as props$2, idMixin } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { scopedStyleMixin } from '../../mixins/scoped-style';\nimport { props as props$1, BLink } from '../link/link';\nimport { BVTransition } from '../transition/bv-transition';\nimport { BToaster } from './toaster';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('visible', {\n  type: PROP_TYPE_BOOLEAN,\n  defaultValue: false,\n  event: EVENT_NAME_CHANGE\n});\nconst MIN_DURATION = 1000;\n\n// --- Props ---\n\nconst linkProps = pick(props$1, ['href', 'to']);\nconst props = makePropsConfigurable(sortKeys({\n  ...props$2,\n  ...modelProps,\n  ...linkProps,\n  appendToast: makeProp(PROP_TYPE_BOOLEAN, false),\n  autoHideDelay: makeProp(PROP_TYPE_NUMBER_STRING, 5000),\n  bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n  // Switches role to 'status' and aria-live to 'polite'\n  isStatus: makeProp(PROP_TYPE_BOOLEAN, false),\n  noAutoHide: makeProp(PROP_TYPE_BOOLEAN, false),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noHoverPause: makeProp(PROP_TYPE_BOOLEAN, false),\n  solid: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Render the toast in place, rather than in a portal-target\n  static: makeProp(PROP_TYPE_BOOLEAN, false),\n  title: makeProp(PROP_TYPE_STRING),\n  toastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  toaster: makeProp(PROP_TYPE_STRING, 'b-toaster-top-right'),\n  variant: makeProp(PROP_TYPE_STRING)\n}), NAME_TOAST);\n\n// --- Main component ---\n\n// @vue/component\nconst BToast = /*#__PURE__*/extend({\n  name: NAME_TOAST,\n  mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin, scopedStyleMixin],\n  inheritAttrs: false,\n  props,\n  data() {\n    return {\n      isMounted: false,\n      doRender: false,\n      localShow: false,\n      isTransitioning: false,\n      isHiding: false,\n      order: 0,\n      dismissStarted: 0,\n      resumeDismiss: 0\n    };\n  },\n  computed: {\n    toastClasses() {\n      const {\n        appendToast,\n        variant\n      } = this;\n      return {\n        'b-toast-solid': this.solid,\n        'b-toast-append': appendToast,\n        'b-toast-prepend': !appendToast,\n        [`b-toast-${variant}`]: variant\n      };\n    },\n    slotScope() {\n      const {\n        hide\n      } = this;\n      return {\n        hide\n      };\n    },\n    computedDuration() {\n      // Minimum supported duration is 1 second\n      return mathMax(toInteger(this.autoHideDelay, 0), MIN_DURATION);\n    },\n    computedToaster() {\n      return String(this.toaster);\n    },\n    transitionHandlers() {\n      return {\n        beforeEnter: this.onBeforeEnter,\n        afterEnter: this.onAfterEnter,\n        beforeLeave: this.onBeforeLeave,\n        afterLeave: this.onAfterLeave\n      };\n    },\n    computedAttrs() {\n      return {\n        ...this.bvAttrs,\n        id: this.safeId(),\n        tabindex: '0'\n      };\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME](newValue) {\n      this[newValue ? 'show' : 'hide']();\n    },\n    localShow(newValue) {\n      if (newValue !== this[MODEL_PROP_NAME]) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    },\n    /* istanbul ignore next */\n    toaster() {\n      // If toaster target changed, make sure toaster exists\n      this.$nextTick(this.ensureToaster);\n    },\n    /* istanbul ignore next */\n    static(newValue) {\n      // If static changes to true, and the toast is showing,\n      // ensure the toaster target exists\n      if (newValue && this.localShow) {\n        this.ensureToaster();\n      }\n    }\n  },\n  created() {\n    // Create private non-reactive props\n    this.$_dismissTimer = null;\n  },\n  mounted() {\n    this.isMounted = true;\n    this.$nextTick(() => {\n      if (this[MODEL_PROP_NAME]) {\n        requestAF(() => {\n          this.show();\n        });\n      }\n    });\n    // Listen for global $root show events\n    this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id => {\n      if (id === this.safeId()) {\n        this.show();\n      }\n    });\n    // Listen for global $root hide events\n    this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id => {\n      if (!id || id === this.safeId()) {\n        this.hide();\n      }\n    });\n    // Make sure we hide when toaster is destroyed\n    /* istanbul ignore next: difficult to test */\n    this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), toaster => {\n      /* istanbul ignore next */\n      if (toaster === this.computedToaster) {\n        this.hide();\n      }\n    });\n  },\n  beforeDestroy() {\n    this.clearDismissTimer();\n  },\n  methods: {\n    show() {\n      if (!this.localShow) {\n        this.ensureToaster();\n        const showEvent = this.buildEvent(EVENT_NAME_SHOW);\n        this.emitEvent(showEvent);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.order = Date.now() * (this.appendToast ? 1 : -1);\n        this.isHiding = false;\n        this.doRender = true;\n        this.$nextTick(() => {\n          // We show the toast after we have rendered the portal and b-toast wrapper\n          // so that screen readers will properly announce the toast\n          requestAF(() => {\n            this.localShow = true;\n          });\n        });\n      }\n    },\n    hide() {\n      if (this.localShow) {\n        const hideEvent = this.buildEvent(EVENT_NAME_HIDE);\n        this.emitEvent(hideEvent);\n        this.setHoverHandler(false);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.clearDismissTimer();\n        this.isHiding = true;\n        requestAF(() => {\n          this.localShow = false;\n        });\n      }\n    },\n    buildEvent(type) {\n      let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return new BvEvent(type, {\n        cancelable: false,\n        target: this.$el || null,\n        relatedTarget: null,\n        ...options,\n        vueTarget: this,\n        componentId: this.safeId()\n      });\n    },\n    emitEvent(bvEvent) {\n      const {\n        type\n      } = bvEvent;\n      this.emitOnRoot(getRootEventName(NAME_TOAST, type), bvEvent);\n      this.$emit(type, bvEvent);\n    },\n    ensureToaster() {\n      if (this.static) {\n        return;\n      }\n      const {\n        computedToaster\n      } = this;\n      if (!Wormhole.hasTarget(computedToaster)) {\n        const div = document.createElement('div');\n        document.body.appendChild(div);\n        const toaster = createNewChildComponent(this.bvEventRoot, BToaster, {\n          propsData: {\n            name: computedToaster\n          }\n        });\n        toaster.$mount(div);\n      }\n    },\n    startDismissTimer() {\n      this.clearDismissTimer();\n      if (!this.noAutoHide) {\n        this.$_dismissTimer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n        this.dismissStarted = Date.now();\n        this.resumeDismiss = 0;\n      }\n    },\n    clearDismissTimer() {\n      clearTimeout(this.$_dismissTimer);\n      this.$_dismissTimer = null;\n    },\n    setHoverHandler(on) {\n      const el = this.$refs['b-toast'];\n      eventOnOff(on, el, 'mouseenter', this.onPause, EVENT_OPTIONS_NO_CAPTURE);\n      eventOnOff(on, el, 'mouseleave', this.onUnPause, EVENT_OPTIONS_NO_CAPTURE);\n    },\n    onPause() {\n      // Determine time remaining, and then pause timer\n      if (this.noAutoHide || this.noHoverPause || !this.$_dismissTimer || this.resumeDismiss) {\n        return;\n      }\n      const passed = Date.now() - this.dismissStarted;\n      if (passed > 0) {\n        this.clearDismissTimer();\n        this.resumeDismiss = mathMax(this.computedDuration - passed, MIN_DURATION);\n      }\n    },\n    onUnPause() {\n      // Restart timer with max of time remaining or 1 second\n      if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n        this.resumeDismiss = this.dismissStarted = 0;\n        return;\n      }\n      this.startDismissTimer();\n    },\n    onLinkClick() {\n      // We delay the close to allow time for the\n      // browser to process the link click\n      this.$nextTick(() => {\n        requestAF(() => {\n          this.hide();\n        });\n      });\n    },\n    onBeforeEnter() {\n      this.isTransitioning = true;\n    },\n    onAfterEnter() {\n      this.isTransitioning = false;\n      const hiddenEvent = this.buildEvent(EVENT_NAME_SHOWN);\n      this.emitEvent(hiddenEvent);\n      this.startDismissTimer();\n      this.setHoverHandler(true);\n    },\n    onBeforeLeave() {\n      this.isTransitioning = true;\n    },\n    onAfterLeave() {\n      this.isTransitioning = false;\n      this.order = 0;\n      this.resumeDismiss = this.dismissStarted = 0;\n      const hiddenEvent = this.buildEvent(EVENT_NAME_HIDDEN);\n      this.emitEvent(hiddenEvent);\n      this.doRender = false;\n    },\n    // Render helper for generating the toast\n    makeToast(h) {\n      const {\n        slotScope\n      } = this;\n      const link = isLink(this);\n      const $headerContent = [];\n      const $title = this.normalizeSlot(SLOT_NAME_TOAST_TITLE, slotScope);\n      if ($title) {\n        $headerContent.push($title);\n      }\n      let $header = h();\n      if ($headerContent.length > 0) {\n        $header = h(this.headerTag, {\n          staticClass: 'toast-header',\n          class: this.headerClass\n        }, $headerContent);\n      }\n      const $body = h(link ? BLink : 'div', {\n        staticClass: 'toast-body',\n        class: this.bodyClass,\n        props: link ? pluckProps(linkProps, this) : {},\n        on: link ? {\n          click: this.onLinkClick\n        } : {}\n      }, this.normalizeSlot(SLOT_NAME_DEFAULT, slotScope));\n      return h('div', {\n        staticClass: 'toast',\n        class: this.toastClass,\n        attrs: this.computedAttrs,\n        key: `toast-${this[COMPONENT_UID_KEY]}`,\n        ref: 'toast'\n      }, [$header, $body]);\n    }\n  },\n  render(h) {\n    if (!this.doRender || !this.isMounted) {\n      return h();\n    }\n    const {\n      order,\n      static: isStatic,\n      isHiding,\n      isStatus\n    } = this;\n    const name = `b-toast-${this[COMPONENT_UID_KEY]}`;\n    const $toast = h('div', {\n      staticClass: 'b-toast',\n      class: this.toastClasses,\n      attrs: {\n        // If scoped styles are applied and the toast is not static,\n        // make sure the scoped style data attribute is applied\n        ...(isStatic ? {} : this.scopedStyleAttrs),\n        id: this.safeId('_toast_outer'),\n        role: isHiding ? null : isStatus ? 'status' : 'alert',\n        'aria-live': isHiding ? null : isStatus ? 'polite' : 'assertive',\n        'aria-atomic': isHiding ? null : 'true'\n      },\n      key: name,\n      ref: 'b-toast'\n    }, [h(BVTransition, {\n      props: {\n        noFade: this.noFade\n      },\n      on: this.transitionHandlers\n    }, [this.localShow ? this.makeToast(h) : h()])]);\n    return h(Portal, {\n      props: {\n        name,\n        to: this.computedToaster,\n        order,\n        slim: true,\n        disabled: isStatic\n      }\n    }, [$toast]);\n  }\n});\n\nexport { BToast, props };\n","import { NAME_TOAST_POP, NAME_TOASTER, NAME_TOAST } from '../../../constants/components';\nimport { HOOK_EVENT_NAME_DESTROYED, EVENT_NAME_HIDDEN, EVENT_NAME_DESTROYED, EVENT_NAME_SHOW, EVENT_NAME_HIDE } from '../../../constants/events';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { concat } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { getRootEventName, getRootActionEventName } from '../../../utils/events';\nimport { isUndefined } from '../../../utils/inspect';\nimport { keys, omit, hasOwnProperty, defineProperty, assign, defineProperties, readonlyDescriptor } from '../../../utils/object';\nimport { pluginFactory } from '../../../utils/plugins';\nimport { warn, warnNotClient } from '../../../utils/warn';\nimport { createNewChildComponent } from '../../../utils/create-new-child-component';\nimport { getEventRoot } from '../../../utils/get-event-root';\nimport { props, BToast } from '../toast';\n\n/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\n\n// --- Constants ---\n\nconst PROP_NAME = '$bvToast';\nconst PROP_NAME_PRIV = '_bv__toast';\n\n// Base toast props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\nconst BASE_PROPS = ['id', ...keys(omit(props, ['static', 'visible']))];\n\n// Map prop names to toast slot names\nconst propsToSlots = {\n  toastContent: 'default',\n  title: 'toast-title'\n};\n\n// --- Helper methods ---\n\n// Method to filter only recognized props that are not undefined\nconst filterOptions = options => {\n  return BASE_PROPS.reduce((memo, key) => {\n    if (!isUndefined(options[key])) {\n      memo[key] = options[key];\n    }\n    return memo;\n  }, {});\n};\n\n// Method to install `$bvToast` VM injection\nconst plugin = Vue => {\n  // Create a private sub-component constructor that\n  // extends BToast and self-destructs after hidden\n  // @vue/component\n  const BVToastPop = Vue.extend({\n    name: NAME_TOAST_POP,\n    extends: BToast,\n    mixins: [useParentMixin],\n    destroyed() {\n      // Make sure we not in document any more\n      const {\n        $el\n      } = this;\n      if ($el && $el.parentNode) {\n        $el.parentNode.removeChild($el);\n      }\n    },\n    mounted() {\n      // Self destruct handler\n      const handleDestroy = () => {\n        // Ensure the toast has been force hidden\n        this.localShow = false;\n        this.doRender = false;\n        this.$nextTick(() => {\n          this.$nextTick(() => {\n            // In a `requestAF()` to release control back to application\n            // and to allow the portal-target time to remove the content\n            requestAF(() => {\n              this.$destroy();\n            });\n          });\n        });\n      };\n      // Self destruct if parent destroyed\n      this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy);\n      // Self destruct after hidden\n      this.$once(EVENT_NAME_HIDDEN, handleDestroy);\n      // Self destruct when toaster is destroyed\n      this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), toaster => {\n        /* istanbul ignore next: hard to test */\n        if (toaster === this.toaster) {\n          handleDestroy();\n        }\n      });\n    }\n  });\n\n  // Private method to generate the on-demand toast\n  const makeToast = (props, parent) => {\n    if (warnNotClient(PROP_NAME)) {\n      /* istanbul ignore next */\n      return;\n    }\n    // Create an instance of `BVToastPop` component\n    const toast = createNewChildComponent(parent, BVToastPop, {\n      // We set parent as the local VM so these toasts can emit events on the\n      // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n      propsData: {\n        ...filterOptions(getComponentConfig(NAME_TOAST)),\n        // Add in (filtered) user supplied props\n        ...omit(props, keys(propsToSlots)),\n        // Props that can't be overridden\n        static: false,\n        visible: true\n      }\n    });\n    // Convert certain props to slots\n    keys(propsToSlots).forEach(prop => {\n      const value = props[prop];\n      if (!isUndefined(value)) {\n        toast.$slots[propsToSlots[prop]] = concat(value);\n      }\n    });\n    // Create a mount point (a DIV) and mount it (which triggers the show)\n    const div = document.createElement('div');\n    document.body.appendChild(div);\n    toast.$mount(div);\n  };\n\n  // Declare BvToast instance property class\n  class BvToast {\n    constructor(vm) {\n      // Assign the new properties to this instance\n      assign(this, {\n        _vm: vm,\n        _root: getEventRoot(vm)\n      });\n      // Set these properties as read-only and non-enumerable\n      defineProperties(this, {\n        _vm: readonlyDescriptor(),\n        _root: readonlyDescriptor()\n      });\n    }\n\n    // --- Public Instance methods ---\n\n    // Opens a user defined toast and returns immediately\n    toast(content) {\n      let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!content || warnNotClient(PROP_NAME)) {\n        /* istanbul ignore next */\n        return;\n      }\n      makeToast({\n        ...filterOptions(options),\n        toastContent: content\n      }, this._vm);\n    }\n\n    // shows a `<b-toast>` component with the specified ID\n    show(id) {\n      if (id) {\n        this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id);\n      }\n    }\n\n    // Hide a toast with specified ID, or if not ID all toasts\n    hide() {\n      let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n      this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id);\n    }\n  }\n\n  // Add our instance mixin\n  Vue.mixin({\n    beforeCreate() {\n      // Because we need access to `$root` for `$emits`, and VM for parenting,\n      // we have to create a fresh instance of `BvToast` for each VM\n      this[PROP_NAME_PRIV] = new BvToast(this);\n    }\n  });\n\n  // Define our read-only `$bvToast` instance property\n  // Placed in an if just in case in HMR mode\n  if (!hasOwnProperty(Vue.prototype, PROP_NAME)) {\n    defineProperty(Vue.prototype, PROP_NAME, {\n      get() {\n        /* istanbul ignore next */\n        if (!this || !this[PROP_NAME_PRIV]) {\n          warn(`\"${PROP_NAME}\" must be accessed from a Vue instance \"this\" context.`, NAME_TOAST);\n        }\n        return this[PROP_NAME_PRIV];\n      }\n    });\n  }\n};\nconst BVToastPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    plugin\n  }\n});\n\nexport { BVToastPlugin };\n","import { BVToastPlugin } from './helpers/bv-toast';\nimport { BToast } from './toast';\nexport { BToast } from './toast';\nimport { BToaster } from './toaster';\nexport { BToaster } from './toaster';\nimport { pluginFactory } from '../../utils/plugins';\n\nconst ToastPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BToast,\n    BToaster\n  },\n  // $bvToast injection\n  plugins: {\n    BVToastPlugin\n  }\n});\n\nexport { ToastPlugin };\n","import isFunction from 'lodash/isFunction';\nimport { ToastPlugin } from '../../../vendor/bootstrap-vue/src/components/toast/index';\nimport CloseButton from '../../shared_components/close_button/close_button';\n\n/* eslint-disable import/no-default-export */\nconst DEFAULT_OPTIONS = {\n  autoHideDelay: 5000,\n  toastClass: 'gl-toast',\n  isStatus: true,\n  toaster: 'b-toaster-bottom-left'\n};\nlet toastsCount = 0;\nfunction renderTitle(h, toast, options) {\n  const nodes = [h(CloseButton, {\n    class: ['gl-toast-close-button'],\n    on: {\n      click: toast.hide\n    }\n  })];\n  if (options.action) {\n    nodes.splice(0, 0, h('a', {\n      role: 'button',\n      class: ['gl-toast-action'],\n      on: {\n        click: e => options.action.onClick(e, toast)\n      }\n    }, options.action.text));\n  }\n  return nodes;\n}\nfunction showToast(message) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n  const id = `gl-toast-${toastsCount}`;\n  toastsCount += 1;\n  const hide = () => {\n    this.$bvToast.hide(id);\n  };\n  const toast = {\n    id,\n    hide\n  };\n  if (isFunction(options.onComplete)) {\n    const toastHiddenCallback = e => {\n      if (e.componentId === id) {\n        this.$root.$off('bv::toast:hidden', toastHiddenCallback);\n        options.onComplete(e);\n      }\n    };\n    this.$root.$on('bv::toast:hidden', toastHiddenCallback);\n  }\n  const updatedAutoHideDelay = !Number.isNaN(options === null || options === void 0 ? void 0 : options.autoHideDelay) ? {\n    autoHideDelay: options.autoHideDelay\n  } : null;\n  this.$bvToast.toast(message, {\n    ...DEFAULT_OPTIONS,\n    ...updatedAutoHideDelay,\n    id,\n    title: renderTitle(this.$createElement, toast, options)\n  });\n  return toast;\n}\n\n/**\n * Note: This is not a typical Vue component and needs to be registered before instantiating a Vue app.\n * Once registered, the toast will be globally available throughout your app.\n *\n * See https://gitlab-org.gitlab.io/gitlab-ui/ for detailed documentation.\n */\nvar toast = {\n  install(Vue) {\n    Vue.use(ToastPlugin);\n    Vue.mixin({\n      beforeCreate() {\n        if (this.$toast) {\n          return;\n        }\n        this.$toast = {\n          show: showToast.bind(this)\n        };\n      }\n    });\n  }\n};\n\nexport default toast;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","(function() {\n  var Query, pathScorer, pluckCandidates, scorer, sortCandidates;\n\n  scorer = require('./scorer');\n\n  pathScorer = require('./pathScorer');\n\n  Query = require('./query');\n\n  pluckCandidates = function(a) {\n    return a.candidate;\n  };\n\n  sortCandidates = function(a, b) {\n    return b.score - a.score;\n  };\n\n  module.exports = function(candidates, query, options) {\n    var bKey, candidate, key, maxInners, maxResults, score, scoreProvider, scoredCandidates, spotLeft, string, usePathScoring, _i, _len;\n    scoredCandidates = [];\n    key = options.key, maxResults = options.maxResults, maxInners = options.maxInners, usePathScoring = options.usePathScoring;\n    spotLeft = (maxInners != null) && maxInners > 0 ? maxInners : candidates.length + 1;\n    bKey = key != null;\n    scoreProvider = usePathScoring ? pathScorer : scorer;\n    for (_i = 0, _len = candidates.length; _i < _len; _i++) {\n      candidate = candidates[_i];\n      string = bKey ? candidate[key] : candidate;\n      if (!string) {\n        continue;\n      }\n      score = scoreProvider.score(string, query, options);\n      if (score > 0) {\n        scoredCandidates.push({\n          candidate: candidate,\n          score: score\n        });\n        if (!--spotLeft) {\n          break;\n        }\n      }\n    }\n    scoredCandidates.sort(sortCandidates);\n    candidates = scoredCandidates.map(pluckCandidates);\n    if (maxResults != null) {\n      candidates = candidates.slice(0, maxResults);\n    }\n    return candidates;\n  };\n\n}).call(this);\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  },\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',{staticClass:\"gl-new-dropdown-item\",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":""}