{"version":3,"sources":["webpack:////build/source/ee/app/assets/javascripts/api.js","webpack:///./vue_shared/mixins/timeago.js","webpack:///./graphql_shared/fragments/page_info.fragment.graphql","webpack:////build/source/ee/app/assets/javascripts/api/status_check_api.js","webpack:///./vue_shared/components/list_actions/list_actions.vue","webpack:///./vue_shared/components/list_actions/list_actions.vue?da27","webpack:///vue_shared/components/list_actions/list_actions.vue","webpack:///./vue_shared/components/list_actions/list_actions.vue?b531","webpack:///./vue_shared/components/time_ago_tooltip.vue","webpack:///./vue_shared/components/time_ago_tooltip.vue?3039","webpack:///vue_shared/components/time_ago_tooltip.vue","webpack:///./vue_shared/components/time_ago_tooltip.vue?f6d8","webpack:///./vue_shared/components/projects_list/projects_list.vue","webpack:///./vue_shared/components/projects_list/project_list_item_description.vue?aa5a","webpack:///vue_shared/components/projects_list/project_list_item_description.vue","webpack:///./vue_shared/components/projects_list/project_list_item_description.vue?04f2","webpack:///./vue_shared/components/projects_list/project_list_item_description.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_description.vue?ef9d","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_description.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_description.vue?be73","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_description.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_actions.vue?5833","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_actions.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_actions.vue?aa6e","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_actions.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_inactive_badge.vue?1ef3","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_inactive_badge.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_inactive_badge.vue?3ea8","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/projects_list/project_list_item_inactive_badge.vue","webpack:///vue_shared/components/topic_badges.vue","webpack:///./vue_shared/components/topic_badges.vue?05b7","webpack:///./vue_shared/components/topic_badges.vue?bd87","webpack:///./vue_shared/components/topic_badges.vue","webpack:///./vue_shared/components/projects_list/projects_list_item.vue?9175","webpack:///vue_shared/components/projects_list/projects_list_item.vue","webpack:///./featurable/constants.js","webpack:///./vue_shared/components/projects_list/projects_list.vue?8737","webpack:///vue_shared/components/projects_list/projects_list.vue","webpack:///./vue_shared/components/projects_list/projects_list_item.vue?987f","webpack:///./vue_shared/components/projects_list/projects_list_item.vue","webpack:///./vue_shared/components/projects_list/projects_list.vue?0772","webpack:////build/source/ee/app/assets/javascripts/api/groups_api.js","webpack:///./vue_shared/components/resource_lists/list_item_description.vue","webpack:///./vue_shared/components/resource_lists/list_item_description.vue?ec10","webpack:///vue_shared/components/resource_lists/list_item_description.vue","webpack:///./vue_shared/components/resource_lists/list_item_description.vue?8b3d","webpack:////build/source/ee/app/assets/javascripts/api/dora_api.js","webpack:///./vue_shared/components/resource_lists/constants.js","webpack:///./lib/utils/number_utils.js","webpack:///./vue_shared/components/resource_lists/utils.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/resource_lists/utils.js","webpack:///./vue_shared/components/resource_lists/list_item.vue","webpack:///./vue_shared/components/resource_lists/list_item.vue?8d9a","webpack:///vue_shared/components/resource_lists/list_item.vue","webpack:///./vue_shared/components/resource_lists/list_item.vue?6292","webpack:////build/source/ee/app/assets/javascripts/api/subscriptions_api.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/truncate_text/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/truncate_text/truncate_text.js","webpack:///./vue_shared/components/resource_lists/list_item_stat.vue","webpack:///./vue_shared/components/resource_lists/list_item_stat.vue?af5d","webpack:///vue_shared/components/resource_lists/list_item_stat.vue","webpack:///./vue_shared/components/resource_lists/list_item_stat.vue?79e3","webpack:///./vue_shared/components/ci_icon/ci_icon.vue","webpack:///./vue_shared/components/ci_icon/ci_icon.vue?b66d","webpack:///vue_shared/components/ci_icon/ci_icon.vue","webpack:///./vue_shared/components/ci_icon/ci_icon.vue?9e67","webpack:///./access_level/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/keyset_pagination/keyset_pagination.js","webpack:////build/source/node_modules/vue-router/dist/vue-router.esm.js","webpack:////build/source/ee/app/assets/javascripts/api/projects_api.js","webpack:///./vue_shared/plugins/global_toast.js","webpack:///./vue_shared/components/list_actions/constants.js"],"names":["Api","geoSitePath","geoSitesPath","geoSitesStatusPath","ldapGroupsPath","subscriptionPath","childEpicPath","codeReviewAnalyticsPath","groupActivityIssuesPath","groupActivityMergeRequestsPath","groupActivityNewMembersPath","countriesPath","countryStatesPath","paymentFormPath","filePath","validatePaymentMethodPath","vulnerabilityPath","vulnerabilityActionPath","vulnerabilityIssueLinksPath","descendantGroupsPath","projectDeploymentFrequencyAnalyticsPath","projectGroupsPath","issueMetricImagesPath","issueMetricSingleImagePath","environmentApprovalPath","protectedEnvironmentsPath","mrStatusCheckRetryPath","protectedEnvironmentPath","aiCompletionsPath","aiEmbeddingsPath","aiChatPath","tanukiBotAskPath","userSubscription","namespaceId","url","buildUrl","this","replace","encodeURIComponent","axios","get","ldapGroups","query","provider","callback","params","search","per_page","DEFAULT_PER_PAGE","active","then","data","createChildEpic","confidential","groupId","parentEpicId","title","post","parent_id","descendantGroups","codeReviewAnalytics","groupActivityMergeRequestsCount","groupPath","group_path","groupActivityIssuesCount","groupActivityNewMembersCount","fetchCountries","fetchStates","country","fetchPaymentFormParams","id","getFile","validatePaymentMethod","gitlabUserId","gitlab_user_id","changeVulnerabilityState","state","getGeoSites","getGeoSitesStatus","createGeoSite","site","updateGeoSite","put","removeGeoSite","delete","deploymentFrequencies","projectId","fetchIssueMetricImages","issueIid","metricImagesUrl","uploadIssueMetricImage","file","urlText","options","headers","contentTypeMultipartFormData","formData","FormData","append","updateIssueMetricImage","imageId","deleteMetricImage","individualMetricImageUrl","projectGroups","deploymentApproval","deploymentId","representedAs","approve","comment","status","represented_as","approveDeployment","rejectDeployment","protectedEnvironments","entityType","createProtectedEnvironment","protectedEnvironment","updateProtectedEnvironment","name","deleteProtectedEnvironment","requestAICompletions","model","prompt","rest","requestAIEmbeddings","input","requestAIChat","messages","requestTanukiBotResponse","q","methods","timeFormatted","time","format","getTimeago","newDate","timeagoLanguageCode","tooltipTitle","localeDateFormat","asDateTimeFull","doc","loc","source","definitionRefs","findOperation","i","definitions","length","element","value","forEach","def","refs","Set","collectFragmentReferences","node","kind","add","type","selectionSet","selections","selection","variableDefinitions","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","push","oneQuery","mrStatusCheckRetry","mergeRequestId","externalStatusCheckId","i18n","actions","__","components","GlDisclosureDropdown","props","Object","required","availableActions","Array","computed","items","_this","reduce","accumulator","action","BASE_ACTIONS","component","_c","_self","attrs","$options","directives","GlTooltip","GlTooltipDirective","GlTruncate","mixins","timeagoMixin","String","Number","Date","tooltipPlacement","default","cssClass","dateTimeFormat","DEFAULT_DATE_TIME_FORMAT","validator","timeFormat","DATE_TIME_FORMATS","includes","enableTruncation","Boolean","timeAgo","tooltipText","undefined","_vm","rawName","placement","expression","modifiers","class","_t","_v","_s","ListItemDescription","SafeHtml","project","showDescription","descriptionHtml","archived","_e","scheduledDeletion","s__","ProjectListItemDescriptionCe","GlSprintf","GlIcon","isPendingDeletion","markedForDeletionOn","formattedDate","formatDate","permanentDeletionDate","SHORT_DATE_FORMAT","staticClass","scopedSlots","_u","key","fn","proxy","restoreErrorMessage","GlLoadingIcon","ListActions","actionsLoading","ACTION_EDIT","href","editPath","ACTION_RESTORE","onActionRestore","ACTION_DELETE","onActionDelete","restoreProject","$emit","renderRestoreSuccessToast","error","createAlert","message","captureError","pendingDeletion","GlBadge","inactiveBadge","variant","text","topics","topicsPopoverTargetText","moreTopics","GlPopover","topicsPopoverTarget","uniqueId","visibleTopics","slice","collapsedTopics","popoverText","sprintf","count","topicPath","topic","topicTitle","truncate","topicTooltipTitle","_l","stars","forks","issues","mergeRequests","deleteErrorMessage","ciCatalogBadge","ListItem","ListItemStat","DeleteModal","ProjectListItemDescription","ProjectListItemActions","ProjectListItemInactiveBadge","CiIcon","TopicBadges","ProjectListItemDelayedDeletionModalFooter","showProjectIcon","timestampType","TIMESTAMP_TYPE_CREATED_AT","TIMESTAMP_TYPE_UPDATED_AT","isDeleteModalVisible","isDeleteLoading","visibility","visibilityIcon","VISIBILITY_TYPE_ICON","visibilityTooltip","PROJECT_VISIBILITY_TYPE","accessLevel","_this$project$accessL","integerValue","accessLevelLabel","ACCESS_LEVEL_LABELS","shouldShowAccessLevel","ACCESS_LEVEL_NO_ACCESS_INTEGER","starsHref","webUrl","mergeRequestsHref","forksHref","issuesHref","isMergeRequestsEnabled","_this$project$mergeRe","mergeRequestsAccessLevel","toLowerCase","openMergeRequestsCount","isForkingEnabled","_this$project$forking","forkingAccessLevel","forksCount","isIssuesEnabled","_this$project$issuesA","issuesAccessLevel","openIssuesCount","hasTopics","starCount","numberToMetricPrefix","hasActions","_this$project$availab","hasActionDelete","_this$project$availab2","pipelineStatus","_this$project$pipelin","pipeline","detailedStatus","deleteProject","deleteParams","renderDeleteSuccessToast","ProjectsListItem","isCatalogResource","exploreCatalogPath","on","$event","isForked","onDeleteModalPrimary","$$v","projects","listItemClass","fetchBillableGroupMembersList","buildApiUrl","defaults","page","fetchBillableGroupMemberMemberships","memberId","fetchBillableGroupMemberIndirectMemberships","removeBillableMemberFromGroup","updateGroupSettings","settings","subscriptionsCreateGroup","showMore","showLess","truncateTextToggleButtonProps","GlTruncateText","DEPLOYMENT_FREQUENCY_METRIC_TYPE","LEAD_TIME_FOR_CHANGES","TIME_TO_RESTORE_SERVICE","CHANGE_FAILURE_RATE","ALL_METRIC_TYPES","freeze","getDoraMetrics","apiUrl","projectOrGroupId","metric","Error","getProjectDoraMetrics","getGroupDoraMetrics","bytesToMiB","number","BYTES_IN_KIB","bytesToGiB","numberToHumanSizeSplit","digits","locale","abs","Math","digitsOptions","minimumFractionDigits","maximumFractionDigits","formatNumberWithLocaleAndDigits","n","formatNumber","toString","numberToHumanSize","humanSize","label","uppercase","THOUSAND","MILLION","toFixed","median","arr","middle","floor","sorted","sort","a","b","changeInPercent","firstY","lastY","round","formattedChangeInPercent","nonFiniteResult","change","isFinite","isNumeric","isNaN","parseInt","numberRegex","isPositiveInteger","test","countFloatingPointDigits","num","decimal","parts","split","integer","splitDecimalNumber","item","toast","isAdjournedDeletionEnabled","date","renderDeleteSuccessToastCE","permanently_remove","full_path","fullPath","GlAvatarLabeled","TimeAgoTooltip","resource","every","prototype","call","showIcon","iconName","statsPadding","timestamp","timestampText","_this$resource$availa","$scopedSlots","keys","avatarLabel","avatarUrl","sendHandRaiseLead","async","createHandRaiseLeadPath","formParams","namespace_id","company_name","companyName","company_size","companySize","first_name","firstName","last_name","lastName","phone_number","phoneNumber","glm_content","glmContent","product_interaction","productInteraction","STATES","__vue_script__","GlButton","GlResizeObserver","showMoreText","showLessText","lines","mobileLines","toggleButtonProps","isTruncated","isExtended","_ref","target","scrollHeight","offsetHeight","__vue_component__","render","_h","$createElement","truncationClasses","style","ariaExpanded","_b","toggleTruncation","truncationToggleText","staticRenderFns","stat","GlLink","tag","icon","startsWith","showStatusText","showTooltip","useLink","componentType","_this$status","ariaLabel","_this$status2","detailsPath","details_path","ACCESS_LEVEL_REPORTER_INTEGER","ACCESS_LEVEL_DEVELOPER_INTEGER","ACCESS_LEVEL_MAINTAINER_INTEGER","ACCESS_LEVEL_OWNER_INTEGER","ACCESS_LEVEL_ADMIN_INTEGER","ACCESS_LEVEL_PLANNER_STRING","ACCESS_LEVELS_INTEGER_TO_STRING","ACCESS_LEVEL_NO_ACCESS","ACCESS_LEVEL_MINIMAL_ACCESS","ACCESS_LEVEL_GUEST","ACCESS_LEVEL_PLANNER","ACCESS_LEVEL_REPORTER","ACCESS_LEVEL_DEVELOPER","ACCESS_LEVEL_MAINTAINER","ACCESS_LEVEL_OWNER","BASE_ROLES","occupiesSeat","description","memberRoleId","BASE_ROLES_WITHOUT_MINIMAL_ACCESS","filter","BASE_ROLES_WITHOUT_OWNER","GlButtonGroup","inheritAttrs","hasPreviousPage","hasNextPage","startCursor","endCursor","prevText","prevButtonLink","navigationLabel","nextText","nextButtonLink","disabled","_g","$attrs","$listeners","extend","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","commaRE","encode","str","decode","decodeURIComponent","err","castQueryParamValue","parseQuery","res","trim","param","shift","val","join","isArray","stringifyQuery","obj","map","result","val2","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","clone","e","route","meta","path","hash","getFullPath","matched","formatMatch","START","unshift","parent","ref","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bVal","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","_","children","routerView","h","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","vm","current","hook","prepatch","vnode","componentInstance","init","propsToPass","config","resolveProps","resolvePath","relative","base","firstChar","charAt","stack","pop","segments","segment","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","parse","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","exec","m","escaped","offset","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","matches","flags","opts","pretty","token","TypeError","JSON","stringify","j","attachKeys","re","sensitive","strict","end","endsWithDelimiter","groups","match","regexpToRegexp","arrayToRegexp","stringToRegexp","compile","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","hashIndex","indexOf","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","noop","Link","to","custom","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","event","this$1$1","$router","resolve","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","handler","guardEvent","click","scopedSlot","$hasNormal","navigate","isActive","isExactActive","findAnchor","child","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","inBrowser","window","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","l","splice","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","len","Time","performance","now","genStateKey","_key","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","replaceState","addEventListener","handlePopState","removeEventListener","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","scrollToPosition","catch","saveScrollPosition","pageXOffset","y","pageYOffset","isValidPosition","isNumber","normalizePosition","v","hashStartsWithNumberRE","isObject","selector","el","document","getElementById","querySelector","docRect","documentElement","getBoundingClientRect","elRect","left","top","getElementPosition","scrollTo","ua","supportsPushState","navigator","userAgent","pushState","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","propertiesToLog","createNavigationCancelledError","_isRouter","isError","isNavigationFailure","errorType","runQueue","queue","cb","step","resolveAsyncComponents","hasAsync","pending","flatMapComponents","cid","once","resolvedDef","__esModule","hasSymbol","Symbol","toStringTag","resolved","reject","reason","msg","comp","flatten","concat","apply","called","args","arguments","History","baseEl","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listeners","extractGuards","records","bind","reverse","guards","guard","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","console","lastRouteIndex","lastCurrentIndex","max","updated","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","iterator","createNavigationAbortedError","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","constructor","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathname","pathLowerCase","baseLowerCase","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","Promise","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","VueRouter$1","list","install","Vue","installed","isDef","registerInstance","callVal","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","destroyed","defineProperty","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","version","START_LOCATION","use","GlToast","showGlobalToast","$toast","show","order","extraAttrs"],"mappings":"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","file":"commons-pages.dashboard.projects-pages.organizations.organizations.groups_and_projects-pages.organiz-34aa025f.6dd35b8f.chunk.js","sourcesContent":["import Api, { DEFAULT_PER_PAGE } from '~/api';\nimport axios from '~/lib/utils/axios_utils';\nimport { contentTypeMultipartFormData } from '~/lib/utils/headers';\n\nexport default {\n ...Api,\n geoSitePath: '/api/:version/geo_sites/:id',\n geoSitesPath: '/api/:version/geo_sites',\n geoSitesStatusPath: '/api/:version/geo_sites/status',\n ldapGroupsPath: '/api/:version/ldap/:provider/groups.json',\n subscriptionPath: '/api/:version/namespaces/:id/gitlab_subscription',\n childEpicPath: '/api/:version/groups/:id/epics',\n codeReviewAnalyticsPath: '/api/:version/analytics/code_review',\n groupActivityIssuesPath: '/api/:version/analytics/group_activity/issues_count',\n groupActivityMergeRequestsPath: '/api/:version/analytics/group_activity/merge_requests_count',\n groupActivityNewMembersPath: '/api/:version/analytics/group_activity/new_members_count',\n countriesPath: '/-/countries',\n countryStatesPath: '/-/country_states',\n paymentFormPath: '/-/subscriptions/payment_form',\n filePath: '/api/:version/projects/:id/repository/files/:file_path',\n validatePaymentMethodPath: '/-/subscriptions/validate_payment_method',\n vulnerabilityPath: '/api/:version/vulnerabilities/:id',\n vulnerabilityActionPath: '/api/:version/vulnerabilities/:id/:action',\n vulnerabilityIssueLinksPath: '/api/:version/vulnerabilities/:id/issue_links',\n descendantGroupsPath: '/api/:version/groups/:group_id/descendant_groups',\n projectDeploymentFrequencyAnalyticsPath:\n '/api/:version/projects/:id/analytics/deployment_frequency',\n projectGroupsPath: '/api/:version/projects/:id/groups.json',\n issueMetricImagesPath: '/api/:version/projects/:id/issues/:issue_iid/metric_images',\n issueMetricSingleImagePath:\n '/api/:version/projects/:id/issues/:issue_iid/metric_images/:image_id',\n environmentApprovalPath: '/api/:version/projects/:id/deployments/:deployment_id/approval',\n protectedEnvironmentsPath: '/api/:version/:entity_type/:id/protected_environments/',\n mrStatusCheckRetryPath:\n '/api/:version/projects/:id/merge_requests/:merge_request_iid/status_checks/:external_status_check_id/retry',\n protectedEnvironmentPath: '/api/:version/:entity_type/:id/protected_environments/:name',\n aiCompletionsPath: '/api/:version/ai/experimentation/openai/completions',\n aiEmbeddingsPath: '/api/:version/ai/experimentation/openai/embeddings',\n aiChatPath: '/api/:version/ai/experimentation/openai/chat/completions',\n tanukiBotAskPath: '/-/llm/tanuki_bot/ask',\n\n userSubscription(namespaceId) {\n const url = Api.buildUrl(this.subscriptionPath).replace(':id', encodeURIComponent(namespaceId));\n\n return axios.get(url);\n },\n\n ldapGroups(query, provider, callback) {\n const url = Api.buildUrl(this.ldapGroupsPath).replace(':provider', provider);\n return axios\n .get(url, {\n params: {\n search: query,\n per_page: DEFAULT_PER_PAGE,\n active: true,\n },\n })\n .then(({ data }) => {\n callback(data);\n\n return data;\n });\n },\n\n createChildEpic({ confidential, groupId, parentEpicId, title }) {\n const url = Api.buildUrl(this.childEpicPath).replace(':id', encodeURIComponent(groupId));\n\n return axios.post(url, {\n parent_id: parentEpicId,\n confidential,\n title,\n });\n },\n\n descendantGroups({ groupId, search }) {\n const url = Api.buildUrl(this.descendantGroupsPath).replace(':group_id', groupId);\n\n return axios.get(url, {\n params: {\n search,\n },\n });\n },\n\n codeReviewAnalytics(params = {}) {\n const url = Api.buildUrl(this.codeReviewAnalyticsPath);\n return axios.get(url, { params });\n },\n\n groupActivityMergeRequestsCount(groupPath) {\n const url = Api.buildUrl(this.groupActivityMergeRequestsPath);\n return axios.get(url, { params: { group_path: groupPath } });\n },\n\n groupActivityIssuesCount(groupPath) {\n const url = Api.buildUrl(this.groupActivityIssuesPath);\n return axios.get(url, { params: { group_path: groupPath } });\n },\n\n groupActivityNewMembersCount(groupPath) {\n const url = Api.buildUrl(this.groupActivityNewMembersPath);\n return axios.get(url, { params: { group_path: groupPath } });\n },\n\n fetchCountries() {\n const url = Api.buildUrl(this.countriesPath);\n return axios.get(url);\n },\n\n fetchStates(country) {\n const url = Api.buildUrl(this.countryStatesPath);\n return axios.get(url, { params: { country } });\n },\n\n fetchPaymentFormParams(id) {\n const url = Api.buildUrl(this.paymentFormPath);\n return axios.get(url, { params: { id } });\n },\n\n getFile(id, filePath, params = {}) {\n const url = Api.buildUrl(this.filePath)\n .replace(':id', encodeURIComponent(id))\n .replace(':file_path', encodeURIComponent(filePath));\n\n return axios.get(url, { params });\n },\n\n validatePaymentMethod(id, gitlabUserId) {\n const url = Api.buildUrl(this.validatePaymentMethodPath);\n return axios.post(url, { id, gitlab_user_id: gitlabUserId });\n },\n\n changeVulnerabilityState(id, state) {\n const url = Api.buildUrl(this.vulnerabilityActionPath)\n .replace(':id', id)\n .replace(':action', state);\n\n return axios.post(url);\n },\n\n getGeoSites() {\n const url = Api.buildUrl(this.geoSitesPath);\n return axios.get(url);\n },\n\n getGeoSitesStatus() {\n const url = Api.buildUrl(this.geoSitesStatusPath);\n return axios.get(url);\n },\n\n createGeoSite(site) {\n const url = Api.buildUrl(this.geoSitesPath);\n return axios.post(url, site);\n },\n\n updateGeoSite(site) {\n const url = Api.buildUrl(this.geoSitesPath);\n return axios.put(`${url}/${site.id}`, site);\n },\n\n removeGeoSite(id) {\n const url = Api.buildUrl(this.geoSitePath).replace(':id', encodeURIComponent(id));\n return axios.delete(url);\n },\n\n deploymentFrequencies(projectId, params = {}) {\n const url = Api.buildUrl(this.projectDeploymentFrequencyAnalyticsPath).replace(\n ':id',\n encodeURIComponent(projectId),\n );\n\n return axios.get(url, { params });\n },\n\n fetchIssueMetricImages({ issueIid, id }) {\n const metricImagesUrl = Api.buildUrl(this.issueMetricImagesPath)\n .replace(':id', encodeURIComponent(id))\n .replace(':issue_iid', encodeURIComponent(issueIid));\n\n return axios.get(metricImagesUrl);\n },\n\n uploadIssueMetricImage({ issueIid, id, file, url = null, urlText = null }) {\n const options = { headers: { ...contentTypeMultipartFormData } };\n const metricImagesUrl = Api.buildUrl(this.issueMetricImagesPath)\n .replace(':id', encodeURIComponent(id))\n .replace(':issue_iid', encodeURIComponent(issueIid));\n\n // Construct multipart form data\n const formData = new FormData();\n formData.append('file', file);\n if (url) {\n formData.append('url', url);\n }\n if (urlText) {\n formData.append('url_text', urlText);\n }\n\n return axios.post(metricImagesUrl, formData, options);\n },\n\n updateIssueMetricImage({ issueIid, id, imageId, url = null, urlText = null }) {\n const metricImagesUrl = Api.buildUrl(this.issueMetricSingleImagePath)\n .replace(':id', encodeURIComponent(id))\n .replace(':issue_iid', encodeURIComponent(issueIid))\n .replace(':image_id', encodeURIComponent(imageId));\n\n // Construct multipart form data\n const formData = new FormData();\n if (url != null) {\n formData.append('url', url);\n }\n if (urlText != null) {\n formData.append('url_text', urlText);\n }\n\n return axios.put(metricImagesUrl, formData);\n },\n\n deleteMetricImage({ issueIid, id, imageId }) {\n const individualMetricImageUrl = Api.buildUrl(this.issueMetricSingleImagePath)\n .replace(':id', encodeURIComponent(id))\n .replace(':issue_iid', encodeURIComponent(issueIid))\n .replace(':image_id', encodeURIComponent(imageId));\n\n return axios.delete(individualMetricImageUrl);\n },\n\n projectGroups(id, options) {\n const url = Api.buildUrl(this.projectGroupsPath).replace(':id', encodeURIComponent(id));\n\n return axios\n .get(url, {\n params: {\n ...options,\n },\n })\n .then(({ data }) => {\n return data;\n });\n },\n\n deploymentApproval({ id, deploymentId, representedAs, approve, comment }) {\n const url = Api.buildUrl(this.environmentApprovalPath)\n .replace(':id', encodeURIComponent(id))\n .replace(':deployment_id', encodeURIComponent(deploymentId));\n\n return axios.post(url, {\n status: approve ? 'approved' : 'rejected',\n represented_as: representedAs,\n comment,\n });\n },\n\n approveDeployment({ id, deploymentId, representedAs, comment }) {\n return this.deploymentApproval({ id, deploymentId, representedAs, approve: true, comment });\n },\n rejectDeployment({ id, deploymentId, representedAs, comment }) {\n return this.deploymentApproval({ id, deploymentId, approve: false, representedAs, comment });\n },\n\n protectedEnvironments(id, entityType, params = {}) {\n const url = Api.buildUrl(this.protectedEnvironmentsPath)\n .replace(':entity_type', encodeURIComponent(entityType))\n .replace(':id', encodeURIComponent(id));\n return axios.get(url, { params });\n },\n\n createProtectedEnvironment(id, entityType, protectedEnvironment) {\n const url = Api.buildUrl(this.protectedEnvironmentsPath)\n .replace(':entity_type', encodeURIComponent(entityType))\n .replace(':id', encodeURIComponent(id));\n return axios.post(url, protectedEnvironment);\n },\n\n updateProtectedEnvironment(id, entityType, protectedEnvironment) {\n const url = Api.buildUrl(this.protectedEnvironmentPath)\n .replace(':entity_type', encodeURIComponent(entityType))\n .replace(':id', encodeURIComponent(id))\n .replace(':name', encodeURIComponent(protectedEnvironment.name));\n\n return axios.put(url, protectedEnvironment);\n },\n\n deleteProtectedEnvironment(id, entityType, { name }) {\n const url = Api.buildUrl(this.protectedEnvironmentPath)\n .replace(':entity_type', encodeURIComponent(entityType))\n .replace(':id', encodeURIComponent(id))\n .replace(':name', encodeURIComponent(name));\n\n return axios.delete(url);\n },\n\n requestAICompletions({ model, prompt, ...rest }) {\n const url = Api.buildUrl(this.aiCompletionsPath);\n return axios.post(url, { model, prompt, rest });\n },\n\n requestAIEmbeddings({ model, input, ...rest }) {\n const url = Api.buildUrl(this.aiEmbeddingsPath);\n return axios.post(url, { model, input, rest });\n },\n\n requestAIChat({ model, messages, ...rest }) {\n const url = Api.buildUrl(this.aiChatPath);\n return axios.post(url, { model, messages, rest });\n },\n\n requestTanukiBotResponse(q) {\n const url = Api.buildUrl(this.tanukiBotAskPath);\n return axios.post(url, { q });\n },\n};\n","import {\n getTimeago,\n localeDateFormat,\n newDate,\n timeagoLanguageCode,\n} from '~/lib/utils/datetime_utility';\n\n/**\n * Mixin with time ago methods used in some vue components\n */\nexport default {\n methods: {\n timeFormatted(time, format) {\n const timeago = getTimeago(format);\n\n return timeago.format(newDate(time), timeagoLanguageCode);\n },\n\n tooltipTitle(time) {\n return localeDateFormat.asDateTimeFull.format(newDate(time));\n },\n },\n};\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasPreviousPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startCursor\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":92}};\n doc.loc.source = {\"body\":\"fragment PageInfo on PageInfo {\\n hasNextPage\\n hasPreviousPage\\n startCursor\\n endCursor\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"PageInfo\"] = oneQuery(doc, \"PageInfo\");\n \n","import Api from 'ee/api';\nimport axios from '~/lib/utils/axios_utils';\n\nexport function mrStatusCheckRetry({ projectId, mergeRequestId, externalStatusCheckId }) {\n const url = Api.buildUrl(Api.mrStatusCheckRetryPath)\n .replace(':id', encodeURIComponent(projectId))\n .replace(':merge_request_iid', encodeURIComponent(mergeRequestId))\n .replace(':external_status_check_id', encodeURIComponent(externalStatusCheckId));\n\n return axios.post(url);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown',{attrs:{\"items\":_vm.items,\"icon\":\"ellipsis_v\",\"no-caret\":\"\",\"toggle-text\":_vm.$options.i18n.actions,\"text-sr-only\":\"\",\"placement\":\"bottom-end\",\"category\":\"tertiary\"}})\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!./list_actions.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!./list_actions.vue?vue&type=script&lang=js\"","<script>\nimport { GlDisclosureDropdown } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { BASE_ACTIONS } from './constants';\n\nexport default {\n name: 'ListActions',\n i18n: {\n actions: __('Actions'),\n },\n components: {\n GlDisclosureDropdown,\n },\n props: {\n // Can extend `BASE_ACTIONS` and/or add new actions.\n // Expected format: https://gitlab-org.gitlab.io/gitlab-ui/?path=/docs/base-new-dropdowns-disclosure--docs#setting-disclosure-dropdown-items\n actions: {\n type: Object,\n required: true,\n },\n availableActions: {\n type: Array,\n required: true,\n },\n },\n computed: {\n items() {\n return this.availableActions.reduce((accumulator, action) => {\n return [\n ...accumulator,\n {\n ...BASE_ACTIONS[action],\n ...this.actions[action],\n },\n ];\n }, []);\n },\n },\n};\n</script>\n\n<template>\n <gl-disclosure-dropdown\n :items=\"items\"\n icon=\"ellipsis_v\"\n no-caret\n :toggle-text=\"$options.i18n.actions\"\n text-sr-only\n placement=\"bottom-end\"\n category=\"tertiary\"\n />\n</template>\n","import { render, staticRenderFns } from \"./list_actions.vue?vue&type=template&id=7755938b\"\nimport script from \"./list_actions.vue?vue&type=script&lang=js\"\nexport * from \"./list_actions.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport\",value:({ placement: _vm.tooltipPlacement }),expression:\"{ placement: tooltipPlacement }\",modifiers:{\"viewport\":true}}],class:_vm.cssClass,attrs:{\"title\":_vm.tooltipText,\"datetime\":_vm.time}},[_vm._t(\"default\",function(){return [(_vm.enableTruncation)?[_c('gl-truncate',{attrs:{\"text\":_vm.timeAgo,\"with-tooltip\":\"\"}})]:[_vm._v(_vm._s(_vm.timeAgo))]]},{\"timeAgo\":_vm.timeAgo})],2)\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!./time_ago_tooltip.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!./time_ago_tooltip.vue?vue&type=script&lang=js\"","<script>\nimport { GlTruncate, GlTooltipDirective } from '@gitlab/ui';\n\nimport { DATE_TIME_FORMATS, DEFAULT_DATE_TIME_FORMAT } from '~/lib/utils/datetime_utility';\nimport timeagoMixin from '../mixins/timeago';\n\n/**\n * Port of ruby helper time_ago_with_tooltip\n */\n\nexport default {\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n GlTruncate,\n },\n mixins: [timeagoMixin],\n props: {\n time: {\n type: [String, Number, Date],\n required: true,\n },\n tooltipPlacement: {\n type: String,\n required: false,\n default: 'top',\n },\n cssClass: {\n type: String,\n required: false,\n default: '',\n },\n dateTimeFormat: {\n type: String,\n required: false,\n default: DEFAULT_DATE_TIME_FORMAT,\n validator: (timeFormat) => DATE_TIME_FORMATS.includes(timeFormat),\n },\n enableTruncation: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n computed: {\n timeAgo() {\n return this.timeFormatted(this.time, this.dateTimeFormat);\n },\n tooltipText() {\n return this.enableTruncation ? undefined : this.tooltipTitle(this.time);\n },\n },\n};\n</script>\n<template>\n <time\n v-gl-tooltip.viewport=\"{ placement: tooltipPlacement }\"\n :class=\"cssClass\"\n :title=\"tooltipText\"\n :datetime=\"time\"\n ><slot :time-ago=\"timeAgo\"\n ><template v-if=\"enableTruncation\"><gl-truncate :text=\"timeAgo\" with-tooltip /></template\n ><template v-else>{{ timeAgo }}</template></slot\n ></time\n >\n</template>\n","import { render, staticRenderFns } from \"./time_ago_tooltip.vue?vue&type=template&id=26d04390\"\nimport script from \"./time_ago_tooltip.vue?vue&type=script&lang=js\"\nexport * from \"./time_ago_tooltip.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"gl-list-none gl-p-0\"},_vm._l((_vm.projects),function(project){return _c('projects-list-item',{key:project.id,class:_vm.listItemClass,attrs:{\"project\":project,\"show-project-icon\":_vm.showProjectIcon,\"timestamp-type\":_vm.timestampType},on:{\"refetch\":function($event){return _vm.$emit('refetch')}}})}),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!./project_list_item_description.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!./project_list_item_description.vue?vue&type=script&lang=js\"","<script>\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport ListItemDescription from '~/vue_shared/components/resource_lists/list_item_description.vue';\n\nexport default {\n name: 'ProjectListItemDescription',\n components: {\n ListItemDescription,\n },\n directives: {\n SafeHtml,\n },\n props: {\n project: {\n type: Object,\n required: true,\n },\n },\n computed: {\n showDescription() {\n return this.project.descriptionHtml && !this.project.archived;\n },\n },\n};\n</script>\n\n<template>\n <list-item-description v-if=\"showDescription\" :description-html=\"project.descriptionHtml\" />\n</template>\n","import { render, staticRenderFns } from \"./project_list_item_description.vue?vue&type=template&id=8c09c1d2\"\nimport script from \"./project_list_item_description.vue?vue&type=script&lang=js\"\nexport * from \"./project_list_item_description.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.showDescription)?_c('list-item-description',{attrs:{\"description-html\":_vm.project.descriptionHtml}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project_list_item_description.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!./project_list_item_description.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlIcon } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { SHORT_DATE_FORMAT } from '~/vue_shared/constants';\nimport { formatDate, newDate } from '~/lib/utils/datetime_utility';\nimport ProjectListItemDescriptionCe from '~/vue_shared/components/projects_list/project_list_item_description.vue';\n\nexport default {\n name: 'ProjectListItemDescriptionEE',\n i18n: {\n scheduledDeletion: s__('Projects|Scheduled for deletion on %{date}'),\n },\n components: {\n ProjectListItemDescriptionCe,\n GlSprintf,\n GlIcon,\n },\n props: {\n project: {\n type: Object,\n required: true,\n },\n },\n computed: {\n isPendingDeletion() {\n return Boolean(this.project.markedForDeletionOn);\n },\n formattedDate() {\n return formatDate(newDate(this.project.permanentDeletionDate), SHORT_DATE_FORMAT);\n },\n },\n};\n</script>\n\n<template>\n <div v-if=\"isPendingDeletion\" class=\"md gl-mt-2 gl-text-sm gl-text-secondary\">\n <gl-icon name=\"calendar\" />\n <gl-sprintf :message=\"$options.i18n.scheduledDeletion\">\n <template #date>\n {{ formattedDate }}\n </template>\n </gl-sprintf>\n </div>\n <project-list-item-description-ce v-else :project=\"project\" />\n</template>\n","import { render, staticRenderFns } from \"./project_list_item_description.vue?vue&type=template&id=137581dc\"\nimport script from \"./project_list_item_description.vue?vue&type=script&lang=js\"\nexport * from \"./project_list_item_description.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isPendingDeletion)?_c('div',{staticClass:\"md gl-mt-2 gl-text-sm gl-text-secondary\"},[_c('gl-icon',{attrs:{\"name\":\"calendar\"}}),_vm._v(\" \"),_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.scheduledDeletion},scopedSlots:_vm._u([{key:\"date\",fn:function(){return [_vm._v(\"\\n \"+_vm._s(_vm.formattedDate)+\"\\n \")]},proxy:true}],null,false,1835334662)})],1):_c('project-list-item-description-ce',{attrs:{\"project\":_vm.project}})\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!./project_list_item_actions.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!./project_list_item_actions.vue?vue&type=script&lang=js\"","<script>\nimport { GlLoadingIcon } from '@gitlab/ui';\nimport { __, s__ } from '~/locale';\nimport { createAlert } from '~/alert';\nimport { restoreProject } from 'ee/rest_api';\nimport { renderRestoreSuccessToast } from 'ee/vue_shared/components/resource_lists/utils';\nimport ListActions from '~/vue_shared/components/list_actions/list_actions.vue';\nimport {\n ACTION_EDIT,\n ACTION_RESTORE,\n ACTION_DELETE,\n} from '~/vue_shared/components/list_actions/constants';\n\nexport default {\n name: 'ProjectListItemActionsEE',\n i18n: {\n project: __('Project'),\n restoreErrorMessage: s__(\n 'Projects|An error occurred restoring the project. Please refresh the page to try again.',\n ),\n },\n components: {\n GlLoadingIcon,\n ListActions,\n },\n props: {\n project: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n actionsLoading: false,\n };\n },\n computed: {\n actions() {\n return {\n [ACTION_EDIT]: {\n href: this.project.editPath,\n },\n [ACTION_RESTORE]: {\n action: this.onActionRestore,\n },\n [ACTION_DELETE]: {\n action: this.onActionDelete,\n },\n };\n },\n },\n methods: {\n async onActionRestore() {\n this.actionsLoading = true;\n\n try {\n await restoreProject(this.project.id);\n this.$emit('refetch');\n renderRestoreSuccessToast(this.project, this.$options.i18n.project);\n } catch (error) {\n createAlert({ message: this.$options.i18n.restoreErrorMessage, error, captureError: true });\n } finally {\n this.actionsLoading = false;\n }\n },\n onActionDelete() {\n this.$emit('delete');\n },\n },\n};\n</script>\n\n<template>\n <gl-loading-icon v-if=\"actionsLoading\" size=\"sm\" class=\"gl-px-3\" />\n <list-actions v-else :actions=\"actions\" :available-actions=\"project.availableActions\" />\n</template>\n","import { render, staticRenderFns } from \"./project_list_item_actions.vue?vue&type=template&id=0a295cf6\"\nimport script from \"./project_list_item_actions.vue?vue&type=script&lang=js\"\nexport * from \"./project_list_item_actions.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.actionsLoading)?_c('gl-loading-icon',{staticClass:\"gl-px-3\",attrs:{\"size\":\"sm\"}}):_c('list-actions',{attrs:{\"actions\":_vm.actions,\"available-actions\":_vm.project.availableActions}})\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!./project_list_item_inactive_badge.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!./project_list_item_inactive_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n name: 'ProjectListItemInactiveBadge',\n i18n: {\n pendingDeletion: __('Pending deletion'),\n archived: __('Archived'),\n },\n components: {\n GlBadge,\n },\n props: {\n project: {\n type: Object,\n required: true,\n },\n },\n computed: {\n isPendingDeletion() {\n return Boolean(this.project.markedForDeletionOn);\n },\n inactiveBadge() {\n if (this.isPendingDeletion) {\n return {\n variant: 'warning',\n text: this.$options.i18n.pendingDeletion,\n };\n }\n\n if (this.project.archived) {\n return {\n variant: 'info',\n text: this.$options.i18n.archived,\n };\n }\n\n return null;\n },\n },\n};\n</script>\n\n<template>\n <gl-badge v-if=\"inactiveBadge\" :variant=\"inactiveBadge.variant\">{{\n inactiveBadge.text\n }}</gl-badge>\n</template>\n","import { render, staticRenderFns } from \"./project_list_item_inactive_badge.vue?vue&type=template&id=f3d65632\"\nimport script from \"./project_list_item_inactive_badge.vue?vue&type=script&lang=js\"\nexport * from \"./project_list_item_inactive_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.inactiveBadge)?_c('gl-badge',{attrs:{\"variant\":_vm.inactiveBadge.variant}},[_vm._v(_vm._s(_vm.inactiveBadge.text))]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\n/**\n * This component displays topic badges for projects and catalog resources.\n */\nimport { GlBadge, GlPopover, GlTooltipDirective } from '@gitlab/ui';\nimport uniqueId from 'lodash/uniqueId';\nimport { s__, sprintf } from '~/locale';\nimport { truncate } from '~/lib/utils/text_utility';\n\nconst MAX_TOPICS_TO_SHOW = 3;\nconst MAX_TOPIC_TITLE_LENGTH = 15;\n\nexport default {\n name: 'TopicBadges',\n i18n: {\n topics: s__('Topics|Topics'),\n topicsPopoverTargetText: s__('Topics|+%{count} more'),\n moreTopics: s__('Topics|More topics'),\n },\n components: {\n GlBadge,\n GlPopover,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n topics: {\n type: Array,\n required: true,\n },\n },\n data() {\n return {\n topicsPopoverTarget: uniqueId('project-topics-popover-'),\n };\n },\n computed: {\n visibleTopics() {\n return this.topics.slice(0, MAX_TOPICS_TO_SHOW);\n },\n collapsedTopics() {\n return this.topics.slice(MAX_TOPICS_TO_SHOW);\n },\n popoverText() {\n return sprintf(s__('Topics|+%{count} more'), {\n count: this.collapsedTopics.length,\n });\n },\n },\n methods: {\n topicPath(topic) {\n return `/explore/projects/topics/${encodeURIComponent(topic)}`;\n },\n topicTitle(topic) {\n return truncate(topic, MAX_TOPIC_TITLE_LENGTH);\n },\n topicTooltipTitle(topic) {\n // Matches conditional in app/assets/javascripts/lib/utils/text_utility.js#L88\n if (topic.length - 1 > MAX_TOPIC_TITLE_LENGTH) {\n return topic;\n }\n\n return null;\n },\n },\n};\n</script>\n\n<template>\n <div\n v-if=\"topics.length\"\n class=\"gl-inline-flex gl-flex-wrap gl-items-center gl-gap-2 gl-text-sm gl-text-subtle\"\n >\n <span>{{ $options.i18n.topics }}:</span>\n <div v-for=\"topic in visibleTopics\" :key=\"topic\">\n <gl-badge v-gl-tooltip=\"topicTooltipTitle(topic)\" :href=\"topicPath(topic)\">\n {{ topicTitle(topic) }}\n </gl-badge>\n </div>\n <template v-if=\"collapsedTopics.length\">\n <div :id=\"topicsPopoverTarget\" role=\"button\" tabindex=\"0\" data-testid=\"more-topics-label\">\n {{ popoverText }}\n </div>\n <gl-popover :target=\"topicsPopoverTarget\" :title=\"$options.i18n.moreTopics\">\n <div class=\"gl-flex gl-flex-wrap gl-gap-3\">\n <gl-badge\n v-for=\"topic in collapsedTopics\"\n :key=\"topic\"\n v-gl-tooltip=\"topicTooltipTitle(topic)\"\n :href=\"topicPath(topic)\"\n >\n {{ topicTitle(topic) }}\n </gl-badge>\n </div>\n </gl-popover>\n </template>\n </div>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./topic_badges.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!./topic_badges.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./topic_badges.vue?vue&type=template&id=d6cb4b72\"\nimport script from \"./topic_badges.vue?vue&type=script&lang=js\"\nexport * from \"./topic_badges.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.topics.length)?_c('div',{staticClass:\"gl-inline-flex gl-flex-wrap gl-items-center gl-gap-2 gl-text-sm gl-text-subtle\"},[_c('span',[_vm._v(_vm._s(_vm.$options.i18n.topics)+\":\")]),_vm._v(\" \"),_vm._l((_vm.visibleTopics),function(topic){return _c('div',{key:topic},[_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.topicTooltipTitle(topic)),expression:\"topicTooltipTitle(topic)\"}],attrs:{\"href\":_vm.topicPath(topic)}},[_vm._v(\"\\n \"+_vm._s(_vm.topicTitle(topic))+\"\\n \")])],1)}),_vm._v(\" \"),(_vm.collapsedTopics.length)?[_c('div',{attrs:{\"id\":_vm.topicsPopoverTarget,\"role\":\"button\",\"tabindex\":\"0\",\"data-testid\":\"more-topics-label\"}},[_vm._v(\"\\n \"+_vm._s(_vm.popoverText)+\"\\n \")]),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":_vm.topicsPopoverTarget,\"title\":_vm.$options.i18n.moreTopics}},[_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-gap-3\"},_vm._l((_vm.collapsedTopics),function(topic){return _c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.topicTooltipTitle(topic)),expression:\"topicTooltipTitle(topic)\"}],key:topic,attrs:{\"href\":_vm.topicPath(topic)}},[_vm._v(\"\\n \"+_vm._s(_vm.topicTitle(topic))+\"\\n \")])}),1)])]:_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./projects_list_item.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!./projects_list_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlBadge, GlTooltipDirective } from '@gitlab/ui';\n\nimport {\n renderDeleteSuccessToast,\n deleteParams,\n} from 'ee_else_ce/vue_shared/components/resource_lists/utils';\nimport ProjectListItemDescription from 'ee_else_ce/vue_shared/components/projects_list/project_list_item_description.vue';\nimport ProjectListItemActions from 'ee_else_ce/vue_shared/components/projects_list/project_list_item_actions.vue';\nimport ProjectListItemInactiveBadge from 'ee_else_ce/vue_shared/components/projects_list/project_list_item_inactive_badge.vue';\nimport { VISIBILITY_TYPE_ICON, PROJECT_VISIBILITY_TYPE } from '~/visibility_level/constants';\nimport { ACCESS_LEVEL_LABELS, ACCESS_LEVEL_NO_ACCESS_INTEGER } from '~/access_level/constants';\nimport { FEATURABLE_ENABLED } from '~/featurable/constants';\nimport { __, s__ } from '~/locale';\nimport { numberToMetricPrefix } from '~/lib/utils/number_utils';\nimport { ACTION_DELETE } from '~/vue_shared/components/list_actions/constants';\nimport DeleteModal from '~/projects/components/shared/delete_modal.vue';\nimport {\n TIMESTAMP_TYPE_CREATED_AT,\n TIMESTAMP_TYPE_UPDATED_AT,\n} from '~/vue_shared/components/resource_lists/constants';\nimport { deleteProject } from '~/rest_api';\nimport { createAlert } from '~/alert';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport ListItem from '~/vue_shared/components/resource_lists/list_item.vue';\nimport ListItemStat from '~/vue_shared/components/resource_lists/list_item_stat.vue';\nimport TopicBadges from '~/vue_shared/components/topic_badges.vue';\n\nexport default {\n i18n: {\n stars: __('Stars'),\n forks: __('Forks'),\n issues: __('Issues'),\n mergeRequests: __('Merge requests'),\n topics: __('Topics'),\n topicsPopoverTargetText: __('+ %{count} more'),\n moreTopics: __('More topics'),\n project: __('Project'),\n deleteErrorMessage: s__(\n 'Projects|An error occurred deleting the project. Please refresh the page to try again.',\n ),\n ciCatalogBadge: s__('CiCatalog|CI/CD Catalog project'),\n },\n components: {\n GlIcon,\n GlBadge,\n ListItem,\n ListItemStat,\n DeleteModal,\n ProjectListItemDescription,\n ProjectListItemActions,\n ProjectListItemInactiveBadge,\n CiIcon,\n TopicBadges,\n ProjectListItemDelayedDeletionModalFooter: () =>\n import(\n 'ee_component/vue_shared/components/projects_list/project_list_item_delayed_deletion_modal_footer.vue'\n ),\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n /**\n * Expected format:\n *\n * {\n * id: number | string;\n * name: string;\n * webUrl: string;\n * topics: string[];\n * forksCount?: number;\n * avatarUrl: string | null;\n * starCount: number;\n * visibility: string;\n * issuesAccessLevel: string;\n * forkingAccessLevel: string;\n * openIssuesCount: number;\n * maxAccessLevel: {\n * integerValue: number;\n * };\n * descriptionHtml: string;\n * updatedAt: string;\n * isForked: boolean;\n * actions?: ('edit' | 'delete')[];\n * editPath?: string;\n * }\n */\n project: {\n type: Object,\n required: true,\n },\n showProjectIcon: {\n type: Boolean,\n required: false,\n default: false,\n },\n timestampType: {\n type: String,\n required: false,\n default: TIMESTAMP_TYPE_CREATED_AT,\n validator(value) {\n return [TIMESTAMP_TYPE_CREATED_AT, TIMESTAMP_TYPE_UPDATED_AT].includes(value);\n },\n },\n },\n data() {\n return {\n isDeleteModalVisible: false,\n isDeleteLoading: false,\n };\n },\n computed: {\n visibility() {\n return this.project.visibility;\n },\n visibilityIcon() {\n return VISIBILITY_TYPE_ICON[this.visibility];\n },\n visibilityTooltip() {\n return PROJECT_VISIBILITY_TYPE[this.visibility];\n },\n accessLevel() {\n return this.project.accessLevel?.integerValue;\n },\n accessLevelLabel() {\n return ACCESS_LEVEL_LABELS[this.accessLevel];\n },\n shouldShowAccessLevel() {\n return this.accessLevel !== undefined && this.accessLevel !== ACCESS_LEVEL_NO_ACCESS_INTEGER;\n },\n starsHref() {\n return `${this.project.webUrl}/-/starrers`;\n },\n mergeRequestsHref() {\n return `${this.project.webUrl}/-/merge_requests`;\n },\n forksHref() {\n return `${this.project.webUrl}/-/forks`;\n },\n issuesHref() {\n return `${this.project.webUrl}/-/issues`;\n },\n isMergeRequestsEnabled() {\n return (\n this.project.mergeRequestsAccessLevel?.toLowerCase() === FEATURABLE_ENABLED &&\n this.project.openMergeRequestsCount !== undefined\n );\n },\n isForkingEnabled() {\n return (\n this.project.forkingAccessLevel?.toLowerCase() === FEATURABLE_ENABLED &&\n this.project.forksCount !== undefined\n );\n },\n isIssuesEnabled() {\n return (\n this.project.issuesAccessLevel?.toLowerCase() === FEATURABLE_ENABLED &&\n this.project.openIssuesCount !== undefined\n );\n },\n hasTopics() {\n return this.project.topics.length;\n },\n starCount() {\n return numberToMetricPrefix(this.project.starCount);\n },\n openMergeRequestsCount() {\n if (!this.isMergeRequestsEnabled) {\n return null;\n }\n\n return numberToMetricPrefix(this.project.openMergeRequestsCount);\n },\n forksCount() {\n if (!this.isForkingEnabled) {\n return null;\n }\n\n return numberToMetricPrefix(this.project.forksCount);\n },\n openIssuesCount() {\n if (!this.isIssuesEnabled) {\n return null;\n }\n\n return numberToMetricPrefix(this.project.openIssuesCount);\n },\n hasActions() {\n return this.project.availableActions?.length;\n },\n hasActionDelete() {\n return this.project.availableActions?.includes(ACTION_DELETE);\n },\n pipelineStatus() {\n return this.project.pipeline?.detailedStatus;\n },\n },\n methods: {\n onActionDelete() {\n this.isDeleteModalVisible = true;\n },\n async onDeleteModalPrimary() {\n this.isDeleteLoading = true;\n\n try {\n await deleteProject(this.project.id, deleteParams(this.project));\n this.$emit('refetch');\n renderDeleteSuccessToast(this.project, this.$options.i18n.project);\n } catch (error) {\n createAlert({ message: this.$options.i18n.deleteErrorMessage, error, captureError: true });\n } finally {\n this.isDeleteLoading = false;\n }\n },\n },\n};\n</script>\n\n<template>\n <list-item\n :resource=\"project\"\n :show-icon=\"showProjectIcon\"\n icon-name=\"project\"\n :timestamp-type=\"timestampType\"\n >\n <template #avatar-meta>\n <gl-icon\n v-if=\"visibility\"\n v-gl-tooltip=\"visibilityTooltip\"\n :name=\"visibilityIcon\"\n variant=\"subtle\"\n />\n <gl-badge\n v-if=\"project.isCatalogResource\"\n icon=\"catalog-checkmark\"\n variant=\"info\"\n data-testid=\"ci-catalog-badge\"\n :href=\"project.exploreCatalogPath\"\n >{{ $options.i18n.ciCatalogBadge }}</gl-badge\n >\n <gl-badge v-if=\"shouldShowAccessLevel\" class=\"gl-block\" data-testid=\"access-level-badge\">{{\n accessLevelLabel\n }}</gl-badge>\n </template>\n\n <template #avatar-default>\n <project-list-item-description :project=\"project\" />\n <topic-badges v-if=\"hasTopics\" :topics=\"project.topics\" class=\"gl-mt-3\" />\n </template>\n\n <template #stats>\n <ci-icon v-if=\"pipelineStatus\" :status=\"pipelineStatus\" />\n <project-list-item-inactive-badge :project=\"project\" />\n <list-item-stat\n :href=\"starsHref\"\n :tooltip-text=\"$options.i18n.stars\"\n icon-name=\"star-o\"\n :stat=\"starCount\"\n data-testid=\"stars-btn\"\n />\n <list-item-stat\n v-if=\"isForkingEnabled\"\n :href=\"forksHref\"\n :tooltip-text=\"$options.i18n.forks\"\n icon-name=\"fork\"\n :stat=\"forksCount\"\n data-testid=\"forks-btn\"\n />\n <list-item-stat\n v-if=\"isMergeRequestsEnabled\"\n :href=\"mergeRequestsHref\"\n :tooltip-text=\"$options.i18n.mergeRequests\"\n icon-name=\"merge-request\"\n :stat=\"openMergeRequestsCount\"\n data-testid=\"mrs-btn\"\n />\n <list-item-stat\n v-if=\"isIssuesEnabled\"\n :href=\"issuesHref\"\n :tooltip-text=\"$options.i18n.issues\"\n icon-name=\"issues\"\n :stat=\"openIssuesCount\"\n data-testid=\"issues-btn\"\n />\n </template>\n\n <template v-if=\"hasActions\" #actions>\n <project-list-item-actions\n :project=\"project\"\n @refetch=\"$emit('refetch')\"\n @delete=\"onActionDelete\"\n />\n </template>\n\n <template #footer>\n <delete-modal\n v-if=\"hasActionDelete\"\n v-model=\"isDeleteModalVisible\"\n :confirm-phrase=\"project.name\"\n :is-fork=\"project.isForked\"\n :confirm-loading=\"isDeleteLoading\"\n :merge-requests-count=\"openMergeRequestsCount\"\n :issues-count=\"openIssuesCount\"\n :forks-count=\"forksCount\"\n :stars-count=\"starCount\"\n @primary=\"onDeleteModalPrimary\"\n >\n <template #modal-footer\n ><project-list-item-delayed-deletion-modal-footer :project=\"project\"\n /></template>\n </delete-modal>\n </template>\n </list-item>\n</template>\n","// Matches `app/models/concerns/featurable.rb`\n\nexport const FEATURABLE_DISABLED = 'disabled';\nexport const FEATURABLE_PRIVATE = 'private';\nexport const FEATURABLE_ENABLED = 'enabled';\nexport const FEATURABLE_PUBLIC = 'public';\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./projects_list.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!./projects_list.vue?vue&type=script&lang=js\"","<script>\nimport {\n TIMESTAMP_TYPE_CREATED_AT,\n TIMESTAMP_TYPE_UPDATED_AT,\n} from '~/vue_shared/components/resource_lists/constants';\nimport ProjectsListItem from './projects_list_item.vue';\n\nexport default {\n components: { ProjectsListItem },\n props: {\n /**\n * Expected format:\n *\n * {\n * id: number | string;\n * name: string;\n * webUrl: string;\n * topics: string[];\n * forksCount?: number;\n * avatarUrl: string | null;\n * starCount: number;\n * visibility: string;\n * issuesAccessLevel: string;\n * forkingAccessLevel: string;\n * openIssuesCount: number;\n * permissions: {\n * projectAccess: { accessLevel: 50 };\n * };\n * descriptionHtml: string;\n * updatedAt: string;\n * createdAt: string;\n * }[]\n */\n projects: {\n type: Array,\n required: true,\n },\n showProjectIcon: {\n type: Boolean,\n required: false,\n default: false,\n },\n listItemClass: {\n type: [String, Array, Object],\n required: false,\n default: '',\n },\n timestampType: {\n type: String,\n required: false,\n default: TIMESTAMP_TYPE_CREATED_AT,\n validator(value) {\n return [TIMESTAMP_TYPE_CREATED_AT, TIMESTAMP_TYPE_UPDATED_AT].includes(value);\n },\n },\n },\n};\n</script>\n\n<template>\n <ul class=\"gl-list-none gl-p-0\">\n <projects-list-item\n v-for=\"project in projects\"\n :key=\"project.id\"\n :project=\"project\"\n :show-project-icon=\"showProjectIcon\"\n :class=\"listItemClass\"\n :timestamp-type=\"timestampType\"\n @refetch=\"$emit('refetch')\"\n />\n </ul>\n</template>\n","import { render, staticRenderFns } from \"./projects_list_item.vue?vue&type=template&id=1835ac78\"\nimport script from \"./projects_list_item.vue?vue&type=script&lang=js\"\nexport * from \"./projects_list_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('list-item',{attrs:{\"resource\":_vm.project,\"show-icon\":_vm.showProjectIcon,\"icon-name\":\"project\",\"timestamp-type\":_vm.timestampType},scopedSlots:_vm._u([{key:\"avatar-meta\",fn:function(){return [(_vm.visibility)?_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.visibilityTooltip),expression:\"visibilityTooltip\"}],attrs:{\"name\":_vm.visibilityIcon,\"variant\":\"subtle\"}}):_vm._e(),_vm._v(\" \"),(_vm.project.isCatalogResource)?_c('gl-badge',{attrs:{\"icon\":\"catalog-checkmark\",\"variant\":\"info\",\"data-testid\":\"ci-catalog-badge\",\"href\":_vm.project.exploreCatalogPath}},[_vm._v(_vm._s(_vm.$options.i18n.ciCatalogBadge))]):_vm._e(),_vm._v(\" \"),(_vm.shouldShowAccessLevel)?_c('gl-badge',{staticClass:\"gl-block\",attrs:{\"data-testid\":\"access-level-badge\"}},[_vm._v(_vm._s(_vm.accessLevelLabel))]):_vm._e()]},proxy:true},{key:\"avatar-default\",fn:function(){return [_c('project-list-item-description',{attrs:{\"project\":_vm.project}}),_vm._v(\" \"),(_vm.hasTopics)?_c('topic-badges',{staticClass:\"gl-mt-3\",attrs:{\"topics\":_vm.project.topics}}):_vm._e()]},proxy:true},{key:\"stats\",fn:function(){return [(_vm.pipelineStatus)?_c('ci-icon',{attrs:{\"status\":_vm.pipelineStatus}}):_vm._e(),_vm._v(\" \"),_c('project-list-item-inactive-badge',{attrs:{\"project\":_vm.project}}),_vm._v(\" \"),_c('list-item-stat',{attrs:{\"href\":_vm.starsHref,\"tooltip-text\":_vm.$options.i18n.stars,\"icon-name\":\"star-o\",\"stat\":_vm.starCount,\"data-testid\":\"stars-btn\"}}),_vm._v(\" \"),(_vm.isForkingEnabled)?_c('list-item-stat',{attrs:{\"href\":_vm.forksHref,\"tooltip-text\":_vm.$options.i18n.forks,\"icon-name\":\"fork\",\"stat\":_vm.forksCount,\"data-testid\":\"forks-btn\"}}):_vm._e(),_vm._v(\" \"),(_vm.isMergeRequestsEnabled)?_c('list-item-stat',{attrs:{\"href\":_vm.mergeRequestsHref,\"tooltip-text\":_vm.$options.i18n.mergeRequests,\"icon-name\":\"merge-request\",\"stat\":_vm.openMergeRequestsCount,\"data-testid\":\"mrs-btn\"}}):_vm._e(),_vm._v(\" \"),(_vm.isIssuesEnabled)?_c('list-item-stat',{attrs:{\"href\":_vm.issuesHref,\"tooltip-text\":_vm.$options.i18n.issues,\"icon-name\":\"issues\",\"stat\":_vm.openIssuesCount,\"data-testid\":\"issues-btn\"}}):_vm._e()]},proxy:true},(_vm.hasActions)?{key:\"actions\",fn:function(){return [_c('project-list-item-actions',{attrs:{\"project\":_vm.project},on:{\"refetch\":function($event){return _vm.$emit('refetch')},\"delete\":_vm.onActionDelete}})]},proxy:true}:null,{key:\"footer\",fn:function(){return [(_vm.hasActionDelete)?_c('delete-modal',{attrs:{\"confirm-phrase\":_vm.project.name,\"is-fork\":_vm.project.isForked,\"confirm-loading\":_vm.isDeleteLoading,\"merge-requests-count\":_vm.openMergeRequestsCount,\"issues-count\":_vm.openIssuesCount,\"forks-count\":_vm.forksCount,\"stars-count\":_vm.starCount},on:{\"primary\":_vm.onDeleteModalPrimary},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('project-list-item-delayed-deletion-modal-footer',{attrs:{\"project\":_vm.project}})]},proxy:true}],null,false,1544885323),model:{value:(_vm.isDeleteModalVisible),callback:function ($$v) {_vm.isDeleteModalVisible=$$v},expression:\"isDeleteModalVisible\"}}):_vm._e()]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./projects_list.vue?vue&type=template&id=3c670e37\"\nimport script from \"./projects_list.vue?vue&type=script&lang=js\"\nexport * from \"./projects_list.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { DEFAULT_PER_PAGE } from '~/api';\nimport { buildApiUrl } from '~/api/api_utils';\nimport axios from '~/lib/utils/axios_utils';\n\nconst GROUP_PATH = '/api/:version/groups/:id';\nconst SUBSCRIPTIONS_GROUPS_PATH = '/-/subscriptions/groups';\nconst GROUPS_BILLABLE_MEMBERS_SINGLE_PATH = '/api/:version/groups/:group_id/billable_members/:id';\nconst GROUPS_BILLABLE_MEMBERS_PATH = '/api/:version/groups/:id/billable_members';\nconst GROUPS_BILLABLE_MEMBERS_SINGLE_MEMBERSHIPS_PATH =\n '/api/:version/groups/:group_id/billable_members/:member_id/memberships';\nconst GROUPS_BILLABLE_MEMBERS_SINGLE_INDIRECT_MEMBERSHIPS_PATH =\n '/api/:version/groups/:group_id/billable_members/:member_id/indirect';\n\nexport const fetchBillableGroupMembersList = (namespaceId, options = {}) => {\n const url = buildApiUrl(GROUPS_BILLABLE_MEMBERS_PATH).replace(':id', namespaceId);\n const defaults = {\n per_page: DEFAULT_PER_PAGE,\n page: 1,\n };\n\n return axios.get(url, {\n params: {\n ...defaults,\n ...options,\n },\n });\n};\n\nexport const fetchBillableGroupMemberMemberships = (namespaceId, memberId) => {\n const url = buildApiUrl(GROUPS_BILLABLE_MEMBERS_SINGLE_MEMBERSHIPS_PATH)\n .replace(':group_id', namespaceId)\n .replace(':member_id', memberId);\n\n return axios.get(url);\n};\n\nexport const fetchBillableGroupMemberIndirectMemberships = (namespaceId, memberId) => {\n const url = buildApiUrl(GROUPS_BILLABLE_MEMBERS_SINGLE_INDIRECT_MEMBERSHIPS_PATH)\n .replace(':group_id', namespaceId)\n .replace(':member_id', memberId);\n\n return axios.get(url);\n};\n\nexport const removeBillableMemberFromGroup = (groupId, memberId) => {\n const url = buildApiUrl(GROUPS_BILLABLE_MEMBERS_SINGLE_PATH)\n .replace(':group_id', groupId)\n .replace(':id', memberId);\n\n return axios.delete(url);\n};\n\nexport const updateGroupSettings = (id, settings) => {\n const url = buildApiUrl(GROUP_PATH).replace(':id', id);\n\n return axios.put(url, settings);\n};\n\nexport function deleteGroup(groupId, params) {\n const url = buildApiUrl(GROUP_PATH).replace(':id', groupId);\n\n return axios.delete(url, { params });\n}\n\nexport function subscriptionsCreateGroup(params = {}) {\n const url = buildApiUrl(SUBSCRIPTIONS_GROUPS_PATH);\n\n return axios.post(url, params);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-truncate-text',{staticClass:\"gl-mt-2 gl-max-w-88\",attrs:{\"lines\":2,\"mobile-lines\":2,\"show-more-text\":_vm.$options.i18n.showMore,\"show-less-text\":_vm.$options.i18n.showLess,\"toggle-button-props\":_vm.$options.truncateTextToggleButtonProps}},[_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.descriptionHtml),expression:\"descriptionHtml\"}],staticClass:\"md md-child-content-text-subtle gl-text-sm\",attrs:{\"data-testid\":\"description\"}})])\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!./list_item_description.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!./list_item_description.vue?vue&type=script&lang=js\"","<script>\nimport { GlTruncateText } from '@gitlab/ui';\n\nimport { __ } from '~/locale';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\n\nexport default {\n i18n: {\n showMore: __('Show more'),\n showLess: __('Show less'),\n },\n truncateTextToggleButtonProps: { class: '!gl-text-sm' },\n components: {\n GlTruncateText,\n },\n directives: {\n SafeHtml,\n },\n props: {\n descriptionHtml: {\n type: String,\n required: true,\n },\n },\n};\n</script>\n\n<template>\n <gl-truncate-text\n :lines=\"2\"\n :mobile-lines=\"2\"\n :show-more-text=\"$options.i18n.showMore\"\n :show-less-text=\"$options.i18n.showLess\"\n :toggle-button-props=\"$options.truncateTextToggleButtonProps\"\n class=\"gl-mt-2 gl-max-w-88\"\n >\n <div\n v-safe-html=\"descriptionHtml\"\n class=\"md md-child-content-text-subtle gl-text-sm\"\n data-testid=\"description\"\n ></div>\n </gl-truncate-text>\n</template>\n","import { render, staticRenderFns } from \"./list_item_description.vue?vue&type=template&id=2ef54754\"\nimport script from \"./list_item_description.vue?vue&type=script&lang=js\"\nexport * from \"./list_item_description.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 { buildApiUrl } from '~/api/api_utils';\nimport axios from '~/lib/utils/axios_utils';\n\nexport const DEPLOYMENT_FREQUENCY_METRIC_TYPE = 'deployment_frequency';\nexport const LEAD_TIME_FOR_CHANGES = 'lead_time_for_changes';\nexport const TIME_TO_RESTORE_SERVICE = 'time_to_restore_service';\nexport const CHANGE_FAILURE_RATE = 'change_failure_rate';\nexport const ALL_METRIC_TYPES = Object.freeze([\n DEPLOYMENT_FREQUENCY_METRIC_TYPE,\n LEAD_TIME_FOR_CHANGES,\n TIME_TO_RESTORE_SERVICE,\n CHANGE_FAILURE_RATE,\n]);\n\nexport const PROJECTS_DORA_METRICS_PATH = '/api/:version/projects/:id/dora/metrics';\nexport const GROUPS_DORA_METRICS_PATH = '/api/:version/groups/:id/dora/metrics';\n\n// eslint-disable-next-line max-params\nfunction getDoraMetrics(apiUrl, projectOrGroupId, metric, params) {\n if (!ALL_METRIC_TYPES.includes(metric)) {\n throw new Error(`Unsupported metric type: \"${metric}\"`);\n }\n\n const url = buildApiUrl(apiUrl).replace(':id', encodeURIComponent(projectOrGroupId));\n\n return axios.get(url, {\n params: {\n metric,\n ...params,\n },\n });\n}\n\n/**\n * Gets DORA 4 metrics data from a project\n * See https://docs.gitlab.com/ee/api/dora/metrics.html#get-project-level-dora-metrics\n *\n * @param {String|Number} projectId The ID or path of the project\n * @param {String} metric The name of the metric to fetch. Must be one of:\n * `[\"deployment_frequency\", \"lead_time_for_changes\"]`\n * @param {Object} params Any additional query parameters that should be\n * included with the request. These parameters are optional. See\n * https://docs.gitlab.com/ee/api/dora/metrics.html for a list of available options.\n *\n * @returns {Promise} A `Promise` that resolves to an array of data points.\n */\nexport function getProjectDoraMetrics(projectId, metric, params = {}) {\n return getDoraMetrics(PROJECTS_DORA_METRICS_PATH, projectId, metric, params);\n}\n\n/**\n * Gets DORA 4 metrics data from a group\n * See https://docs.gitlab.com/ee/api/dora/metrics.html#get-group-level-dora-metrics\n *\n * @param {String|Number} groupId The ID or path of the group\n * @param {String} metric The name of the metric to fetch. Must be one of:\n * `[\"deployment_frequency\", \"lead_time_for_changes\"]`\n * @param {Object} params Any additional query parameters that should be\n * included with the request. These parameters are optional. See\n * https://docs.gitlab.com/ee/api/dora/metrics.html for a list of available options.\n *\n * @returns {Promise} A `Promise` that resolves to an array of data points.\n */\nexport function getGroupDoraMetrics(groupId, metric, params = {}) {\n return getDoraMetrics(GROUPS_DORA_METRICS_PATH, groupId, metric, params);\n}\n","export const TIMESTAMP_TYPE_CREATED_AT = 'createdAt';\nexport const TIMESTAMP_TYPE_UPDATED_AT = 'updatedAt';\n","import { formatNumber, sprintf, __ } from '~/locale';\nimport { BYTES_IN_KIB, THOUSAND, MILLION } from './constants';\n\n/**\n * Utility function that calculates KiB of the given bytes.\n *\n * @param {Number} number bytes\n * @return {Number} KiB\n */\nexport function bytesToKiB(number) {\n return number / BYTES_IN_KIB;\n}\n\n/**\n * Utility function that calculates MiB of the given bytes.\n *\n * @param {Number} number bytes\n * @return {Number} MiB\n */\nexport function bytesToMiB(number) {\n return number / (BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Utility function that calculates GiB of the given bytes.\n * @param {Number} number\n * @returns {Number}\n */\nexport function bytesToGiB(number) {\n return number / (BYTES_IN_KIB * BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Formats the bytes in number into a more understandable\n * representation. Returns an array with the first value being the human size\n * and the second value being the label (e.g., [1.5, 'KiB']).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string[]}\n */\nexport function numberToHumanSizeSplit({ size, digits = 2, locale } = {}) {\n const abs = Math.abs(size);\n const digitsOptions = { minimumFractionDigits: digits, maximumFractionDigits: digits };\n const formatNumberWithLocaleAndDigits = (n) => formatNumber(n, digitsOptions, locale);\n\n if (abs < BYTES_IN_KIB) {\n return [size.toString(), __('B')];\n }\n if (abs < BYTES_IN_KIB ** 2) {\n return [formatNumberWithLocaleAndDigits(bytesToKiB(size)), __('KiB')];\n }\n if (abs < BYTES_IN_KIB ** 3) {\n return [formatNumberWithLocaleAndDigits(bytesToMiB(size)), __('MiB')];\n }\n return [formatNumberWithLocaleAndDigits(bytesToGiB(size)), __('GiB')];\n}\n\n/**\n * Port of rails number_to_human_size\n * Formats the bytes in number into a more understandable\n * representation (e.g., giving it 1536 yields 1.5 KiB).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string}\n */\nexport function numberToHumanSize(size, digits = 2, locale) {\n const [humanSize, label] = numberToHumanSizeSplit({ size, digits, locale });\n\n switch (label) {\n case __('B'):\n return sprintf(__('%{size} B'), { size: humanSize });\n case __('KiB'):\n return sprintf(__('%{size} KiB'), { size: humanSize });\n case __('MiB'):\n return sprintf(__('%{size} MiB'), { size: humanSize });\n case __('GiB'):\n return sprintf(__('%{size} GiB'), { size: humanSize });\n default:\n return '';\n }\n}\n\n/**\n * Converts a number to kilos or megas.\n *\n * For example:\n * - 123 becomes 123\n * - 123456 becomes 123.4k\n * - 123456789 becomes 123.4m\n *\n * @param number Number to format\n * @param digits The number of digits to appear after the decimal point\n * @param uppercase Whether to use uppercase suffix (K, M)\n * @return {string} Formatted number\n */\nexport function numberToMetricPrefix(number, uppercase = false) {\n if (number < THOUSAND) {\n return number.toString();\n }\n const digits = 1;\n if (number < MILLION) {\n return `${Number((number / THOUSAND).toFixed(digits))}${uppercase ? 'K' : 'k'}`;\n }\n return `${Number((number / MILLION).toFixed(digits))}${uppercase ? 'M' : 'm'}`;\n}\n/**\n * A simple method that returns the value of a + b\n * It seems unessesary, but when combined with a reducer it\n * adds up all the values in an array.\n *\n * e.g. `[1, 2, 3, 4, 5].reduce(sum) // => 15`\n *\n * @param {Float} a\n * @param {Float} b\n * @example\n * // return 15\n * [1, 2, 3, 4, 5].reduce(sum);\n *\n * // returns 6\n * Object.values([{a: 1, b: 2, c: 3].reduce(sum);\n * @returns {Float} The summed value\n */\nexport const sum = (a = 0, b = 0) => a + b;\n\n/**\n * Checks if the provided number is odd\n * @param {Int} number\n */\nexport const isOdd = (number = 0) => number % 2;\n\n/**\n * Computes the median for a given array.\n * @param {Array} arr An array of numbers\n * @returns {Number} The median of the given array\n */\nexport const median = (arr) => {\n const middle = Math.floor(arr.length / 2);\n const sorted = arr.sort((a, b) => a - b);\n return arr.length % 2 !== 0 ? sorted[middle] : (sorted[middle - 1] + sorted[middle]) / 2;\n};\n\n/**\n * Computes the change from one value to the other as a percentage.\n * @param {Number} firstY\n * @param {Number} lastY\n * @returns {Number}\n */\nexport const changeInPercent = (firstY, lastY) => {\n if (firstY === lastY) {\n return 0;\n }\n\n return Math.round(((lastY - firstY) / Math.abs(firstY)) * 100);\n};\n\n/**\n * Computes and formats the change from one value to the other as a percentage.\n * Prepends the computed percentage with either \"+\" or \"-\" to indicate an in- or decrease and\n * returns a given string if the result is not finite (for example, if the first value is \"0\").\n * @param firstY\n * @param lastY\n * @param nonFiniteResult\n * @returns {String}\n */\nexport const formattedChangeInPercent = (firstY, lastY, { nonFiniteResult = '-' } = {}) => {\n const change = changeInPercent(firstY, lastY);\n\n if (!Number.isFinite(change)) {\n return nonFiniteResult;\n }\n\n return `${change >= 0 ? '+' : ''}${change}%`;\n};\n\n/**\n * Checks whether a value is numerical in nature by converting it using parseInt\n *\n * Example outcomes:\n * - isNumeric(100) = true\n * - isNumeric('100') = true\n * - isNumeric(1.0) = true\n * - isNumeric('1.0') = true\n * - isNumeric('abc100') = false\n * - isNumeric('abc') = false\n * - isNumeric(true) = false\n * - isNumeric(undefined) = false\n * - isNumeric(null) = false\n *\n * @param value\n * @returns {boolean}\n */\nexport const isNumeric = (value) => {\n return !Number.isNaN(parseInt(value, 10));\n};\n\nconst numberRegex = /^[0-9]+$/;\n\n/**\n * Checks whether the value is a positive number or 0, or a string with equivalent value\n *\n * @param value\n * @return {boolean}\n */\nexport const isPositiveInteger = (value) => numberRegex.test(value);\n\n/**\n * Splits a number into an integer and decimal component\n * returns an object with the integer and decimal values extracted\n *\n * @param value\n * @return {Object}\n */\nexport const splitDecimalNumber = (value) => {\n if (isNumeric(value)) {\n const parts = String(value).split('.');\n if (value === 0) return { integer: '0', decimal: '0' };\n\n if (parts.length) {\n return parts.length > 1\n ? { integer: parts[0], decimal: parts[1] }\n : { integer: parts[0], decimal: null };\n }\n }\n return { integer: null, decimal: null };\n};\n\n/**\n * Calculates the number of digits after the decimal place\n *\n * @param num - any numeric value\n * @return number of digits after the decimal (if any)\n */\nexport const countFloatingPointDigits = (num = null) => {\n if (!num || !isNumeric(num)) return 0;\n\n const { decimal } = splitDecimalNumber(num);\n return String(decimal).length;\n};\n","import toast from '~/vue_shared/plugins/global_toast';\nimport { sprintf, __ } from '~/locale';\n\nexport const renderDeleteSuccessToast = (item, type) => {\n toast(\n sprintf(__(\"%{type} '%{name}' is being deleted.\"), {\n type,\n name: item.name,\n }),\n );\n};\n\nexport const deleteParams = () => {\n // Overridden in EE\n return {};\n};\n","import {\n renderDeleteSuccessToast as renderDeleteSuccessToastCE,\n deleteParams as deleteParamsCE,\n} from '~/vue_shared/components/resource_lists/utils';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport { sprintf, __ } from '~/locale';\n\n// Exports override for EE\n// eslint-disable-next-line import/export\nexport * from '~/vue_shared/components/resource_lists/utils';\n\nexport const renderRestoreSuccessToast = (item, type) => {\n toast(\n sprintf(__(\"%{type} '%{name}' has been successfully restored.\"), {\n type,\n name: item.name,\n }),\n );\n};\n\n// Exports override for EE\n// eslint-disable-next-line import/export\nexport const renderDeleteSuccessToast = (item, type) => {\n // If delayed deletion is disabled or the project/group is already marked for deletion, use the CE toast\n if (!item.isAdjournedDeletionEnabled || item.markedForDeletionOn) {\n renderDeleteSuccessToastCE(item, type);\n return;\n }\n\n toast(\n sprintf(__(\"%{type} '%{name}' will be deleted on %{date}.\"), {\n type,\n name: item.name,\n date: item.permanentDeletionDate,\n }),\n );\n};\n\n// Exports override for EE\n// eslint-disable-next-line import/export\nexport const deleteParams = (item) => {\n // If delayed deletion is disabled or the project/group is not yet marked for deletion, use the CE params\n if (!item.isAdjournedDeletionEnabled || !item.markedForDeletionOn) {\n return deleteParamsCE();\n }\n\n return { permanently_remove: true, full_path: item.fullPath };\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"gl-border-b gl-flex gl-items-start gl-py-4\"},[_c('div',{staticClass:\"gl-grow gl-items-start md:gl-flex\"},[_c('div',{staticClass:\"gl-flex gl-grow\"},[(_vm.showIcon)?_c('div',{staticClass:\"gl-mr-3 gl-flex gl-h-7 gl-shrink-0 gl-items-center\"},[_c('gl-icon',{attrs:{\"variant\":\"subtle\",\"name\":_vm.iconName}})],1):_vm._e(),_vm._v(\" \"),_c('gl-avatar-labeled',{attrs:{\"entity-id\":_vm.resource.id,\"entity-name\":_vm.resource.avatarLabel,\"label\":_vm.resource.avatarLabel,\"label-link\":_vm.resource.webUrl,\"src\":_vm.resource.avatarUrl,\"shape\":\"rect\",\"size\":32},scopedSlots:_vm._u([{key:\"meta\",fn:function(){return [_c('div',{staticClass:\"gl-px-1\"},[_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-items-center gl-gap-2\"},[_vm._t(\"avatar-meta\")],2)])]},proxy:true}],null,true)},[_vm._v(\" \"),_vm._t(\"avatar-default\",function(){return [(_vm.resource.descriptionHtml)?_c('list-item-description',{attrs:{\"description-html\":_vm.resource.descriptionHtml}}):_vm._e()]})],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-3 gl-shrink-0 gl-flex-col gl-items-end md:gl-mt-0 md:gl-flex md:gl-pl-0\",class:_vm.statsPadding},[_c('div',{staticClass:\"gl-flex gl-items-center gl-gap-x-3 md:gl-h-5\"},[_vm._t(\"stats\")],2),_vm._v(\" \"),(_vm.timestamp)?_c('div',{staticClass:\"gl-mt-2 gl-whitespace-nowrap gl-text-sm gl-leading-1 gl-text-subtle\"},[_c('span',[_vm._v(_vm._s(_vm.timestampText))]),_vm._v(\" \"),_c('time-ago-tooltip',{attrs:{\"time\":_vm.timestamp}})],1):_vm._e()])]),_vm._v(\" \"),(_vm.hasActions)?_c('div',{staticClass:\"-gl-mt-3 gl-ml-3 gl-flex gl-items-center\"},[_vm._t(\"actions\",function(){return [_c('list-actions',{attrs:{\"actions\":_vm.actions,\"available-actions\":_vm.resource.availableActions}})]})],2):_vm._e(),_vm._v(\" \"),_vm._t(\"footer\")],2)\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!./list_item.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!./list_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatarLabeled, GlIcon, GlTooltipDirective } from '@gitlab/ui';\n\nimport { __ } from '~/locale';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport ListActions from '~/vue_shared/components/list_actions/list_actions.vue';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\nimport {\n TIMESTAMP_TYPE_CREATED_AT,\n TIMESTAMP_TYPE_UPDATED_AT,\n} from '~/vue_shared/components/resource_lists/constants';\nimport ListItemDescription from './list_item_description.vue';\n\nexport default {\n i18n: {\n [TIMESTAMP_TYPE_CREATED_AT]: __('Created'),\n [TIMESTAMP_TYPE_UPDATED_AT]: __('Updated'),\n },\n components: {\n GlAvatarLabeled,\n GlIcon,\n ListActions,\n TimeAgoTooltip,\n ListItemDescription,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n SafeHtml,\n },\n props: {\n resource: {\n type: Object,\n required: true,\n validator(resource) {\n const requiredKeys = ['id', 'avatarUrl', 'avatarLabel', 'webUrl'];\n\n return requiredKeys.every((key) => Object.prototype.hasOwnProperty.call(resource, key));\n },\n },\n showIcon: {\n type: Boolean,\n required: false,\n default: false,\n },\n iconName: {\n type: String,\n required: false,\n default: null,\n },\n actions: {\n type: Object,\n required: false,\n default() {\n return {};\n },\n },\n timestampType: {\n type: String,\n required: false,\n default: TIMESTAMP_TYPE_CREATED_AT,\n validator(value) {\n return [TIMESTAMP_TYPE_CREATED_AT, TIMESTAMP_TYPE_UPDATED_AT].includes(value);\n },\n },\n },\n computed: {\n statsPadding() {\n return this.showIcon ? 'gl-pl-11' : 'gl-pl-8';\n },\n timestamp() {\n return this.resource[this.timestampType];\n },\n timestampText() {\n return this.$options.i18n[this.timestampType];\n },\n hasActions() {\n return (\n this.$scopedSlots.actions ||\n (Object.keys(this.actions).length && this.resource.availableActions?.length)\n );\n },\n },\n};\n</script>\n\n<template>\n <li class=\"gl-border-b gl-flex gl-items-start gl-py-4\">\n <div class=\"gl-grow gl-items-start md:gl-flex\">\n <div class=\"gl-flex gl-grow\">\n <div v-if=\"showIcon\" class=\"gl-mr-3 gl-flex gl-h-7 gl-shrink-0 gl-items-center\">\n <gl-icon variant=\"subtle\" :name=\"iconName\" />\n </div>\n <gl-avatar-labeled\n :entity-id=\"resource.id\"\n :entity-name=\"resource.avatarLabel\"\n :label=\"resource.avatarLabel\"\n :label-link=\"resource.webUrl\"\n :src=\"resource.avatarUrl\"\n shape=\"rect\"\n :size=\"32\"\n >\n <template #meta>\n <div class=\"gl-px-1\">\n <div class=\"gl-flex gl-flex-wrap gl-items-center gl-gap-2\">\n <slot name=\"avatar-meta\"></slot>\n </div>\n </div>\n </template>\n <slot name=\"avatar-default\">\n <list-item-description\n v-if=\"resource.descriptionHtml\"\n :description-html=\"resource.descriptionHtml\"\n />\n </slot>\n </gl-avatar-labeled>\n </div>\n <div\n class=\"gl-mt-3 gl-shrink-0 gl-flex-col gl-items-end md:gl-mt-0 md:gl-flex md:gl-pl-0\"\n :class=\"statsPadding\"\n >\n <div class=\"gl-flex gl-items-center gl-gap-x-3 md:gl-h-5\">\n <slot name=\"stats\"></slot>\n </div>\n <div\n v-if=\"timestamp\"\n class=\"gl-mt-2 gl-whitespace-nowrap gl-text-sm gl-leading-1 gl-text-subtle\"\n >\n <span>{{ timestampText }}</span>\n <time-ago-tooltip :time=\"timestamp\" />\n </div>\n </div>\n </div>\n <div v-if=\"hasActions\" class=\"-gl-mt-3 gl-ml-3 gl-flex gl-items-center\">\n <slot name=\"actions\">\n <list-actions :actions=\"actions\" :available-actions=\"resource.availableActions\" />\n </slot>\n </div>\n\n <slot name=\"footer\"></slot>\n </li>\n</template>\n","import { render, staticRenderFns } from \"./list_item.vue?vue&type=template&id=32f08246\"\nimport script from \"./list_item.vue?vue&type=script&lang=js\"\nexport * from \"./list_item.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 { buildApiUrl } from '~/api/api_utils';\nimport axios from '~/lib/utils/axios_utils';\n\nexport const sendHandRaiseLead = async (createHandRaiseLeadPath, params) => {\n const url = buildApiUrl(createHandRaiseLeadPath);\n const formParams = {\n namespace_id: params.namespaceId,\n company_name: params.companyName,\n company_size: params.companySize,\n first_name: params.firstName,\n last_name: params.lastName,\n phone_number: params.phoneNumber,\n country: params.country,\n state: params.state,\n comment: params.comment,\n glm_content: params.glmContent,\n product_interaction: params.productInteraction,\n };\n\n return axios.post(url, formParams);\n};\n","const STATES = {\n INITIAL: 'initial',\n TRUNCATED: 'truncated',\n EXTENDED: 'extended'\n};\n\nexport { STATES };\n","import { GlResizeObserverDirective } from '../../../directives/resize_observer/resize_observer';\nimport GlButton from '../../base/button/button';\nimport { STATES } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlTruncateText',\n components: {\n GlButton\n },\n directives: {\n GlResizeObserver: GlResizeObserverDirective\n },\n props: {\n /**\n * The text for the 'Show more' button\n */\n showMoreText: {\n type: String,\n required: false,\n default: 'Show more'\n },\n /**\n * The text for the 'Show less' button\n */\n showLessText: {\n type: String,\n required: false,\n default: 'Show less'\n },\n /**\n * The number of lines that are initially visible on larger screens\n */\n lines: {\n type: Number,\n required: false,\n default: 3\n },\n /**\n * The number of lines that are initially visible on smaller screens\n */\n mobileLines: {\n type: Number,\n required: false,\n default: 10\n },\n /**\n * Props that are passed to the toggle button\n */\n toggleButtonProps: {\n type: Object,\n required: false,\n default() {\n return {};\n }\n }\n },\n data() {\n return {\n state: STATES.INITIAL\n };\n },\n computed: {\n showTruncationToggle() {\n return this.isTruncated || this.isExtended;\n },\n truncationToggleText() {\n return this.isTruncated ? this.showMoreText : this.showLessText;\n },\n cssVariables() {\n return {\n '--lines': this.lines,\n '--mobile-lines': this.mobileLines\n };\n },\n truncationClasses() {\n return this.isExtended ? null : 'gl-truncate-text gl-overflow-hidden';\n },\n ariaExpanded() {\n return (!this.isTruncated).toString();\n },\n isTruncated() {\n return this.state === STATES.TRUNCATED;\n },\n isExtended() {\n return this.state === STATES.EXTENDED;\n }\n },\n methods: {\n onResize(_ref) {\n let {\n target\n } = _ref;\n if (target.scrollHeight > target.offsetHeight) {\n this.state = STATES.TRUNCATED;\n } else if (this.isTruncated) {\n this.state = STATES.INITIAL;\n }\n },\n toggleTruncation() {\n if (this.isTruncated) {\n this.state = STATES.EXTENDED;\n } else if (this.isExtended) {\n this.state = STATES.TRUNCATED;\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('section',[_c('article',{directives:[{name:\"gl-resize-observer\",rawName:\"v-gl-resize-observer\",value:(_vm.onResize),expression:\"onResize\"}],class:_vm.truncationClasses,style:(_vm.cssVariables),attrs:{\"aria-expanded\":_vm.ariaExpanded}},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.showTruncationToggle)?_c('gl-button',_vm._b({attrs:{\"variant\":\"link\"},on:{\"click\":_vm.toggleTruncation}},'gl-button',_vm.toggleButtonProps,false),[_vm._v(_vm._s(_vm.truncationToggleText))]):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.component,{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.tooltipText),expression:\"tooltipText\"}],tag:\"component\",staticClass:\"gl-flex gl-items-center gl-gap-x-2 gl-text-subtle\",attrs:{\"aria-label\":_vm.tooltipText,\"href\":_vm.href}},[_c('gl-icon',{attrs:{\"name\":_vm.iconName}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-leading-1\"},[_vm._v(_vm._s(_vm.stat))])],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!./list_item_stat.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!./list_item_stat.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective, GlLink } from '@gitlab/ui';\n\nexport default {\n components: { GlIcon },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n tooltipText: {\n type: String,\n required: false,\n default: null,\n },\n iconName: {\n type: String,\n required: true,\n },\n stat: {\n type: [String, Number],\n required: true,\n },\n href: {\n type: String,\n required: false,\n default: null,\n },\n },\n computed: {\n component() {\n return this.href ? GlLink : 'div';\n },\n },\n};\n</script>\n\n<template>\n <component\n :is=\"component\"\n v-gl-tooltip=\"tooltipText\"\n :aria-label=\"tooltipText\"\n :href=\"href\"\n class=\"gl-flex gl-items-center gl-gap-x-2 gl-text-subtle\"\n >\n <gl-icon :name=\"iconName\" />\n <span class=\"gl-leading-1\">{{ stat }}</span>\n </component>\n</template>\n","import { render, staticRenderFns } from \"./list_item_stat.vue?vue&type=template&id=5c498282\"\nimport script from \"./list_item_stat.vue?vue&type=script&lang=js\"\nexport * from \"./list_item_stat.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.componentType,{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],tag:\"component\",staticClass:\"ci-icon gl-inline-flex gl-items-center gl-text-sm\",class:`ci-icon-variant-${_vm.variant}`,attrs:{\"variant\":_vm.variant,\"title\":_vm.title,\"aria-label\":_vm.ariaLabel,\"href\":_vm.href,\"data-testid\":\"ci-icon\"},on:{\"click\":function($event){return _vm.$emit('ciStatusBadgeClick')}}},[_c('span',{staticClass:\"ci-icon-gl-icon-wrapper\"},[_c('gl-icon',{attrs:{\"name\":_vm.icon}})],1),(_vm.showStatusText)?_c('span',{staticClass:\"gl-ml-2 gl-mr-3 gl-self-center gl-whitespace-nowrap gl-leading-1\",attrs:{\"data-testid\":\"ci-icon-text\"}},[_vm._v(_vm._s(_vm.status.text))]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ci_icon.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!./ci_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlIcon } from '@gitlab/ui';\nimport { sprintf, __ } from '~/locale';\n\n/**\n * Renders CI icon based on API response shared between all places where it is used.\n *\n * Receives status object containing:\n * status: {\n * icon: \"status_running\" // used to render the icon and CSS class\n * text: \"Running\",\n * detailsPath: '/project1/jobs/1' // can also be details_path\n * }\n *\n * You may use ~/graphql_shared/fragments/ci_icon.fragment.graphql to fetch this\n * from the GraphQL API.\n *\n */\n\nexport default {\n components: {\n GlIcon,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n status: {\n type: Object,\n required: true,\n validator(status) {\n const { icon } = status;\n return typeof icon === 'string' && icon.startsWith('status');\n },\n },\n showStatusText: {\n type: Boolean,\n required: false,\n default: false,\n },\n showTooltip: {\n type: Boolean,\n required: false,\n default: true,\n },\n useLink: {\n type: Boolean,\n default: true,\n required: false,\n },\n },\n computed: {\n componentType() {\n return this.href ? 'a' : 'span';\n },\n title() {\n if (this.showTooltip) {\n // show tooltip only when not showing text already\n return !this.showStatusText ? this.status?.text : null;\n }\n return null;\n },\n ariaLabel() {\n return sprintf(__('Status: %{status}'), { status: this.status?.text });\n },\n href() {\n // href can come from GraphQL (camelCase) or REST API (snake_case)\n if (this.useLink) {\n return this.status.detailsPath || this.status.details_path;\n }\n return null;\n },\n icon() {\n if (this.status.icon) {\n return `${this.status.icon}_borderless`;\n }\n return null;\n },\n variant() {\n switch (this.status.icon) {\n case 'status_success':\n return 'success';\n case 'status_warning':\n case 'status_pending':\n return 'warning';\n case 'status_failed':\n return 'danger';\n case 'status_running':\n return 'info';\n // default covers the styles for the remainder of CI\n // statuses that are not explicitly stated here\n default:\n return 'neutral';\n }\n },\n },\n};\n</script>\n<template>\n <component\n :is=\"componentType\"\n v-gl-tooltip.viewport.left\n class=\"ci-icon gl-inline-flex gl-items-center gl-text-sm\"\n :class=\"`ci-icon-variant-${variant}`\"\n :variant=\"variant\"\n :title=\"title\"\n :aria-label=\"ariaLabel\"\n :href=\"href\"\n data-testid=\"ci-icon\"\n @click=\"$emit('ciStatusBadgeClick')\"\n >\n <span class=\"ci-icon-gl-icon-wrapper\"><gl-icon :name=\"icon\" /></span\n ><span\n v-if=\"showStatusText\"\n class=\"gl-ml-2 gl-mr-3 gl-self-center gl-whitespace-nowrap gl-leading-1\"\n data-testid=\"ci-icon-text\"\n >{{ status.text }}</span\n >\n </component>\n</template>\n","import { render, staticRenderFns } from \"./ci_icon.vue?vue&type=template&id=884042fa\"\nimport script from \"./ci_icon.vue?vue&type=script&lang=js\"\nexport * from \"./ci_icon.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 { __, s__ } from '~/locale';\n\n// Matches `lib/gitlab/access.rb`\nexport const ACCESS_LEVEL_NO_ACCESS_INTEGER = 0;\nexport const ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER = 5;\nexport const ACCESS_LEVEL_GUEST_INTEGER = 10;\nexport const ACCESS_LEVEL_PLANNER_INTEGER = 15;\nexport const ACCESS_LEVEL_REPORTER_INTEGER = 20;\nexport const ACCESS_LEVEL_DEVELOPER_INTEGER = 30;\nexport const ACCESS_LEVEL_MAINTAINER_INTEGER = 40;\nexport const ACCESS_LEVEL_OWNER_INTEGER = 50;\nexport const ACCESS_LEVEL_ADMIN_INTEGER = 60;\n\n// Matches `app/graphql/types/access_level_enum.rb`\nexport const ACCESS_LEVEL_NO_ACCESS_STRING = 'NO_ACCESS';\nexport const ACCESS_LEVEL_MINIMAL_ACCESS_STRING = 'MINIMAL_ACCESS';\nexport const ACCESS_LEVEL_GUEST_STRING = 'GUEST';\nexport const ACCESS_LEVEL_PLANNER_STRING = 'PLANNER';\nexport const ACCESS_LEVEL_REPORTER_STRING = 'REPORTER';\nexport const ACCESS_LEVEL_DEVELOPER_STRING = 'DEVELOPER';\nexport const ACCESS_LEVEL_MAINTAINER_STRING = 'MAINTAINER';\nexport const ACCESS_LEVEL_OWNER_STRING = 'OWNER';\n\nexport const ACCESS_LEVELS_INTEGER_TO_STRING = {\n [ACCESS_LEVEL_NO_ACCESS_INTEGER]: ACCESS_LEVEL_NO_ACCESS_STRING,\n [ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER]: ACCESS_LEVEL_MINIMAL_ACCESS_STRING,\n [ACCESS_LEVEL_GUEST_INTEGER]: ACCESS_LEVEL_GUEST_STRING,\n [ACCESS_LEVEL_PLANNER_INTEGER]: ACCESS_LEVEL_PLANNER_STRING,\n [ACCESS_LEVEL_REPORTER_INTEGER]: ACCESS_LEVEL_REPORTER_STRING,\n [ACCESS_LEVEL_DEVELOPER_INTEGER]: ACCESS_LEVEL_DEVELOPER_STRING,\n [ACCESS_LEVEL_MAINTAINER_INTEGER]: ACCESS_LEVEL_MAINTAINER_STRING,\n [ACCESS_LEVEL_OWNER_INTEGER]: ACCESS_LEVEL_OWNER_STRING,\n};\n\nconst ACCESS_LEVEL_NO_ACCESS = __('No access');\nconst ACCESS_LEVEL_MINIMAL_ACCESS = __('Minimal Access');\nconst ACCESS_LEVEL_GUEST = __('Guest');\nconst ACCESS_LEVEL_PLANNER = __('Planner');\nconst ACCESS_LEVEL_REPORTER = __('Reporter');\nconst ACCESS_LEVEL_DEVELOPER = __('Developer');\nconst ACCESS_LEVEL_MAINTAINER = __('Maintainer');\nconst ACCESS_LEVEL_OWNER = __('Owner');\n\nexport const BASE_ROLES = [\n {\n value: 'MINIMAL_ACCESS',\n text: ACCESS_LEVEL_MINIMAL_ACCESS,\n accessLevel: ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER,\n occupiesSeat: false,\n description: s__(\n 'MemberRole|The Minimal Access role is for users who need the least amount of access into groups and projects. You can assign this role as a default, before giving a user another role with more permissions.',\n ),\n },\n {\n value: 'GUEST',\n text: ACCESS_LEVEL_GUEST,\n accessLevel: ACCESS_LEVEL_GUEST_INTEGER,\n occupiesSeat: false,\n description: s__(\n 'MemberRole|The Guest role is for users who need visibility into a project or group but should not have the ability to make changes, such as external stakeholders.',\n ),\n },\n {\n value: 'PLANNER',\n text: ACCESS_LEVEL_PLANNER,\n accessLevel: ACCESS_LEVEL_PLANNER_INTEGER,\n memberRoleId: null,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Planner role is suitable for team members who need to manage projects and track work items but do not need to contribute code, such as project managers and scrum masters.',\n ),\n },\n {\n value: 'REPORTER',\n text: ACCESS_LEVEL_REPORTER,\n accessLevel: ACCESS_LEVEL_REPORTER_INTEGER,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Reporter role is suitable for team members who need to stay informed about a project or group but do not actively contribute code.',\n ),\n },\n {\n value: 'DEVELOPER',\n text: ACCESS_LEVEL_DEVELOPER,\n accessLevel: ACCESS_LEVEL_DEVELOPER_INTEGER,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Developer role gives users access to contribute code while restricting sensitive administrative actions.',\n ),\n },\n {\n value: 'MAINTAINER',\n text: ACCESS_LEVEL_MAINTAINER,\n accessLevel: ACCESS_LEVEL_MAINTAINER_INTEGER,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Maintainer role is primarily used for managing code reviews, approvals, and administrative settings for projects. This role can also manage project memberships.',\n ),\n },\n {\n value: 'OWNER',\n text: ACCESS_LEVEL_OWNER,\n accessLevel: ACCESS_LEVEL_OWNER_INTEGER,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Owner role is normally assigned to the individual or team responsible for managing and maintaining the group or creating the project. This role has the highest level of administrative control, and can manage all aspects of the group or project, including managing other Owners.',\n ),\n },\n];\n\nexport const BASE_ROLES_WITHOUT_MINIMAL_ACCESS = BASE_ROLES.filter(\n ({ accessLevel }) => accessLevel !== ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER,\n);\n\nexport const BASE_ROLES_WITHOUT_OWNER = BASE_ROLES.filter(\n ({ accessLevel }) => accessLevel !== ACCESS_LEVEL_OWNER_INTEGER,\n);\n\nexport const ACCESS_LEVEL_LABELS = {\n [ACCESS_LEVEL_NO_ACCESS_INTEGER]: ACCESS_LEVEL_NO_ACCESS,\n [ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER]: ACCESS_LEVEL_MINIMAL_ACCESS,\n [ACCESS_LEVEL_GUEST_INTEGER]: ACCESS_LEVEL_GUEST,\n [ACCESS_LEVEL_PLANNER_INTEGER]: ACCESS_LEVEL_PLANNER,\n [ACCESS_LEVEL_REPORTER_INTEGER]: ACCESS_LEVEL_REPORTER,\n [ACCESS_LEVEL_DEVELOPER_INTEGER]: ACCESS_LEVEL_DEVELOPER,\n [ACCESS_LEVEL_MAINTAINER_INTEGER]: ACCESS_LEVEL_MAINTAINER,\n [ACCESS_LEVEL_OWNER_INTEGER]: ACCESS_LEVEL_OWNER,\n};\n","import GlButton from '../button/button';\nimport GlButtonGroup from '../button_group/button_group';\nimport GlIcon from '../icon/icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlKeysetPagination',\n components: {\n GlButtonGroup,\n GlButton,\n GlIcon\n },\n inheritAttrs: false,\n props: {\n // The following 4 properties match the default names of the\n // [PageInfo](https://docs.gitlab.com/ee/api/graphql/reference/index.html#pageinfo)\n // GraphQL type, allowing the returned `pageInfo` object to\n // be bound directly to this component:\n // `<gl-keyset-pagination v-bind=\"pageInfo\">`\n /**\n * Whether or not the \"Prev\" button should be enabled\n */\n hasPreviousPage: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Whether or not the \"Next\" button should be enabled\n */\n hasNextPage: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * A cursor that points to the first item in the current page.\n * Will be passed as an event parameter when the \"prev\" event is fired.\n */\n startCursor: {\n type: String,\n required: false,\n default: null\n },\n /**\n * A cursor that points to the last item in the current page.\n * Will be passed as an event parameter when the \"next\" event is fired.\n */\n endCursor: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The text that will be rendered inside the \"Previous\" button.\n * It's important to provide this parameter since the default text is not translatable.\n */\n prevText: {\n type: String,\n required: false,\n default: () => translate('GlKeysetPagination.prevText', 'Previous')\n },\n /**\n * A link that will be used as the \"Prev\" button\\'s \"href\" attribute.\n * If provided, the \"Prev\" button renders as a link button; otherwise, it is rendered as a regular button.\n */\n prevButtonLink: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The aria-label that needs to be set for the\n * pagination landmark region.\n */\n navigationLabel: {\n type: String,\n required: false,\n default: () => translate('GlKeysetPagination.navigationLabel', 'Pagination')\n },\n /**\n * The text that will be rendered inside the \"Next\" button.\n * It's important to provide this parameter since the default text is not translatable.\n */\n nextText: {\n type: String,\n required: false,\n default: () => translate('GlKeysetPagination.nextText', 'Next')\n },\n /**\n * A link that will be used as the \"Next\" button\\'s \"href\" attribute.\n * If provided, the \"Next\" button renders as a link button; otherwise, it is rendered as a regular button.\n */\n nextButtonLink: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Whether or not both buttons should be disabled (regardless of the \"hasPreviousPage\" and \"hasNextPage\" values).\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n computed: {\n isVisible() {\n return this.hasPreviousPage || this.hasNextPage;\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 (_vm.isVisible)?_c('nav',{staticClass:\"gl-pagination\",attrs:{\"aria-label\":_vm.navigationLabel}},[_c('gl-button-group',_vm._g(_vm._b({staticClass:\"gl-keyset-pagination\"},'gl-button-group',_vm.$attrs,false),_vm.$listeners),[_c('gl-button',{attrs:{\"href\":_vm.prevButtonLink,\"disabled\":_vm.disabled || !_vm.hasPreviousPage,\"data-testid\":\"prevButton\",\"category\":\"tertiary\"},on:{\"click\":function($event){return _vm.$emit('prev', _vm.startCursor)}}},[_vm._t(\"previous-button-content\",function(){return [_c('div',{staticClass:\"gl-align-center gl-flex\"},[_c('gl-icon',{attrs:{\"name\":\"chevron-left\"}}),_vm._v(\"\\n \"+_vm._s(_vm.prevText)+\"\\n \")],1)]})],2),_vm._v(\" \"),_c('gl-button',{attrs:{\"href\":_vm.nextButtonLink,\"disabled\":_vm.disabled || !_vm.hasNextPage,\"data-testid\":\"nextButton\",\"category\":\"tertiary\"},on:{\"click\":function($event){return _vm.$emit('next', _vm.endCursor)}}},[_vm._t(\"next-button-content\",function(){return [_c('div',{staticClass:\"gl-align-center gl-flex\"},[_vm._v(\"\\n \"+_vm._s(_vm.nextText)+\"\\n \"),_c('gl-icon',{attrs:{\"name\":\"chevron-right\"}})],1)]})],2)],1)],1):_vm._e()};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","import axios from '~/lib/utils/axios_utils';\nimport { buildApiUrl } from '~/api/api_utils';\n\nconst PROJECT_RESTORE_PATH = '/api/:version/projects/:id/restore';\n\nexport function restoreProject(projectId) {\n const url = buildApiUrl(PROJECT_RESTORE_PATH).replace(':id', projectId);\n\n return axios.post(url);\n}\n","import { GlToast } from '@gitlab/ui';\nimport Vue from 'vue';\n\nVue.use(GlToast);\nconst instance = new Vue();\n\nexport default function showGlobalToast(...args) {\n return instance.$toast.show(...args);\n}\n","import { __ } from '~/locale';\n\nexport const ACTION_EDIT = 'edit';\nexport const ACTION_RESTORE = 'restore';\nexport const ACTION_DELETE = 'delete';\n\nexport const BASE_ACTIONS = {\n [ACTION_EDIT]: {\n text: __('Edit'),\n order: 1,\n },\n [ACTION_RESTORE]: {\n text: __('Restore'),\n order: 2,\n },\n [ACTION_DELETE]: {\n text: __('Delete'),\n extraAttrs: {\n class: '!gl-text-red-500',\n },\n order: 3,\n },\n};\n"],"sourceRoot":""}