{"version":3,"sources":["webpack:///./vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue","webpack:///./vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue?9e55","webpack:///vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue","webpack:///./vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue?c72e","webpack:///./filtered_search/services/recent_searches_service_error.js","webpack:///./filtered_search/services/recent_searches_service.js","webpack:///./vue_shared/components/filtered_search_bar/filtered_search_utils.js","webpack:///./filtered_search/stores/recent_searches_store.js","webpack:////build/source/ee/app/assets/javascripts/filtered_search/recent_searches_storage_keys.js","webpack:///./filtered_search/constants.js","webpack:///./filtered_search/recent_searches_storage_keys.js"],"names":["components","GlFilteredSearch","GlSorting","GlFormCheckbox","directives","GlTooltip","GlTooltipDirective","props","namespace","type","Number","String","required","recentSearchesStorageKey","default","tokens","Array","sortOptions","initialFilterValue","initialSortBy","validator","value","test","showCheckbox","Boolean","checkboxChecked","searchInputPlaceholder","__","suggestionsListClass","searchButtonAttributes","Object","searchInputAttributes","showFriendlyText","syncFilterAndSort","termsAsTokens","searchTextOptionLabel","showSearchButton","data","initialRender","recentSearchesPromise","recentSearches","filterValue","getInitialSort","computed","tokenSymbols","reduce","token","symbol","tokenTitles","title","transformedSortOptions","map","id","text","selectedSortDirection","sortDirectionAscending","SORT_DIRECTION","ascending","descending","selectedSortOption","_this","find","sortOption","sortById","filteredRecentSearches","knownItems","historyItems","item","sanitizedItem","uniqueTokens","itemString","JSON","stringify","includes","push","watch","newValue","newInitialSortBy","updateSelectedSortValues","handler","immediate","methods","setupRecentSearch","_this2","recentSearchesService","RecentSearchesService","RecentSearchesStorageKeys","recentSearchesStore","RecentSearchesStore","isLocalStorageAvailable","isAvailable","allowedKeys","fetch","catch","error","name","createAlert","message","then","searches","resultantSearches","setRecentSearches","state","concat","filterEmptySearchTerm","length","addRecentSearch","save","blurSearchInput","searchInputEl","$refs","filteredSearchInput","$el","querySelector","blur","removeQuotesEnclosure","filters","filter","valueString","stripQuotes","operator","handleSortByChange","$emit","sortDirection","handleSortDirectionChange","isAscending","handleHistoryItemSelected","handleClearHistory","_this3","$nextTick","filterTokens","historyTokenOptionTitle","historyToken","_this$tokens$find","tokenOption","options","option","onClear","assign","_this$sortOptions$","onInput","component","_vm","this","_c","_self","staticClass","attrs","on","$event","_v","_s","_e","ref","handleFilterSubmit","scopedSlots","_u","key","fn","historyItem","_l","index","model","callback","$$v","expression","RecentSearchesServiceError","Error","constructor","super","localStorageKey","Promise","reject","input","window","localStorage","getItem","parse","err","resolve","setItem","AccessorUtilities","canUseLocalStorage","knownTokens","uniques","FILTERED_SEARCH_TERM","tokenString","createToken","prepareTokens","keys","memo","isArray","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","appliedTokens","valueIdentifier","recentlyUsedSuggestions","suggestion","some","appliedToken","setTokenValueToRecentlyUsed","tokenValue","splice","_uniqWith","_isEqual","MAX_RECENT_TOKENS_SIZE","initialState","newSearch","trimmedSearches","search","MAX_HISTORY_SIZE","recentSearchesStorageKeysCE","epics","requirements","test_cases","jira_issues","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","RECENT_SEARCHES_STORAGE_KEY_GROUPS","RECENT_SEARCHES_STORAGE_KEY_PROJECTS","issues","merge_requests","group_members","group_invited_members","project_members","project_group_links"],"mappings":"uKAAA,I,gJCA8S,ECa/R,CACfA,WAAA,CACAC,qBACAC,cACAC,oBAEAC,WAAA,CACAC,UAAAC,KAEAC,MAAA,CACAC,UAAA,CACAC,KAAA,CAAAC,OAAAC,QACAC,UAAA,GAEAC,yBAAA,CACAJ,KAAAE,OACAC,UAAA,EACAE,QAAA,IAEAC,OAAA,CACAN,KAAAO,MACAJ,UAAA,GAEAK,YAAA,CACAR,KAAAO,MACAF,QAAA,qBACAF,UAAA,GAEAM,mBAAA,CACAT,KAAAO,MACAJ,UAAA,EACAE,QAAA,sBAEAK,cAAA,CACAV,KAAAE,OACAC,UAAA,EACAE,QAAA,GACAM,UAAA,SAAAC,GAAA,WAAAA,GAAA,mBAAAC,KAAAD,KAEAE,aAAA,CACAd,KAAAe,QACAZ,UAAA,EACAE,SAAA,GAEAW,gBAAA,CACAhB,KAAAe,QACAZ,UAAA,EACAE,SAAA,GAEAY,uBAAA,CACAjB,KAAAE,OACAC,UAAA,EACAE,QAAAa,aAAA,8BAEAC,qBAAA,CACAnB,KAAAE,OACAC,UAAA,EACAE,QAAA,IAEAe,uBAAA,CACApB,KAAAqB,OACAlB,UAAA,EACAE,QAAA,sBAEAiB,sBAAA,CACAtB,KAAAqB,OACAlB,UAAA,EACAE,QAAA,sBAEAkB,iBAAA,CACAvB,KAAAe,QACAZ,UAAA,EACAE,SAAA,GAEAmB,kBAAA,CACAxB,KAAAe,QACAZ,UAAA,EACAE,SAAA,GAEAoB,cAAA,CACAzB,KAAAe,QACAZ,UAAA,EACAE,SAAA,GAEAqB,sBAAA,CACA1B,KAAAE,OACAC,UAAA,EACAE,QAAAa,aAAA,yBAEAS,iBAAA,CACA3B,KAAAe,QACAZ,UAAA,EACAE,SAAA,IAGAuB,OACA,OACAC,eAAA,EACAC,sBAAA,KACAC,eAAA,GACAC,YAAA,KAAAvB,sBACA,KAAAwB,mBAGAC,SAAA,CACAC,eACA,YAAA7B,OAAA8B,QACA,SAAAD,EAAAE,GAAA,UACAF,EACA,CAAAE,EAAArC,MAAAqC,EAAAC,UAEA,KAGAC,cACA,YAAAjC,OAAA8B,QACA,SAAAD,EAAAE,GAAA,UACAF,EACA,CAAAE,EAAArC,MAAAqC,EAAAG,SAEA,KAGAC,yBACA,YAAAjC,YAAAkC,KAAA,UAAAC,GAAA/B,EAAA4B,MAAAI,IAAA,OAAAhC,QAAAgC,YAEAC,wBACA,YAAAC,uBAAAC,IAAAC,UAAAD,IAAAE,YAEAC,qBAAA,IAAAC,EAAA,KACA,YAAA3C,YAAA4C,MAAA,SAAAC,GAAA,OAAAA,EAAAV,KAAAQ,EAAAG,aAOAC,yBACA,QAAAnD,yBAAA,CACA,MAAAoD,EAAA,GACA,YAAAzB,eAAAK,QAAA,SAAAqB,EAAAC,GAEA,oBAAAA,EAAA,CACA,MAAAC,EAAAC,YAAAF,GACAG,EAAAC,KAAAC,UAAAJ,GAEAH,EAAAQ,SAAAH,KACAJ,EAAAQ,KAAAN,GAGAH,EAAAS,KAAAJ,IAGA,OAAAJ,IACA,OAKAS,MAAA,CACAzD,mBAAA0D,GACA,KAAA3C,oBACA,KAAAQ,YAAAmC,IAGAzD,cAAA0D,GACA,KAAA5C,mBAAA4C,GACA,KAAAC,4BAGAjE,yBAAA,CACAkE,QAAA,oBACAC,WAAA,IAGAC,QAAA,CAKAC,oBAAA,IAAAC,EAAA,KACA,KAAAC,sBAAA,IAAAC,IACA,QAAA7E,aAAA8E,IAAA,KAAAzE,6BAGA,KAAA0E,oBAAA,IAAAC,IAAA,CACAC,wBAAAJ,IAAAK,cACAC,YAAA,KAAA5E,OAAAoC,KAAA,SAAAL,GAAA,OAAAA,EAAArC,UAGA,KAAA8B,sBAAA,KAAA6C,sBACAQ,QACAC,OAAA,SAAAC,GACA,kCAAAA,EAAAC,KAOA,OALAC,sBAAA,CACAC,QAAAtE,aAAA,qDAIA,MAEAuE,MAAA,SAAAC,GACA,IAAAA,EAAA,OAIA,IAAAC,EAAAjB,EAAAI,oBAAAc,kBACAlB,EAAAI,oBAAAe,MAAA9D,eAAA+D,OAAAJ,IAGAK,YAAArB,EAAA1C,aAAAgE,SACAL,EAAAjB,EAAAI,oBAAAmB,gBAAAvB,EAAA1C,cAGA0C,EAAAC,sBAAAuB,KAAAP,GACAjB,EAAA3C,eAAA4D,MAUAQ,kBACA,MAAAC,EAAA,KAAAC,MAAAC,oBAAAC,IAAAC,cACA,2CAEAJ,GACAA,EAAAK,QAQAC,uBAAAC,EAAA,KACAA,EAAAjE,KAAA,SAAAkE,GACA,oBAAAA,EAAA,CACA,MAAAC,EAAAD,EAAAhG,MAAAgB,KACA,UACAgF,EACAhG,MAAA,CACAgB,KAAA,iBAAAiF,EAAAC,YAAAD,KACAE,SAAAH,EAAAhG,MAAAmG,WAIA,OAAAH,KAGAI,mBAAA1D,GACA,KAAAA,WACA,KAAA2D,MAAA,cAAA/D,mBAAAgE,cAAA,KAAArE,yBAEAsE,0BAAAC,GACA,KAAAtE,uBAAAsE,EACA,KAAAH,MAAA,cAAA/D,mBAAAgE,cAAA,KAAArE,yBAEAwE,0BAAAV,GACA,KAAAM,MAAA,gBAAAP,sBAAAC,KAEAW,qBACA,MAAA3B,EAAA,KAAAb,oBAAAc,kBAAA,IACA,KAAAjB,sBAAAuB,KAAAP,GACA,KAAA5D,eAAA,IAEA,+BAAAwF,EAAA,KACA,KAAApB,wBACA,KAAAqB,YACA,MAAAC,EAAA7D,YAAA,KAAA5B,aACA,KAAAA,YAAAyF,EAEA,KAAArH,0BACA,KAAA0B,sBACA2D,MAAA,WACA,GAAAgC,EAAAzB,OAAA,CACA,MAAAL,EAAA4B,EAAAzC,oBAAAmB,gBAAAwB,GACAF,EAAA5C,sBAAAuB,KAAAP,GACA4B,EAAAxF,eAAA4D,MAGAP,OAAA,eAIA,KAAA6B,MAAA,gBAAAP,sBAAAe,KAEAC,wBAAAC,GAAA,IAAAC,EACA,MAAAC,EACA,QADAD,EAAA,KAAAtH,OACA8C,MAAA,SAAAf,GAAA,OAAAA,EAAArC,OAAA2H,EAAA3H,eAAA,IAAA4H,GACA,QADAA,EADAA,EAEAE,eAAA,IAAAF,OAAA,EAFAA,EAEAxE,MAAA,SAAA2E,GAAA,OAAAA,EAAAnH,QAAA+G,EAAA/G,MAAAgB,QAEA,OAAAiG,WAAArF,MAIAqF,EAAArF,MAHAmF,EAAA/G,MAAAgB,MAKAoG,UAEA,KAAAf,MAAA,eADA,IAGA5C,2BACAhD,OAAA4G,OAAA,UAAAhG,mBAEAA,iBAAA,IAAAiG,EACA,UAAA7E,KAAA,KAAA7C,YAAA,CACA,GAAA6C,EAAA6D,cAAAlE,YAAA,KAAAtC,cACA,OACA4C,SAAAD,EAAAV,GACAG,wBAAA,GAIA,GAAAO,EAAA6D,cAAAjE,aAAA,KAAAvC,cACA,OACA4C,SAAAD,EAAAV,GACAG,wBAAA,GAKA,OACAQ,SAAA,QAAA4E,EAAA,KAAA1H,YAAA,cAAA0H,OAAA,EAAAA,EAAAvF,GACAG,wBAAA,IAGAqF,QAAA7H,GACA,KAAA2G,MAAA,eAAAP,sBAAA9C,YAAAtD,Q,YClVI8H,EAAY,YACd,GHRW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,oFAAoF,CAACF,EAAG,MAAM,CAACE,YAAY,2CAA2C,CAAEJ,EAAIvH,aAAcyH,EAAG,mBAAmB,CAACE,YAAY,4BAA4BC,MAAM,CAAC,QAAUL,EAAIrH,iBAAiB2H,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOP,EAAIpB,MAAM,gBAAiB2B,MAAW,CAACL,EAAG,OAAO,CAACE,YAAY,cAAc,CAACJ,EAAIQ,GAAGR,EAAIS,GAAGT,EAAInH,GAAG,oBAAoBmH,EAAIU,KAAKV,EAAIQ,GAAG,KAAKN,EAAG,qBAAqB,CAACS,IAAI,sBAAsBP,YAAY,cAAcC,MAAM,CAAC,YAAcL,EAAIpH,uBAAuB,mBAAmBoH,EAAI/H,OAAO,gBAAgB+H,EAAI9E,uBAAuB,yBAAyB8E,EAAIlH,qBAAqB,2BAA2BkH,EAAIjH,uBAAuB,0BAA0BiH,EAAI/G,sBAAsB,yBAAyB+G,EAAInH,GAAG,mBAAmB,qBAAqBmH,EAAInH,GAAG,SAAS,qBAAqBmH,EAAInH,GAAG,SAAS,6BAA6BmH,EAAInH,GAAG,yBAAyB,0BAA0BmH,EAAInH,GAAG,sCAAsC,2BAA2BmH,EAAI3G,sBAAsB,qBAAqB2G,EAAI9G,iBAAiB,qBAAqB8G,EAAI1G,iBAAiB,kBAAkB0G,EAAI5G,eAAekH,GAAG,CAAC,wBAAwBN,EAAIhB,0BAA0B,MAAQgB,EAAIL,QAAQ,gBAAgBK,EAAIf,mBAAmB,OAASe,EAAIY,mBAAmB,MAAQZ,EAAIF,SAASe,YAAYb,EAAIc,GAAG,CAAC,CAACC,IAAI,eAAeC,GAAG,UAAS,YAAEC,IAAe,MAAO,CAACjB,EAAIkB,GAAID,GAAa,SAASjH,EAAMmH,GAAO,MAAO,CAAmB,iBAAVnH,EAAoBkG,EAAG,OAAO,CAACa,IAAII,EAAMf,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAKR,EAAIS,GAAGzG,GAAO,OAAQkG,EAAG,OAAO,CAACa,IAAI,GAAGI,KAASnH,EAAMrC,QAAQqC,EAAMzB,MAAMgB,OAAO6G,YAAY,WAAW,CAAEJ,EAAI9F,YAAYF,EAAMrC,MAAOuI,EAAG,OAAO,CAACF,EAAIQ,GAAGR,EAAIS,GAAGT,EAAI9F,YAAYF,EAAMrC,OAAO,KAAKqI,EAAIS,GAAGzG,EAAMzB,MAAMmG,aAAasB,EAAIU,KAAKV,EAAIQ,GAAG,KAAKN,EAAG,SAAS,CAACF,EAAIQ,GAAGR,EAAIS,GAAGT,EAAIlG,aAAaE,EAAMrC,OAAOqI,EAAIS,GAAGT,EAAIX,wBAAwBrF,kBAAqBoH,MAAM,CAAC7I,MAAOyH,EAAIrG,YAAa0H,SAAS,SAAUC,GAAMtB,EAAIrG,YAAY2H,GAAKC,WAAW,kBAAkB,GAAGvB,EAAIQ,GAAG,KAAMR,EAAInF,mBAAoBqF,EAAG,aAAa,CAACE,YAAY,4DAA4DC,MAAM,CAAC,eAAeL,EAAI5F,uBAAuB,UAAU4F,EAAI/E,SAAS,eAAe+E,EAAIvF,uBAAuB,iBAAiB,UAAU,wBAAwB,UAAU,8BAA8B,yBAAyB6F,GAAG,CAAC,aAAeN,EAAIrB,mBAAmB,oBAAsBqB,EAAIlB,6BAA6BkB,EAAIU,MAAM,KAEvjF,IGSpB,EACA,KACA,KACA,MAIa,IAAAX,E,iFChBf,MAAMyB,UAAmCC,MACvCC,YAAYvE,GACVwE,MAAMxE,GAAWtE,aAAG,2CACpBoH,KAAKhD,KAAO,8BAIDuE,QCNf,MAAMjF,EACJmF,YAAYE,EAAkB,4BAC5B3B,KAAK2B,gBAAkBA,EAGzB9E,QACE,IAAKP,EAAsBK,cAAe,CACxC,MAAMI,EAAQ,IAAIwE,EAClB,OAAOK,QAAQC,OAAO9E,GAGxB,MAAM+E,EAAQC,OAAOC,aAAaC,QAAQjC,KAAK2B,iBAE/C,IAAIvE,EAAW,GACf,GAAI0E,GAASA,EAAMpE,OAAS,EAC1B,IACEN,EAAW5B,KAAK0G,MAAMJ,GACtB,MAAOK,GACP,OAAOP,QAAQC,OAAOM,GAI1B,OAAOP,QAAQQ,QAAQhF,GAGzBQ,KAAKR,EAAW,IACTd,EAAsBK,eAE3BoF,OAAOC,aAAaK,QAAQrC,KAAK2B,gBAAiBnG,KAAKC,UAAU2B,IAGnE,qBACE,OAAOkF,IAAkBC,sBAIdjG,O,kjBC1BR,MAAMhB,EAAe,SAACtD,GAC3B,MAAMwK,EAAc,GACpB,OAAOxK,EAAO8B,QAAO,SAAC2I,EAAS1I,GAC7B,GAAqB,iBAAVA,GAAsBA,EAAMrC,OAASgL,IAAsB,CACpE,MAAMC,EAAc,GAAG5I,EAAMrC,OAAOqC,EAAMzB,MAAMmG,WAAW1E,EAAMzB,MAAMgB,OAClEkJ,EAAY9G,SAASiH,KACxBF,EAAQ9G,KAAK5B,GACbyI,EAAY7G,KAAKgH,SAGnBF,EAAQ9G,KAAK5B,GAEf,OAAO0I,IACN,KAcL,SAASG,EAAYlL,EAAM4G,GACzB,MAAO,CAAE5G,OAAMY,MAAO,CAAEgB,KAAMgF,EAAOhG,MAAOmG,SAAUH,EAAOG,WASxD,SAASoE,EAAcxE,EAAU,IACtC,OAAOtF,OAAO+J,KAAKzE,GAASvE,QAAO,SAACiJ,EAAMjC,GACxC,MAAMxI,EAAQ+F,EAAQyC,GACtB,OAAKxI,EAGDL,MAAM+K,QAAQ1K,GACT,IAAIyK,KAASzK,EAAM8B,KAAI,SAACV,GAAW,OAAKkJ,EAAY9B,EAAKpH,OAG3D,IAAIqJ,EAAMH,EAAY9B,EAAKxI,IANzByK,IAOR,IAQE,SAASE,EAAe5E,GAC7B,OAAOA,EAAQvE,QAAO,SAACoJ,EAAKnJ,GAC1B,IAAIrC,EACAY,EACAmG,EAIG,IAAA0E,EAAAC,EAHc,iBAAVrJ,GACTrC,EAAOgL,IACPpK,EAAQyB,IAERrC,EAAOqC,aAAK,EAALA,EAAOrC,KACd+G,EAAW1E,SAAY,QAAPoJ,EAALpJ,EAAOzB,aAAK,IAAA6K,OAAA,EAAZA,EAAc1E,SACzBnG,EAAQyB,SAAY,QAAPqJ,EAALrJ,EAAOzB,aAAK,IAAA8K,OAAA,EAAZA,EAAc9J,MAQxB,OALK4J,EAAIxL,KACPwL,EAAIxL,GAAQ,IAGdwL,EAAIxL,GAAMiE,KAAK,CAAErD,QAAOmG,aACjByE,IACN,IAGL,SAASG,EAAyB/E,GAChC,OAAOA,EACJlE,KAAI,UAAC,MAAE9B,IAAO,OAAKA,KACnBgL,KAAK,KACLC,OAqBE,SAASC,EAAoBnF,EAAU,GAAImB,EAAU,IAC1D,MAAM,sBAAEiE,EAAqB,gBAAEC,EAAe,mBAAEC,GAAqB,GAAUnE,EAE/E,OAAOzG,OAAO+J,KAAKzE,GAASvE,QAAO,SAACiJ,EAAMjC,GACxC,MAAMxC,EAASD,EAAQyC,GAEvB,GAAqC,iBAA1B2C,GAAsC3C,IAAQ4B,KAAwBpE,EAAQ,CAEvF,MAAmC,KADA+E,EAAyB/E,IACnBqF,EAChCZ,EAGF,IAAKA,EAAM,CAACU,GAAwBJ,EAAyB/E,IAGtE,MAAMsF,EAAY,CAChB,CAAEnF,SAAU,KACZ,CAAEA,SAAU,KAAMoF,OAAQ,UACtBH,UAAmB,IAGnBI,EAAS,GAEf,IAAK,MAAMC,KAAMH,EAAW,CAC1B,MAAM,SAAEnF,EAAQ,OAAEoF,EAAM,eAAEG,GAAmBD,EAE7C,IAAKC,GAAkBA,IAAmBlD,EAAK,KAAAmD,EAC7C,IAAI3L,EAWJ,GATEA,EADEL,MAAM+K,QAAQ1E,GACRA,EAAOA,QAAO,SAAClD,GAAI,OAAKA,EAAKqD,WAAaA,KAAUrE,KAAI,SAACgB,GAAI,OAAKA,EAAK9C,UAEvEgG,aAAM,EAANA,EAAQG,YAAaA,EAAWH,EAAOhG,MAAQ,KAGrD4L,IAAQ5L,KACVA,EAAQ,MAGNqL,IAAsC,MAAV,QAALM,EAAA3L,SAAK,IAAA2L,OAAA,EAALA,EAAQ,KAAuB,KAAV3L,GAA0B,OAAVA,GAE9D,SAGEuL,EACFC,EAAO,GAAGD,KAAU/C,MAAUxI,EAE9BwL,EAAOhD,GAAOxI,GAKpB,MAAO,IAAKyK,KAASe,KACpB,IAyCL,SAASK,EAAwB7L,GAE/B,MAAO,CAAC,CAAEA,OADKL,MAAM+K,QAAQ1K,GAASA,EAAQ,CAACA,IACvBgG,QAAO,SAAC8F,GAAI,OAAKA,KAAMd,KAAK,OAkB/C,SAASe,EACdC,EAAQ,IACR,sBAAEb,EAAqB,qBAAEc,EAAoB,gBAAEb,GAAoB,IAEnE,MAAMrF,EAAUmG,IAASF,GAASG,YAAcH,EAAO,CAAEI,cAAc,IAAUJ,EACjF,OAAOvL,OAAO+J,KAAKzE,GAASvE,QAAO,SAACiJ,EAAMjC,GACxC,MAAMxI,EAAQ+F,EAAQyC,GACtB,IAAKxI,EACH,OAAOyK,EAET,GAAIjC,IAAQ2C,EACV,MAAO,IACFV,EACH,CAACL,KAAuByB,EAAwB7L,IAIpD,MAAM,WAAEqM,EAAU,SAAElG,GA9DxB,SAAgCkG,EAAYjB,GAC1C,MAQMjF,EARM,CACV,CACEoF,OAAQ,MACRpF,SAAU,SAERiF,UAAmB,IAGJ5I,MACnB,UAAC,OAAE+I,IAAQ,OAAKc,EAAWC,WAAcf,EAAH,MAAiBc,EAAWE,SAAS,QAG7E,IAAKpG,EACH,MAAO,CAAEkG,aAAYlG,SAAU,KAEjC,MAAM,OAAEoF,GAAWpF,EACnB,MAAO,CAAEkG,WAAYA,EAAWG,MAAMjB,EAAOnG,OAAS,GAAI,GAAIe,SAAUA,EAASA,UA6C9CsG,CAAuBjE,EAAK4C,GAC7D,GAAIa,IAAyBA,EAAqB7I,SAASiJ,GACzD,OAAO5B,EAET,IAAIiC,EAAiB,GAIrB,GAHI/M,MAAM+K,QAAQD,EAAK4B,MACrBK,EAAiBjC,EAAK4B,IAEpB1M,MAAM+K,QAAQ1K,GAAQ,CACxB,MAAM2M,EAAe3M,EAAMgG,OAAO7F,SAAS2B,KAAI,SAACgB,GAAI,MAAM,CAAE9C,MAAO8C,EAAMqD,eACzE,MAAO,IAAKsE,EAAM,CAAC4B,GAAa,IAAIK,KAAmBC,IAGzD,MAAO,IAAKlC,EAAM,CAAC4B,GAAa,CAAErM,QAAOmG,eACxC,IAYE,SAASyG,EACdC,EACAC,EACAC,GAEA,IAAIC,EAA0B,GAI9B,OAHIhD,IAAkBC,uBACpB+C,EAA0B9J,KAAK0G,MAAMF,aAAaC,QAAQkD,KAAiC,IAEtFG,EAAwBhH,QAAO,SAACiH,GACrC,QAAQH,WAAeI,MACrB,SAACC,GAAY,OAAKA,EAAanN,MAAMgB,OAAS+L,EAAgBE,UAY7D,SAASG,EAA4BP,EAA6BQ,GACvE,MAAML,EAA0BJ,EAA2BC,GAE3DG,EAAwBM,OAAO,EAAG,EAAG,IAAKD,IAEtCrD,IAAkBC,sBACpBP,aAAaK,QACX8C,EACA3J,KAAKC,UAAUoK,IAASP,EAAuBQ,KAAWhB,MAAM,EAAGiB,OAWlE,MAAMtI,EAAwB,SAAC0B,EAAe,IAAE,OACrDA,EAAab,QAAO,SAACvE,GAAK,OAAKA,EAAMrC,OAASgL,KAAwB3I,EAAMzB,MAAMgB,U,kHC7RrEmD,IA3Bf,MACEgF,YAAYuE,EAAe,GAAIpJ,GAC7BoD,KAAKzC,MAAQ,CACXb,yBAAyB,EACzBjD,eAAgB,GAChBmD,iBACGoJ,GAIPrI,gBAAgBsI,GAGd,OAFAjG,KAAK1C,kBAAkB,CAAC2I,GAAWzI,OAAOwC,KAAKzC,MAAM9D,iBAE9CuG,KAAKzC,MAAM9D,eAGpB6D,kBAAkBF,EAAW,IAC3B,MAAM8I,EAAkB9I,EAAShD,KAAI,SAAC+L,GAAM,MACxB,iBAAXA,EAAsBA,EAAO5C,OAAS4C,KAK/C,OADAnG,KAAKzC,MAAM9D,eAAiBoM,IAASK,EAAeJ,KAAWhB,MAAM,EAAGsB,KACjEpG,KAAKzC,MAAM9D,kB,kCC3BtB,gBAEe,QACV4M,IACHC,MAAO,wBACPC,aAAc,+BACdC,WAAY,6BACZC,YAAa,gC,kCCPf,0LAQO,MAAMC,EAAmB,CAC9BC,KACAC,KACAC,KACAC,KACAC,KACA,aAGWC,EAAgB,CAC3BC,KAAM,OACNxI,SAAU,YAGCyI,EAAc,CACzBC,KAAM,OACNC,IAAK,OAGMhB,EAAmB,EAEnBiB,EAAkB,CAC7BC,eAAgB,iBAChBC,OAAQ,W,kCC/BV,oEAAO,MAAMC,EAAqC,SACrCC,EAAuC,WAErC,KACbC,OAAQ,wBACRC,eAAgB,gCAChBC,cAAe,gCACfC,sBAAuB,wCACvBC,gBAAiB,kCACjBC,oBAAqB,sCACrB,CAACP,GAAqC,yBACtC,CAACC,GAAuC","file":"9.d6268fbc.chunk.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"vue-filtered-search-bar-container gl-flex gl-flex-col sm:gl-flex-row sm:gl-gap-3\"},[_c('div',{staticClass:\"flex-grow-1 gl-flex gl-min-w-0 gl-gap-3\"},[(_vm.showCheckbox)?_c('gl-form-checkbox',{staticClass:\"gl-min-h-0 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\"}})],1),_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--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-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--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filtered_search_bar_root.vue?vue&type=script&lang=js\"","\n\n\n \n \n \n {{ __('Select all') }}\n \n \n \n \n \"{{ token }}\"\n \n {{ tokenTitles[token.type] }} :{{ token.value.operator }}\n {{ tokenSymbols[token.type] }}{{ historyTokenOptionTitle(token) }}\n \n \n \n \n \n \n \n\n","import { render, staticRenderFns } from \"./filtered_search_bar_root.vue?vue&type=template&id=ff54ccba\"\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 { __ } 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 { 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","import recentSearchesStorageKeysCE from '~/filtered_search/recent_searches_storage_keys';\n\nexport default {\n ...recentSearchesStorageKeysCE,\n epics: 'epics-recent-searches',\n requirements: 'requirements-recent-searches',\n test_cases: 'test-cases-recent-searches',\n jira_issues: 'jira-issues-recent-searches',\n};\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","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"],"sourceRoot":""}