{"version":3,"sources":["webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/button-group/button-group.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/components/base/button_group/button_group.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_term.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search.js","webpack:///./vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue","webpack:///./vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue?9d97","webpack:///vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue","webpack:///./vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue?0e75","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/input-group/input-group-text.js","webpack:////home/git/gitlab/node_modules/lodash/_arrayIncludesWith.js","webpack:///./filtered_search/services/recent_searches_service_error.js","webpack:///./filtered_search/services/recent_searches_service.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/input-group/input-group-addon.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/input-group/input-group-append.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/input-group/input-group-prepend.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/input-group/input-group.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/components/base/form/form_input_group/form_input_group_mixin.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/components/base/form/form_input_group/form_input_group.js","webpack:////home/git/gitlab/node_modules/lodash/_createSet.js","webpack:///./vue_shared/components/filtered_search_bar/filtered_search_utils.js","webpack:///./filtered_search/stores/recent_searches_store.js","webpack:////home/git/gitlab/node_modules/lodash/_baseUniq.js","webpack:////home/git/gitlab/node_modules/lodash/_createAssigner.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/components/base/sorting/sorting.js","webpack:///./filtered_search/constants.js","webpack:////home/git/gitlab/node_modules/lodash/uniqWith.js","webpack:///./filtered_search/recent_searches_storage_keys.js","webpack:////home/git/gitlab/node_modules/@gitlab/ui/dist/components/base/search_box_by_click/search_box_by_click.js","webpack:////home/git/gitlab/node_modules/lodash/_copyObject.js"],"names":["ariaRole","size","tag","vertical","BButtonGroup","name","functional","props","h","_ref","data","children","class","attrs","role","__vue_script__","components","__vue_component__","render","_h","this","$createElement","_self","_c","_g","_b","$attrs","$listeners","_t","staticRenderFns","undefined","GlFilteredSearchTokenSegment","GlToken","inject","inheritAttrs","availableTokens","type","Array","required","active","Boolean","default","value","Object","placeholder","String","searchInputAttributes","isLastToken","currentValue","cursorPosition","validator","includes","searchTextOptionLabel","title","viewOnly","computed","termsAsTokens","tokens","filter","token","push","map","internalValue","$emit","mousedown","stopMousedownOnCloseButton","close","destroyByClose","methods","intent","event","target","closest","_vm","staticClass","ref","suggestedTokens","on","$event","onComplete","onBackspace","scopedSlots","_u","key","fn","label","eventListeners","_v","_s","model","callback","$$v","expression","portalUuid","initialState","GlSearchBoxByClick","GlIcon","PortalTarget","directives","GlTooltip","portalName","alignSuggestions","suggestionsListClass","__v_raw","isOk","isArray","every","__v_skip","console","warn","clearButtonTitle","historyItems","showFriendlyText","searchButtonAttributes","showSearchButton","activeTokenIdx","suggestionsStyle","intendedCursorPosition","length","lastTokenIdx","hasValue","disabled","unique","find","t","watch","isLastTokenEmpty","deep","immediate","newValue","oldValue","applyNewValue","idx","_this$getTokenEntry","getTokenEntry","offsetRef","getBoundingClientRect","left","offsetMenu","$el","transform","Math","floor","tokenIdx","indexOf","isLastTokenActive","activeToken","splice","arguments","max","$set","newStrings","newTokens","submit","slotScope","_l","getTokenComponent","id","refInFor","getTokenClassList","currentAvailableTokens","termPlaceholder","appliedTokens","activate","deactivate","destroyToken","replaceToken","completeToken","createTokens","activatePreviousToken","activateNextToken","style","proxy","GlFilteredSearch","GlSorting","GlFormCheckbox","GlTooltipDirective","namespace","recentSearchesStorageKey","sortOptions","initialFilterValue","initialSortBy","test","showCheckbox","checkboxChecked","searchInputPlaceholder","__","syncFilterAndSort","initialRender","recentSearchesPromise","recentSearches","filterValue","getInitialSort","tokenSymbols","reduce","symbol","tokenTitles","transformedSortOptions","text","selectedSortDirection","sortDirectionAscending","SORT_DIRECTION","ascending","descending","selectedSortOption","_this","sortOption","sortById","filteredRecentSearches","knownItems","item","sanitizedItem","uniqueTokens","itemString","JSON","stringify","newInitialSortBy","updateSelectedSortValues","handler","setupRecentSearch","_this2","recentSearchesService","RecentSearchesService","RecentSearchesStorageKeys","recentSearchesStore","RecentSearchesStore","isLocalStorageAvailable","isAvailable","allowedKeys","fetch","catch","error","createAlert","message","then","searches","resultantSearches","setRecentSearches","state","concat","filterEmptySearchTerm","addRecentSearch","save","blurSearchInput","searchInputEl","$refs","filteredSearchInput","querySelector","blur","removeQuotesEnclosure","filters","valueString","stripQuotes","operator","handleSortByChange","sortDirection","handleSortDirectionChange","isAscending","handleHistoryItemSelected","handleClearHistory","_this3","$nextTick","filterTokens","historyTokenOptionTitle","historyToken","_this$tokens$find","tokenOption","options","option","onClear","assign","_this$sortOptions$","onInput","component","_e","handleFilterSubmit","historyItem","index","BInputGroupText","module","exports","array","comparator","RecentSearchesServiceError","Error","constructor","super","localStorageKey","Promise","reject","input","window","localStorage","getItem","parse","err","resolve","setItem","AccessorUtilities","canUseLocalStorage","append","isText","BInputGroupAddon","BInputGroupAppend","BInputGroupPrepend","appendHtml","prepend","prependHtml","BInputGroup","slots","$scopedSlots","$slots","$prepend","hasPrependSlot","domProps","html","$append","hasAppendSlot","InputGroupMixin","Number","localValue","stringifyValue","newVal","activeOption","predefinedOptions","opt","BFormInput","GlDropdown","GlDropdownItem","mixins","selectOnClick","keys","inputClass","select","updateValue","handleClick","Set","noop","setToArray","createSet","values","knownTokens","uniques","FILTERED_SEARCH_TERM","tokenString","createToken","prepareTokens","memo","processFilters","acc","_token$value","_token$value2","filteredSearchQueryParam","join","trim","filterToQueryObject","filteredSearchTermKey","customOperators","shouldExcludeEmpty","operators","prefix","result","op","applyOnlyToKey","_value","_isEmpty","filteredSearchTermValue","term","urlQueryToFilter","query","filterNamesAllowList","_isString","queryToObject","gatherArrays","filterName","startsWith","endsWith","slice","extractNameAndOperator","previousValues","newAdditions","getRecentlyUsedSuggestions","recentSuggestionsStorageKey","valueIdentifier","recentlyUsedSuggestions","suggestion","some","appliedToken","setTokenValueToRecentlyUsed","tokenValue","_uniqWith","_isEqual","MAX_RECENT_TOKENS_SIZE","newSearch","trimmedSearches","search","MAX_HISTORY_SIZE","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","iteratee","isCommon","seen","set","outer","seenIndex","baseRest","isIterateeCall","assigner","object","sources","customizer","guard","source","GlButton","GlButtonGroup","GlCollapsibleListbox","sortBy","sortDirectionToolTip","dropdownClass","dropdownToggleClass","sortDirectionToggleClass","block","newDirection","onSortByChanged","rawName","sortDirectionText","localSortDirection","toggleSortDirection","USER_TOKEN_TYPES","TOKEN_TYPE_AUTHOR","TOKEN_TYPE_ASSIGNEE","TOKEN_TYPE_APPROVED_BY","TOKEN_TYPE_MERGE_USER","TOKEN_TYPE_REVIEWER","DROPDOWN_TYPE","hint","FILTER_TYPE","none","any","FILTERED_SEARCH","MERGE_REQUESTS","ISSUES","baseUniq","RECENT_SEARCHES_STORAGE_KEY_GROUPS","RECENT_SEARCHES_STORAGE_KEY_PROJECTS","issues","merge_requests","group_members","group_invited_members","project_members","project_group_links","GlClearIconButton","GlFormInput","GlDisclosureDropdown","GlDisclosureDropdownItem","GlFormInputGroup","clearable","recentSearchesHeader","closeButtonTitle","clearRecentSearchesText","noRecentSearchesText","tooltipContainer","HTMLElement","isFocused","attributes","setTimeout","document","activeElement","focus","emitClearHistory","selectHistoryItem","nativeOn","_k","keyCode","inputAttributes","clearInput","assignValue","baseAssignValue","isNew"],"mappings":"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","file":"commons-pages.admin.abuse_reports-pages.admin.abuse_reports.show-pages.admin.runners.index-pages.das-0f444519.a8407116.chunk.js","sourcesContent":["import { extend, mergeData } from '../../vue';\nimport { NAME_BUTTON_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { sortKeys, pick } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1 } from '../button/button';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n ...pick(props$1, ['size']),\n ariaRole: makeProp(PROP_TYPE_STRING, 'group'),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n}), NAME_BUTTON_GROUP);\n\n// --- Main component ---\n\n// @vue/component\nconst BButtonGroup = /*#__PURE__*/extend({\n name: NAME_BUTTON_GROUP,\n functional: true,\n props,\n render(h, _ref) {\n let {\n props,\n data,\n children\n } = _ref;\n return h(props.tag, mergeData(data, {\n class: {\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical,\n [`btn-group-${props.size}`]: props.size\n },\n attrs: {\n role: props.ariaRole\n }\n }), children);\n }\n});\n\nexport { BButtonGroup, props };\n","import { BButtonGroup } from '../../../vendor/bootstrap-vue/src/components/button-group/button-group';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlButtonGroup',\n components: {\n BButtonGroup\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-button-group',_vm._g(_vm._b({},'b-button-group',_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 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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"vue-filtered-search-bar-container gl-flex gl-min-w-0 gl-flex-col sm:gl-flex-row sm:gl-gap-3\"},[(_vm.showCheckbox)?_c('gl-form-checkbox',{staticClass:\"gl-self-center\",attrs:{\"checked\":_vm.checkboxChecked},on:{\"change\":function($event){return _vm.$emit('checked-input', $event)}}},[_c('span',{staticClass:\"gl-sr-only\"},[_vm._v(_vm._s(_vm.__('Select all')))])]):_vm._e(),_vm._v(\" \"),_c('gl-filtered-search',{ref:\"filteredSearchInput\",staticClass:\"flex-grow-1\",attrs:{\"placeholder\":_vm.searchInputPlaceholder,\"available-tokens\":_vm.tokens,\"history-items\":_vm.filteredRecentSearches,\"suggestions-list-class\":_vm.suggestionsListClass,\"search-button-attributes\":_vm.searchButtonAttributes,\"search-input-attributes\":_vm.searchInputAttributes,\"recent-searches-header\":_vm.__('Recent searches'),\"clear-button-title\":_vm.__('Clear'),\"close-button-title\":_vm.__('Close'),\"clear-recent-searches-text\":_vm.__('Clear recent searches'),\"no-recent-searches-text\":_vm.__(`You don't have any recent searches`),\"search-text-option-label\":_vm.searchTextOptionLabel,\"show-friendly-text\":_vm.showFriendlyText,\"show-search-button\":_vm.showSearchButton,\"terms-as-tokens\":_vm.termsAsTokens},on:{\"history-item-selected\":_vm.handleHistoryItemSelected,\"clear\":_vm.onClear,\"clear-history\":_vm.handleClearHistory,\"submit\":_vm.handleFilterSubmit,\"input\":_vm.onInput},scopedSlots:_vm._u([{key:\"history-item\",fn:function({ historyItem }){return [_vm._l((historyItem),function(token,index){return [(typeof token === 'string')?_c('span',{key:index,staticClass:\"gl-px-1\"},[_vm._v(\"\\\"\"+_vm._s(token)+\"\\\"\")]):_c('span',{key:`${index}-${token.type}-${token.value.data}`,staticClass:\"gl-px-1\"},[(_vm.tokenTitles[token.type])?_c('span',[_vm._v(_vm._s(_vm.tokenTitles[token.type])+\" :\"+_vm._s(token.value.operator))]):_vm._e(),_vm._v(\" \"),_c('strong',[_vm._v(_vm._s(_vm.tokenSymbols[token.type])+_vm._s(_vm.historyTokenOptionTitle(token)))])])]})]}}]),model:{value:(_vm.filterValue),callback:function ($$v) {_vm.filterValue=$$v},expression:\"filterValue\"}}),_vm._v(\" \"),(_vm.selectedSortOption)?_c('gl-sorting',{staticClass:\"sort-dropdown-container gl-w-full sm:!gl-m-0 sm:gl-w-auto\",attrs:{\"sort-options\":_vm.transformedSortOptions,\"sort-by\":_vm.sortById,\"is-ascending\":_vm.sortDirectionAscending,\"dropdown-class\":\"gl-grow\",\"dropdown-toggle-class\":\"gl-grow\",\"sort-direction-toggle-class\":\"!gl-shrink !gl-grow-0\"},on:{\"sortByChange\":_vm.handleSortByChange,\"sortDirectionChange\":_vm.handleSortDirectionChange}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--11-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--11-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filtered_search_bar_root.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--11-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--11-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filtered_search_bar_root.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./filtered_search_bar_root.vue?vue&type=template&id=3ec75946\"\nimport script from \"./filtered_search_bar_root.vue?vue&type=script&lang=js\"\nexport * from \"./filtered_search_bar_root.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 { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_TEXT);\n\n// --- Main component ---\n\n// @vue/component\nconst BInputGroupText = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP_TEXT,\n functional: true,\n props,\n render(h, _ref) {\n let {\n props,\n data,\n children\n } = _ref;\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group-text'\n }), children);\n }\n});\n\nexport { BInputGroupText, props };\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","import { __ } from '~/locale';\n\nclass RecentSearchesServiceError extends Error {\n constructor(message) {\n super(message || __('Recent Searches Service is unavailable'));\n this.name = 'RecentSearchesServiceError';\n }\n}\n\nexport default RecentSearchesServiceError;\n","import AccessorUtilities from '~/lib/utils/accessor';\nimport RecentSearchesServiceError from './recent_searches_service_error';\n\nclass RecentSearchesService {\n constructor(localStorageKey = 'issuable-recent-searches') {\n this.localStorageKey = localStorageKey;\n }\n\n fetch() {\n if (!RecentSearchesService.isAvailable()) {\n const error = new RecentSearchesServiceError();\n return Promise.reject(error);\n }\n\n const input = window.localStorage.getItem(this.localStorageKey);\n\n let searches = [];\n if (input && input.length > 0) {\n try {\n searches = JSON.parse(input);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n return Promise.resolve(searches);\n }\n\n save(searches = []) {\n if (!RecentSearchesService.isAvailable()) return;\n\n window.localStorage.setItem(this.localStorageKey, JSON.stringify(searches));\n }\n\n static isAvailable() {\n return AccessorUtilities.canUseLocalStorage();\n }\n}\n\nexport default RecentSearchesService;\n","import { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_ADDON } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { BInputGroupText } from './input-group-text';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n isText: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_ADDON);\n\n// --- Main component ---\n\n// @vue/component\nconst BInputGroupAddon = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP_ADDON,\n functional: true,\n props,\n render(h, _ref) {\n let {\n props,\n data,\n children\n } = _ref;\n const {\n append\n } = props;\n return h(props.tag, mergeData(data, {\n class: {\n 'input-group-append': append,\n 'input-group-prepend': !append\n },\n attrs: {\n id: props.id\n }\n }), props.isText ? [h(BInputGroupText, children)] : children);\n }\n});\n\nexport { BInputGroupAddon, props };\n","import { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_APPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { props as props$1, BInputGroupAddon } from './input-group-addon';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(omit(props$1, ['append']), NAME_INPUT_GROUP_APPEND);\n\n// --- Main component ---\n\n// @vue/component\nconst BInputGroupAppend = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP_APPEND,\n functional: true,\n props,\n render(h, _ref) {\n let {\n props,\n data,\n children\n } = _ref;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: {\n ...props,\n append: true\n }\n }), children);\n }\n});\n\nexport { BInputGroupAppend, props };\n","import { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_PREPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { props as props$1, BInputGroupAddon } from './input-group-addon';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(omit(props$1, ['append']), NAME_INPUT_GROUP_PREPEND);\n\n// --- Main component ---\n\n// @vue/component\nconst BInputGroupPrepend = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP_PREPEND,\n functional: true,\n props,\n render(h, _ref) {\n let {\n props,\n data,\n children\n } = _ref;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: {\n ...props,\n append: false\n }\n }), children);\n }\n});\n\nexport { BInputGroupPrepend, props };\n","import { extend, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_PREPEND, SLOT_NAME_APPEND, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupText } from './input-group-text';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_STRING),\n appendHtml: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n prepend: makeProp(PROP_TYPE_STRING),\n prependHtml: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP);\n\n// --- Main component ---\n\n// @vue/component\nconst BInputGroup = /*#__PURE__*/extend({\n name: NAME_INPUT_GROUP,\n functional: true,\n props,\n render(h, _ref) {\n let {\n props,\n data,\n slots,\n scopedSlots\n } = _ref;\n const {\n prepend,\n prependHtml,\n append,\n appendHtml,\n size\n } = props;\n const $scopedSlots = scopedSlots || {};\n const $slots = slots();\n const slotScope = {};\n let $prepend = h();\n const hasPrependSlot = hasNormalizedSlot(SLOT_NAME_PREPEND, $scopedSlots, $slots);\n if (hasPrependSlot || prepend || prependHtml) {\n $prepend = h(BInputGroupPrepend, [hasPrependSlot ? normalizeSlot(SLOT_NAME_PREPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(prependHtml, prepend)\n })]);\n }\n let $append = h();\n const hasAppendSlot = hasNormalizedSlot(SLOT_NAME_APPEND, $scopedSlots, $slots);\n if (hasAppendSlot || append || appendHtml) {\n $append = h(BInputGroupAppend, [hasAppendSlot ? normalizeSlot(SLOT_NAME_APPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(appendHtml, append)\n })]);\n }\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group',\n class: {\n [`input-group-${size}`]: size\n },\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), [$prepend, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots), $append]);\n }\n});\n\nexport { BInputGroup, props };\n","const InputGroupMixin = {\n props: {\n value: {\n type: [String, Number],\n default: ''\n }\n },\n data() {\n return {\n localValue: this.stringifyValue(this.value)\n };\n },\n watch: {\n value(newVal) {\n if (newVal !== this.localValue) {\n this.localValue = this.stringifyValue(newVal);\n }\n },\n localValue(newVal) {\n if (newVal !== this.value) {\n this.$emit('input', newVal);\n }\n }\n },\n mounted() {\n const value = this.stringifyValue(this.value);\n if (this.activeOption) {\n const activeOption = this.predefinedOptions.find(opt => opt.name === this.activeOption);\n this.localValue = activeOption.value;\n } else if (value !== this.localValue) {\n this.localValue = value;\n }\n },\n methods: {\n stringifyValue(value) {\n return value === undefined || value === null ? '' : String(value);\n }\n }\n};\n\nexport { InputGroupMixin };\n","import { BInputGroup } from '../../../../vendor/bootstrap-vue/src/components/input-group/input-group';\nimport { BInputGroupPrepend } from '../../../../vendor/bootstrap-vue/src/components/input-group/input-group-prepend';\nimport { BInputGroupAppend } from '../../../../vendor/bootstrap-vue/src/components/input-group/input-group-append';\nimport { BFormInput } from '../../../../vendor/bootstrap-vue/src/components/form-input/form-input';\nimport GlDropdown from '../../dropdown/dropdown';\nimport GlDropdownItem from '../../dropdown/dropdown_item';\nimport { InputGroupMixin } from './form_input_group_mixin';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlFormInputGroup',\n components: {\n BInputGroup,\n BInputGroupPrepend,\n BInputGroupAppend,\n BFormInput,\n GlDropdown,\n GlDropdownItem\n },\n mixins: [InputGroupMixin],\n props: {\n /**\n * Automatically selects the content of the input field on click.\n */\n selectOnClick: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Array of options. Each option should have `name` and `value` information: {name: \"Foo\", value: \"Bar\"})\n */\n predefinedOptions: {\n type: Array,\n required: false,\n default: () => [{\n value: '',\n name: ''\n }],\n validator: options => options.every(opt => Object.keys(opt).includes('name', 'value'))\n },\n label: {\n type: String,\n required: false,\n default: undefined\n },\n inputClass: {\n type: [String, Array, Object],\n required: false,\n default: ''\n }\n },\n data() {\n return {\n activeOption: this.predefinedOptions && this.predefinedOptions[0].name\n };\n },\n methods: {\n handleClick() {\n if (this.selectOnClick) {\n this.$refs.input.$el.select();\n }\n },\n updateValue(option) {\n const {\n name,\n value\n } = option;\n this.activeOption = name;\n this.localValue = 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('b-input-group',[(_vm.activeOption || _vm.$scopedSlots.prepend)?_c('b-input-group-prepend',[_vm._t(\"prepend\"),_vm._v(\" \"),(_vm.activeOption)?_c('gl-dropdown',{attrs:{\"text\":_vm.activeOption}},_vm._l((_vm.predefinedOptions),function(option){return _c('gl-dropdown-item',{key:option.value,attrs:{\"is-check-item\":\"\",\"is-checked\":_vm.activeOption === option.name},on:{\"click\":function($event){return _vm.updateValue(option)}}},[_vm._v(\"\\n \"+_vm._s(option.name)+\"\\n \")])}),1):_vm._e()],2):_vm._e(),_vm._v(\" \"),_vm._t(\"default\",function(){return [_c('b-form-input',_vm._g(_vm._b({ref:\"input\",class:['gl-form-input', _vm.inputClass],attrs:{\"aria-label\":_vm.label},on:{\"click\":_vm.handleClick},model:{value:(_vm.localValue),callback:function ($$v) {_vm.localValue=$$v;},expression:\"localValue\"}},'b-form-input',_vm.$attrs,false),_vm.$listeners))]}),_vm._v(\" \"),(_vm.$scopedSlots.append)?_c('b-input-group-append',[_vm._t(\"append\")],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 Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","import { isEmpty, uniqWith, isEqual, isString } from 'lodash';\nimport AccessorUtilities from '~/lib/utils/accessor';\nimport { queryToObject } from '~/lib/utils/url_utility';\n\nimport { MAX_RECENT_TOKENS_SIZE, FILTERED_SEARCH_TERM } from './constants';\n\n/**\n * This method removes duplicate tokens from tokens array.\n *\n * @param {Array} tokens Array of tokens as defined by `GlFilteredSearch`\n *\n * @returns {Array} Unique array of tokens\n */\nexport const uniqueTokens = (tokens) => {\n const knownTokens = [];\n return tokens.reduce((uniques, token) => {\n if (typeof token === 'object' && token.type !== FILTERED_SEARCH_TERM) {\n const tokenString = `${token.type}${token.value.operator}${token.value.data}`;\n if (!knownTokens.includes(tokenString)) {\n uniques.push(token);\n knownTokens.push(tokenString);\n }\n } else {\n uniques.push(token);\n }\n return uniques;\n }, []);\n};\n\n/**\n * Creates a token from a type and a filter. Example returned object\n * { type: 'myType', value: { data: 'myData', operator: '= '} }\n * @param {String} type the name of the filter\n * @param {Object}\n * @param {Object.value} filter value to be returned as token data\n * @param {Object.operator} filter operator to be retuned as token operator\n * @return {Object}\n * @return {Object.type} token type\n * @return {Object.value} token value\n */\nfunction createToken(type, filter) {\n return { type, value: { data: filter.value, operator: filter.operator } };\n}\n\n/**\n * This function takes a filter object and translates it into a token array\n * @param {Object} filters\n * @param {Object.myFilterName} a single filter value or an array of filters\n * @return {Array} tokens an array of tokens created from filter values\n */\nexport function prepareTokens(filters = {}) {\n return Object.keys(filters).reduce((memo, key) => {\n const value = filters[key];\n if (!value) {\n return memo;\n }\n if (Array.isArray(value)) {\n return [...memo, ...value.map((filterValue) => createToken(key, filterValue))];\n }\n\n return [...memo, createToken(key, value)];\n }, []);\n}\n\n/**\n * This function takes a token array and translates it into a filter object\n * @param filters\n * @returns A Filter Object\n */\nexport function processFilters(filters) {\n return filters.reduce((acc, token) => {\n let type;\n let value;\n let operator;\n if (typeof token === 'string') {\n type = FILTERED_SEARCH_TERM;\n value = token;\n } else {\n type = token?.type;\n operator = token?.value?.operator;\n value = token?.value?.data;\n }\n\n if (!acc[type]) {\n acc[type] = [];\n }\n\n acc[type].push({ value, operator });\n return acc;\n }, {});\n}\n\nfunction filteredSearchQueryParam(filter) {\n return filter\n .map(({ value }) => value)\n .join(' ')\n .trim();\n}\n\n/**\n * This function takes a filter object and maps it into a query object. Example filter:\n * { myFilterName: { value: 'foo', operator: '=' }, search: [{ value: 'my' }, { value: 'search' }] }\n * gets translated into:\n * { myFilterName: 'foo', 'not[myFilterName]': null, search: 'my search' }\n * By default it supports '=' and '!=' operators. This can be extended by providing the `customOperators` option\n * @param {Object} filters\n * @param {Object} filters.myFilterName a single filter value or an array of filters\n * @param {Object} options\n * @param {Object} [options.filteredSearchTermKey] if set, 'filtered-search-term' filters are assigned to this key, 'search' is suggested\n * @param {Object} [options.customOperators] Allows to extend the supported operators, e.g.\n *\n * filterToQueryObject({foo: [{ value: '100', operator: '>' }]}, {customOperators: {operator: '>',prefix: 'gt'}})\n * returns {gt[foo]: '100'}\n * It's also possible to restrict custom operators to a given key by setting `applyOnlyToKey` string attribute.\n *\n * @return {Object} query object with both filter name and not-name with values\n */\nexport function filterToQueryObject(filters = {}, options = {}) {\n const { filteredSearchTermKey, customOperators, shouldExcludeEmpty = false } = options;\n\n return Object.keys(filters).reduce((memo, key) => {\n const filter = filters[key];\n\n if (typeof filteredSearchTermKey === 'string' && key === FILTERED_SEARCH_TERM && filter) {\n const combinedFilteredSearchTerm = filteredSearchQueryParam(filter);\n if (combinedFilteredSearchTerm === '' && shouldExcludeEmpty) {\n return memo;\n }\n\n return { ...memo, [filteredSearchTermKey]: filteredSearchQueryParam(filter) };\n }\n\n const operators = [\n { operator: '=' },\n { operator: '!=', prefix: 'not' },\n ...(customOperators ?? []),\n ];\n\n const result = {};\n\n for (const op of operators) {\n const { operator, prefix, applyOnlyToKey } = op;\n\n if (!applyOnlyToKey || applyOnlyToKey === key) {\n let value;\n if (Array.isArray(filter)) {\n value = filter.filter((item) => item.operator === operator).map((item) => item.value);\n } else {\n value = filter?.operator === operator ? filter.value : null;\n }\n\n if (isEmpty(value)) {\n value = null;\n }\n\n if (shouldExcludeEmpty && (value?.[0] === '' || value === '' || value === null)) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (prefix) {\n result[`${prefix}[${key}]`] = value;\n } else {\n result[key] = value;\n }\n }\n }\n\n return { ...memo, ...result };\n }, {});\n}\n\n/**\n * Extracts filter name from url name and operator, e.g.\n * e.g. input: not[my_filter]` output: {filterName: `my_filter`, operator: '!='}`\n *\n * By default it supports filter with the format `my_filter=foo` and `not[my_filter]=bar`. This can be extended with the `customOperators` option.\n * @param {String} filterName from url\n * @param {Object.customOperators} It allows to extend the supported parameter, e.g.\n * input: 'gt[filter]', { customOperators: [{ operator: '>', prefix: 'gt' }]})\n * output: '{filterName: 'filter', operator: '>'}\n * @return {Object}\n * @return {Object.filterName} extracted filter name\n * @return {Object.operator} `=` or `!=`\n */\nfunction extractNameAndOperator(filterName, customOperators) {\n const ops = [\n {\n prefix: 'not',\n operator: '!=',\n },\n ...(customOperators ?? []),\n ];\n\n const operator = ops.find(\n ({ prefix }) => filterName.startsWith(`${prefix}[`) && filterName.endsWith(']'),\n );\n\n if (!operator) {\n return { filterName, operator: '=' };\n }\n const { prefix } = operator;\n return { filterName: filterName.slice(prefix.length + 1, -1), operator: operator.operator };\n}\n\n/**\n * Gathers search term as values\n * @param {String|Array} value\n * @returns {Array} List of search terms split by word\n */\nfunction filteredSearchTermValue(value) {\n const values = Array.isArray(value) ? value : [value];\n return [{ value: values.filter((term) => term).join(' ') }];\n}\n\n/**\n * This function takes a URL query string and maps it into a filter object. Example query string:\n * '?myFilterName=foo'\n * gets translated into:\n * { myFilterName: { value: 'foo', operator: '=' } }\n * By default it only support '=' and '!=' operators. This can be extended with the customOperator option.\n * @param {String|Object} query URL query string or object, e.g. from `window.location.search` or `this.$route.query`\n * @param {Object} options\n * @param {String} [options.filteredSearchTermKey] if set, a FILTERED_SEARCH_TERM filter is created to this parameter. `'search'` is suggested\n * @param {String[]} [options.filterNamesAllowList] if set, only this list of filters names is mapped\n * @param {Object} [options.customOperator] It allows to extend the supported parameter, e.g.\n * input: 'gt[myFilter]=100', { customOperators: [{ operator: '>', prefix: 'gt' }]})\n * output: '{ myFilter: {value: '100', operator: '>'}}\n * @return {Object} filter object with filter names and their values\n */\nexport function urlQueryToFilter(\n query = '',\n { filteredSearchTermKey, filterNamesAllowList, customOperators } = {},\n) {\n const filters = isString(query) ? queryToObject(query, { gatherArrays: true }) : query;\n return Object.keys(filters).reduce((memo, key) => {\n const value = filters[key];\n if (!value) {\n return memo;\n }\n if (key === filteredSearchTermKey) {\n return {\n ...memo,\n [FILTERED_SEARCH_TERM]: filteredSearchTermValue(value),\n };\n }\n\n const { filterName, operator } = extractNameAndOperator(key, customOperators);\n if (filterNamesAllowList && !filterNamesAllowList.includes(filterName)) {\n return memo;\n }\n let previousValues = [];\n if (Array.isArray(memo[filterName])) {\n previousValues = memo[filterName];\n }\n if (Array.isArray(value)) {\n const newAdditions = value.filter(Boolean).map((item) => ({ value: item, operator }));\n return { ...memo, [filterName]: [...previousValues, ...newAdditions] };\n }\n\n return { ...memo, [filterName]: { value, operator } };\n }, {});\n}\n\n/**\n * Returns array of token values from localStorage\n * based on provided recentSuggestionsStorageKey\n *\n * @param {String} recentSuggestionsStorageKey\n * @param {Array} appliedTokens\n * @param {Function} valueIdentifier\n * @returns\n */\nexport function getRecentlyUsedSuggestions(\n recentSuggestionsStorageKey,\n appliedTokens,\n valueIdentifier,\n) {\n let recentlyUsedSuggestions = [];\n if (AccessorUtilities.canUseLocalStorage()) {\n recentlyUsedSuggestions = JSON.parse(localStorage.getItem(recentSuggestionsStorageKey)) || [];\n }\n return recentlyUsedSuggestions.filter((suggestion) => {\n return !appliedTokens?.some(\n (appliedToken) => appliedToken.value.data === valueIdentifier(suggestion),\n );\n });\n}\n\n/**\n * Sets provided token value to recently used array\n * within localStorage for provided recentSuggestionsStorageKey\n *\n * @param {String} recentSuggestionsStorageKey\n * @param {Object} tokenValue\n */\nexport function setTokenValueToRecentlyUsed(recentSuggestionsStorageKey, tokenValue) {\n const recentlyUsedSuggestions = getRecentlyUsedSuggestions(recentSuggestionsStorageKey);\n\n recentlyUsedSuggestions.splice(0, 0, { ...tokenValue });\n\n if (AccessorUtilities.canUseLocalStorage()) {\n localStorage.setItem(\n recentSuggestionsStorageKey,\n JSON.stringify(uniqWith(recentlyUsedSuggestions, isEqual).slice(0, MAX_RECENT_TOKENS_SIZE)),\n );\n }\n}\n\n/**\n * Removes `FILTERED_SEARCH_TERM` tokens with empty data\n *\n * @param filterTokens array of filtered search tokens\n * @return {Array} array of filtered search tokens\n */\nexport const filterEmptySearchTerm = (filterTokens = []) =>\n filterTokens.filter((token) => token.type === FILTERED_SEARCH_TERM && token.value.data);\n","import { uniqWith, isEqual } from 'lodash';\n\nimport { MAX_HISTORY_SIZE } from '../constants';\n\nclass RecentSearchesStore {\n constructor(initialState = {}, allowedKeys) {\n this.state = {\n isLocalStorageAvailable: true,\n recentSearches: [],\n allowedKeys,\n ...initialState,\n };\n }\n\n addRecentSearch(newSearch) {\n this.setRecentSearches([newSearch].concat(this.state.recentSearches));\n\n return this.state.recentSearches;\n }\n\n setRecentSearches(searches = []) {\n const trimmedSearches = searches.map((search) =>\n typeof search === 'string' ? search.trim() : search,\n );\n\n // Do object equality check to remove duplicates.\n this.state.recentSearches = uniqWith(trimmedSearches, isEqual).slice(0, MAX_HISTORY_SIZE);\n return this.state.recentSearches;\n }\n}\n\nexport default RecentSearchesStore;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\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 {\n TOKEN_TYPE_APPROVED_BY,\n TOKEN_TYPE_MERGE_USER,\n TOKEN_TYPE_ASSIGNEE,\n TOKEN_TYPE_AUTHOR,\n TOKEN_TYPE_REVIEWER,\n} from '~/vue_shared/components/filtered_search_bar/constants';\n\nexport const USER_TOKEN_TYPES = [\n TOKEN_TYPE_AUTHOR,\n TOKEN_TYPE_ASSIGNEE,\n TOKEN_TYPE_APPROVED_BY,\n TOKEN_TYPE_MERGE_USER,\n TOKEN_TYPE_REVIEWER,\n 'attention',\n];\n\nexport const DROPDOWN_TYPE = {\n hint: 'hint',\n operator: 'operator',\n};\n\nexport const FILTER_TYPE = {\n none: 'none',\n any: 'any',\n};\n\nexport const MAX_HISTORY_SIZE = 5;\n\nexport const FILTERED_SEARCH = {\n MERGE_REQUESTS: 'merge_requests',\n ISSUES: 'issues',\n};\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","export const RECENT_SEARCHES_STORAGE_KEY_GROUPS = 'groups';\nexport const RECENT_SEARCHES_STORAGE_KEY_PROJECTS = 'projects';\n\nexport default {\n issues: 'issue-recent-searches',\n merge_requests: 'merge-request-recent-searches',\n group_members: 'group-members-recent-searches',\n group_invited_members: 'group-invited-members-recent-searches',\n project_members: 'project-members-recent-searches',\n project_group_links: 'project-group-links-recent-searches',\n [RECENT_SEARCHES_STORAGE_KEY_GROUPS]: 'groups-recent-searches',\n [RECENT_SEARCHES_STORAGE_KEY_PROJECTS]: 'projects-recent-searches',\n};\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","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n"],"sourceRoot":""}